|
|
@@ -145,57 +145,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
<!-- 首页按摩推荐商户点击全部查询按摩所有商户-->
|
|
|
<select id="getMassageAllMerchants" resultType="com.ylx.massage.domain.vo.MassageAllMerchantsVo">
|
|
|
SELECT
|
|
|
- p.project_id AS projectId,
|
|
|
- p.project_name AS projectName,
|
|
|
- t.te_name AS merchantName,
|
|
|
- t.id AS merchantId,
|
|
|
- COALESCE(stat.order_count, 0) AS nNum,
|
|
|
- CASE
|
|
|
- WHEN #{dto.longitude} IS NOT NULL AND #{dto.latitude} IS NOT NULL
|
|
|
- THEN ROUND(
|
|
|
- ST_Distance_Sphere(
|
|
|
- POINT(addr.longitude, addr.latitude),
|
|
|
- POINT(#{dto.longitude}, #{dto.latitude})
|
|
|
- ), 0 -- 直接返回米,保留整数
|
|
|
- )
|
|
|
- ELSE NULL
|
|
|
- END AS distance,
|
|
|
- t.te_avatar AS teAvatar
|
|
|
+ projectId,
|
|
|
+ projectName,
|
|
|
+ merchantName,
|
|
|
+ merchantId,
|
|
|
+ nNum,
|
|
|
+ CASE
|
|
|
+ WHEN distance_meters IS NOT NULL AND distance_meters >= 1000 THEN
|
|
|
+ CONCAT(ROUND(distance_meters / 1000.0, 1), 'km')
|
|
|
+ WHEN distance_meters IS NOT NULL THEN
|
|
|
+ CONCAT(distance_meters, 'm')
|
|
|
+ ELSE NULL
|
|
|
+ END AS distanceShow,
|
|
|
+ teAvatar
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ p.project_id AS projectId,
|
|
|
+ p.project_name AS projectName,
|
|
|
+ t.te_name AS merchantName,
|
|
|
+ t.id AS merchantId,
|
|
|
+ COALESCE(stat.order_count, 0) AS nNum,
|
|
|
+ CASE
|
|
|
+ WHEN #{dto.longitude} IS NOT NULL AND #{dto.latitude} IS NOT NULL
|
|
|
+ THEN ROUND(
|
|
|
+ ST_Distance_Sphere(
|
|
|
+ POINT(addr.longitude, addr.latitude),
|
|
|
+ POINT(#{dto.longitude}, #{dto.latitude})
|
|
|
+ ), 0
|
|
|
+ )
|
|
|
+ ELSE NULL
|
|
|
+ END AS distance_meters,
|
|
|
+ t.te_avatar AS teAvatar
|
|
|
FROM ma_project p
|
|
|
INNER JOIN ma_technician t ON p.merchant_id = CAST(t.id AS CHAR)
|
|
|
LEFT JOIN (
|
|
|
- SELECT
|
|
|
- merchant_id,
|
|
|
- longitude,
|
|
|
- latitude
|
|
|
- FROM t_address
|
|
|
- WHERE user_type = 2
|
|
|
- AND type = 1
|
|
|
- AND is_delete = 0
|
|
|
+ SELECT
|
|
|
+ merchant_id,
|
|
|
+ longitude,
|
|
|
+ latitude
|
|
|
+ FROM t_address
|
|
|
+ WHERE user_type = 2
|
|
|
+ AND type = 1
|
|
|
+ AND is_delete = 0
|
|
|
) addr ON t.id = addr.merchant_id
|
|
|
LEFT JOIN (
|
|
|
- SELECT
|
|
|
- merchant_id,
|
|
|
- COUNT(*) AS order_count
|
|
|
- FROM t_order
|
|
|
- WHERE status = 6
|
|
|
- AND project_type = 1
|
|
|
- AND is_delete = 0
|
|
|
- GROUP BY merchant_id
|
|
|
+ SELECT
|
|
|
+ merchant_id,
|
|
|
+ COUNT(*) AS order_count
|
|
|
+ FROM t_order
|
|
|
+ WHERE status = 6
|
|
|
+ AND project_type = 1
|
|
|
+ AND is_delete = 0
|
|
|
+ GROUP BY merchant_id
|
|
|
) stat ON stat.merchant_id = t.id
|
|
|
WHERE p.audit_status = 1
|
|
|
- AND p.is_delete = 0
|
|
|
- AND p.merchant_type = 1
|
|
|
- AND p.project_is_enable = 0
|
|
|
- AND t.audit_status = 2
|
|
|
- AND t.is_delete = 0
|
|
|
- AND t.service_state = 1
|
|
|
- AND t.te_area_code = #{dto.cityCode} -- 使用技师的区域编码过滤
|
|
|
- AND addr.merchant_id IS NOT NULL -- 必须有默认地址(用于距离计算)
|
|
|
- <if test="dto.projectId != null and dto.projectId != ''">
|
|
|
+ AND p.is_delete = 0
|
|
|
+ AND p.merchant_type = 1
|
|
|
+ AND p.project_is_enable = 0
|
|
|
+ AND t.audit_status = 2
|
|
|
+ AND t.is_delete = 0
|
|
|
+ AND t.service_state = 1
|
|
|
+ AND t.te_area_code = #{dto.cityCode}
|
|
|
+ AND addr.merchant_id IS NOT NULL
|
|
|
+ <if test="dto.projectId != null and dto.projectId != ''">
|
|
|
AND p.project_id = #{dto.projectId}
|
|
|
- </if>
|
|
|
- ORDER BY stat.order_count DESC
|
|
|
+ </if>
|
|
|
+ ) AS sub
|
|
|
+ ORDER BY nNum DESC;
|
|
|
</select>
|
|
|
<select id="selectMerchantList" resultType="com.ylx.project.domain.bookMerchant.vo.BookMerchantVO">
|
|
|
SELECT
|