feiyu02
2026-01-21 fe031e01cc1737c2f05a133fde7c36c7a2a7b4b4
src/main/resources/mapper/UserSettingMapper.xml
@@ -47,4 +47,61 @@
    -->
    sp_promise_content
  </sql>
  <!-- 行政区划最匹配查询条件 -->
  <select id="selectBestConfig" resultMap="ResultMapWithBLOBs">
    select
    <include refid="Base_Column_List" />, <include refid="Blob_Column_List" />
    FROM sm_t_setting
    <where>
      <if test="userTypeId != null">
        AND User_Type_Id = #{userTypeId}
      </if>
      <if test="sceneTypeId != null">
        AND (scene_type_id = #{sceneTypeId} OR scene_type_id IS NULL)
      </if>
      <if test="provinceName != null">
        AND (Province_Name = #{provinceName} OR Province_Name IS NULL)
      </if>
      <if test="cityName != null">
        AND (City_Name = #{cityName} OR City_Name IS NULL)
      </if>
      <if test="districtName != null">
        AND (District_Name = #{districtName} OR District_Name IS NULL)
      </if>
      <if test="townName != null">
        AND (Town_Name = #{townName} OR Town_Name IS NULL)
      </if>
      <if test="area != null">
        AND (Area = #{area} OR Area IS NULL)
      </if>
      <if test="managementCompany != null">
        AND (Management_Company = #{managementCompany} OR Management_Company IS NULL)
      </if>
    </where>
    ORDER BY
      CASE
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name = #{districtName} AND Town_Name = #{townName} THEN 1
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name = #{districtName} AND Town_Name IS NULL THEN 2
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name IS NULL AND Town_Name IS NULL THEN 3
        WHEN Province_Name = #{provinceName} AND City_Name IS NULL
          AND District_Name IS NULL AND Town_Name IS NULL THEN 4
      END,
      CASE
        WHEN Area = #{area} THEN 1
        WHEN Area IS NULL THEN 2
      END,
      CASE
        WHEN Management_Company = #{managementCompany} THEN 1
        WHEN Management_Company IS NULL THEN 2
      END,
      CASE
        WHEN scene_type_id = #{sceneTypeId} THEN 1
        WHEN scene_type_id IS NULL THEN 2
      END
    LIMIT 1;
  </select>
</mapper>