Selaa lähdekoodia

红德堂-V1.2 会员数查询优化

Long 1 viikko sitten
vanhempi
commit
394d0f03d1
1 muutettua tiedostoa jossa 21 lisäystä ja 20 poistoa
  1. 21 20
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml

+ 21 - 20
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -888,34 +888,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getUserNumber" resultType="com.fs.store.vo.h5.UserListCountVO">
         SELECT
             t.status,
-            COUNT(*) AS num
+            COUNT(DISTINCT CONCAT(t.user_id, '_', t.project_id)) AS num
         FROM (
             SELECT
+                fcu.user_id,
+                fcu.project_id,
                 fcu.status
-            FROM fs_user fu
-            INNER JOIN fs_user_company_user fcu ON fcu.user_id = fu.user_id
-            WHERE fu.is_del = 0
+            FROM fs_user_company_user fcu
+            INNER JOIN fs_user fu ON fu.user_id = fcu.user_id AND fu.is_del = 0
+            <where>
+                <if test="companyId != null">
+                    AND fcu.company_id = #{companyId}
+                </if>
+                <if test="userId != null and userId != 0">
+                    AND fcu.company_user_id = #{userId}
+                </if>
+            </where>
             <if test="userId != null and userId != 0">
-                AND fcu.company_user_id = #{userId}
-            </if>
-            <if test="companyId != null ">
-                and fcu.company_id = #{companyId}
-            </if>
-            GROUP BY fu.user_id, fcu.project_id, fcu.create_time
-
-            <if test="userId != null and userId != 0 ">
             UNION ALL
             SELECT
+                fcu.user_id,
+                fcu.project_id,
                 fcu.status
-            FROM fs_user fu
-            INNER JOIN fs_user_company_user fcu ON fcu.user_id = fu.user_id
-            INNER JOIN company_user cu ON cu.user_id = fcu.company_user_id
-            WHERE fu.is_del = 0
-            AND cu.parent_id = #{userId}
-            <if test="companyId != null ">
-                and fcu.company_id = #{companyId}
+            FROM company_user cu
+            INNER JOIN fs_user_company_user fcu ON fcu.company_user_id = cu.user_id
+            INNER JOIN fs_user fu ON fu.user_id = fcu.user_id AND fu.is_del = 0
+            WHERE cu.parent_id = #{userId}
+            <if test="companyId != null">
+                AND fcu.company_id = #{companyId}
             </if>
-            GROUP BY fu.user_id, fcu.project_id, fcu.create_time
             </if>
         ) t
         GROUP BY t.status