فهرست منبع

首页推荐项目接口优化

郭子栋 6 روز پیش
والد
کامیت
0bcbef8eed
1فایلهای تغییر یافته به همراه29 افزوده شده و 29 حذف شده
  1. 29 29
      nightFragrance-massage/src/main/resources/mapper/massage/MaProjectMapper.xml

+ 29 - 29
nightFragrance-massage/src/main/resources/mapper/massage/MaProjectMapper.xml

@@ -120,20 +120,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
     <!-- 推荐项目-->
     <select id="getMassageProjectRecommend" resultType="com.ylx.massage.domain.vo.MassageProjectRecommendVo">
+        WITH distinct_project AS (
+            SELECT
+                project_id,
+                MIN(project_name)   AS project_name,      -- 去重,取任意一个名称
+                MIN(project_duration) AS project_duration -- 去重,取任意一个工期
+            FROM ma_project
+            WHERE is_delete = 0
+              AND audit_status = 1
+            GROUP BY project_id
+        )
         SELECT
-            p.project_name AS projectName,
-            p.project_duration AS projectDuration,
-            t.avg_current_price AS avgCurrentPrice,
-            j.highlight AS highlight,
-            o.sales AS sales
-        FROM (
-                 SELECT MIN(id) AS id
-                 FROM ma_project
-                 WHERE is_delete = 0 AND audit_status = 1
-                 GROUP BY project_id
-             ) AS keep
-                 INNER JOIN ma_project p ON keep.id = p.id
-                 LEFT JOIN project j ON p.project_id = j.id
+            d.project_id                AS projectId,
+            d.project_name              AS projectName,
+            d.project_duration          AS projectDuration,
+            o.sales                     AS sales,
+            t.avg_current_price         AS avgCurrentPrice,
+            j.highlight                 AS highlight
+        FROM distinct_project d
+                 LEFT JOIN project j ON d.project_id = j.id
                  LEFT JOIN (
             SELECT
                 t.project_id,
@@ -141,21 +146,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             FROM ma_project t
             WHERE t.is_delete = 0
             GROUP BY t.project_id
-        ) t ON p.project_id = t.project_id
-        LEFT JOIN
-             (
-                 SELECT
-                     o.project_id AS project_id,
-                     COUNT(*) AS sales
-                 FROM
-                     t_order o
-                 WHERE o.is_delete = 0
-                   AND o.n_status = 7
-                   AND o.project_type = 1
-                 GROUP BY o.project_id
-             ) o
-             ON p.project_id = o.project_id
-        WHERE p.is_delete = 0
-        and p.audit_status = 1
+        ) t ON d.project_id = t.project_id
+                 LEFT JOIN (
+            SELECT
+                o.project_id,
+                COUNT(*) AS sales
+            FROM t_order o
+            WHERE o.is_delete = 0
+              AND o.status = 6
+              AND o.project_type = 1
+            GROUP BY o.project_id
+        ) o ON d.project_id = o.project_id;
     </select>
 </mapper>