|
|
@@ -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})
|
|
|
+ ) < 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">
|