|
|
@@ -75,52 +75,45 @@
|
|
|
p.c_title AS title,
|
|
|
p.project_type AS productType,
|
|
|
p.d_price AS price,
|
|
|
-
|
|
|
'广誉源' AS merchantName,
|
|
|
CAST(FLOOR(100000 + RAND() * 900000) AS UNSIGNED) AS merchantId,
|
|
|
-
|
|
|
-
|
|
|
CASE
|
|
|
-
|
|
|
WHEN #{dto.areaCode} IS NOT NULL THEN (SELECT name FROM area WHERE code = #{dto.areaCode})
|
|
|
-
|
|
|
-
|
|
|
- ELSE (
|
|
|
- SELECT GROUP_CONCAT(DISTINCT a.name SEPARATOR ',')
|
|
|
- FROM t_js j_inner
|
|
|
- JOIN area a ON FIND_IN_SET(a.code, j_inner.service_area_codes) > 0
|
|
|
- WHERE j_inner.is_delete = 0
|
|
|
- AND j_inner.n_tong = 1
|
|
|
- AND CONCAT(',', j_inner.c_bh_list, ',') LIKE CONCAT('%,', p.c_id, ',%')
|
|
|
- )
|
|
|
+ ELSE agg.area_names
|
|
|
END AS serviceAreaName,
|
|
|
-
|
|
|
- #{dto.areaCode} AS serviceAreaCode
|
|
|
-
|
|
|
- FROM
|
|
|
- t_xiangmu p
|
|
|
-
|
|
|
+ CASE
|
|
|
+ WHEN #{dto.areaCode} IS NOT NULL THEN #{dto.areaCode}
|
|
|
+ ELSE agg.area_codes
|
|
|
+ END AS serviceAreaCode
|
|
|
+ FROM t_xiangmu p
|
|
|
+ INNER JOIN (
|
|
|
+ SELECT
|
|
|
+ j_inner.c_bh_list,
|
|
|
+ GROUP_CONCAT(DISTINCT a.code SEPARATOR ',') AS area_codes, -- code拼接
|
|
|
+ GROUP_CONCAT(DISTINCT a.name SEPARATOR ',') AS area_names -- 名称拼接
|
|
|
+ FROM t_js j_inner
|
|
|
+ JOIN area a ON FIND_IN_SET(a.code, j_inner.service_area_codes)
|
|
|
+ WHERE j_inner.is_delete = 0
|
|
|
+ AND j_inner.n_tong = 1
|
|
|
+ GROUP BY j_inner.c_bh_list
|
|
|
+ ) agg ON FIND_IN_SET(p.c_id, agg.c_bh_list)
|
|
|
WHERE
|
|
|
p.is_delete = 0
|
|
|
- AND p.project_type = '1'
|
|
|
-
|
|
|
+ <if test="dto.productType != null">
|
|
|
+ AND p.project_type = #{dto.productType}
|
|
|
+ </if>
|
|
|
AND EXISTS (
|
|
|
SELECT 1
|
|
|
FROM t_js j
|
|
|
WHERE j.is_delete = 0
|
|
|
AND j.n_tong = 1
|
|
|
- AND (
|
|
|
- FIND_IN_SET(#{dto.areaCode}, j.service_area_codes) > 0
|
|
|
- OR
|
|
|
- #{dto.areaCode} IS NULL
|
|
|
- )
|
|
|
- AND CONCAT(',', j.c_bh_list, ',') LIKE CONCAT('%,', p.c_id, ',%')
|
|
|
+ AND (#{dto.areaCode} IS NULL OR FIND_IN_SET(#{dto.areaCode}, j.service_area_codes))
|
|
|
+ AND FIND_IN_SET(p.c_id, j.c_bh_list)
|
|
|
)
|
|
|
-
|
|
|
GROUP BY
|
|
|
- p.c_id
|
|
|
+ p.c_id, p.c_title, p.project_type, p.d_price, #{dto.areaCode}, agg.area_codes, agg.area_names
|
|
|
ORDER BY
|
|
|
- MAX(p.create_time) DESC
|
|
|
+ p.create_time DESC
|
|
|
</select>
|
|
|
|
|
|
</mapper>
|