Bläddra i källkod

同城搭子分页查询接口返回距离处理为字符串

wangzhijun 1 dag sedan
förälder
incheckning
3f1c30d5f2

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/MaTechnicianServiceImpl.java

@@ -1903,7 +1903,7 @@ public class MaTechnicianServiceImpl extends ServiceImpl<MaTechnicianMapper, MaT
             Iterator<MerchantListVO> iterator = records.iterator();
             while (iterator.hasNext()) {
                 MerchantListVO vo = iterator.next();
-                double currentDistance = vo.getDistance(); // 数据库算出的距离(km)
+                double currentDistance = vo.getCurrentDistance(); // 数据库算出的距离(km)
 
                 // 获取该商户的有效免费里程
                 BigDecimal freeKm = this.maProjectFareSettingService.getMerchantFreeKm(Long.parseLong(vo.getId()), vo.getProjectId(), isDay);

+ 5 - 1
nightFragrance-massage/src/main/java/com/ylx/merchant/domain/vo/MerchantListVO.java

@@ -29,8 +29,12 @@ public class MerchantListVO implements Serializable {
     @ApiModelProperty("价格")
     private BigDecimal price;
 
+    @JsonIgnore
+    @ApiModelProperty("距离")
+    private Double currentDistance;
+
     @ApiModelProperty("距离")
-    private Double distance;
+    private String distance;
 
     @ApiModelProperty("评分")
     private Double score;

+ 15 - 3
nightFragrance-massage/src/main/resources/mapper/massage/MaTechnicianMapper.xml

@@ -583,8 +583,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ST_Distance_Sphere(
             POINT(ANY_VALUE(ta.longitude), ANY_VALUE(ta.latitude)),
             POINT(#{dto.longitude}, #{dto.latitude})
-            ) / 1000 AS distance,
-
+            ) AS currentDistance,
+            CASE
+            WHEN ST_Distance_Sphere(
+            POINT(ANY_VALUE(ta.longitude), ANY_VALUE(ta.latitude)),
+            POINT(#{dto.longitude}, #{dto.latitude})
+            ) &lt; 1000 THEN CONCAT(ROUND(ST_Distance_Sphere(
+            POINT(ANY_VALUE(ta.longitude), ANY_VALUE(ta.latitude)),
+            POINT(#{dto.longitude}, #{dto.latitude})
+            )), 'm')
+            ELSE CONCAT(FORMAT(ST_Distance_Sphere(
+            POINT(ANY_VALUE(ta.longitude), ANY_VALUE(ta.latitude)),
+            POINT(#{dto.longitude}, #{dto.latitude})
+            ) / 1000, 2), 'km')
+            END AS distance,
             <!-- 2. 评分处理:如果为null或0,默认为5.0 -->
             GREATEST(IFNULL(t.n_star, 0), 4.5) AS score
 
@@ -633,7 +645,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         GROUP BY t.id
         <!-- 排序逻辑 -->
-        ORDER BY distance ASC
+        ORDER BY currentDistance ASC
     </select>
 
     <select id="getByMerchantProject" resultType="com.ylx.project.domain.bookMerchant.vo.ProjectInfoVO">