1
0

2 Коммиты 24a8a4d95b ... cec24be1ca

Автор SHA1 Сообщение Дата
  郭子栋 cec24be1ca Merge remote-tracking branch 'origin/dev' into dev 5 дней назад
  郭子栋 53d738ab06 首页按摩商户推荐列表距离展示优化 5 дней назад

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/MerchantVo.java

@@ -42,7 +42,7 @@ public class MerchantVo implements Serializable {
     private Integer nNum;
 
     @ApiModelProperty("技师距离(公里)")
-    private BigDecimal distance ;
+    private BigDecimal distanceShow;
 
     /**
      * 商户开通技能时设置的最低价格

+ 27 - 16
nightFragrance-massage/src/main/resources/mapper/massage/MaTechnicianMapper.xml

@@ -471,33 +471,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             COALESCE(o.sales, 0) AS nNum,
             COALESCE(p.min_price, 0) AS price,
             t.avatar AS avatar,
-            -- 返回米(四舍五入保留0位小数,也可不ROUND)
-            ROUND(ST_Distance_Sphere(POINT(a.longitude, a.latitude), POINT(#{dto.longitude}, #{dto.latitude})), 0) AS distance
-        FROM ma_technician t
-        LEFT JOIN (
+            CASE
+                WHEN t.dist_meters IS NULL THEN NULL
+                WHEN t.dist_meters < 1000 THEN CONCAT(ROUND(t.dist_meters, 0), '米')
+                ELSE CONCAT(ROUND(t.dist_meters / 1000, 1), '公里')
+                END AS distanceShow
+        FROM (
+                 SELECT
+                     t.id,
+                     t.te_name,
+                     t.n_star,
+                     t.avatar,
+                     ROUND(ST_Distance_Sphere(POINT(a.longitude, a.latitude), POINT(#{dto.longitude}, #{dto.latitude})), 0) AS dist_meters
+                 FROM ma_technician t
+                          LEFT JOIN (
+                     SELECT merchant_id, longitude, latitude
+                     FROM t_address
+                     WHERE user_type = 2 AND type = 1 AND is_delete = 0
+                 ) a ON t.id = a.merchant_id
+                 WHERE t.is_delete = 0
+                   AND t.audit_status = 2
+                   AND t.n_status2 = 0
+                   AND t.merchant_status = 0
+                   AND t.te_area_code = #{dto.cityCode}
+             ) t
+                 LEFT JOIN (
             SELECT merchant_id, COUNT(*) AS sales
             FROM t_order
             WHERE is_delete = 0 AND status = 6 AND project_type = 1
             GROUP BY merchant_id
         ) o ON t.id = o.merchant_id
-        LEFT JOIN (
+                 LEFT JOIN (
             SELECT merchant_id, MIN(project_current_price) AS min_price
             FROM ma_project
             WHERE is_delete = 0 AND audit_status = 1 AND merchant_type = 1 AND project_is_enable = 1
             GROUP BY merchant_id
         ) p ON t.id = p.merchant_id
-        LEFT JOIN (
-            SELECT merchant_id, longitude, latitude
-            FROM t_address
-            WHERE user_type = 2 AND type = 1 AND is_delete = 0
-        ) a ON t.id = a.merchant_id
-        WHERE t.is_delete = 0
-          AND t.audit_status = 2
-          AND t.n_status2 = 0
-          AND t.merchant_status = 0   -- 注意 merchant_status 是字符串类型
-          AND t.te_area_code = #{dto.cityCode}   -- 新增城市过滤
         ORDER BY COALESCE(o.sales, 0) DESC
-        LIMIT 5
+            LIMIT 5
     </select>