Browse Source

CRM系统升级优化bugfix

kaick 1 year ago
parent
commit
bebd80f618
1 changed files with 43 additions and 24 deletions
  1. 43 24
      src/main/resources/mapper/SellerMapper.xml

+ 43 - 24
src/main/resources/mapper/SellerMapper.xml

@@ -155,46 +155,56 @@
         <if test="4 == type">
             c.spID = #{serviceProviderId}
             AND sp.status = 90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
-            AND (u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) OR c.clubId= (select aa.clubId
-            FROM ((select
-            c.clubId
+            AND (u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) OR c.clubId= (select a.clubId
+            FROM ((
+            select
+            c.clubId,ccr.addTime AS time,c.spID
             FROM club c
+            LEFT JOIN user u ON u.userID = c.userID
             LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
             LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
             where c.status=90 and sp.status=90
             and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+            GROUP BY c.clubId
             )UNION(
-            select c.clubId
+            select c.clubId,cr.orderTime AS time,c.spID
             FROM club c
+            LEFT JOIN user u ON u.userID = c.userID
             LEFT JOIN cm_order cr ON cr.clubId = c.clubId
             LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
             where c.status=90 and sp.status=90
             and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            )) aa
-            where aa.clubId=c.clubId
-            GROUP BY aa.clubId LIMIT 0,1))
+            GROUP BY c.clubId
+            )) a where a.time is not null
+            and  a.spID=#{serviceProviderId}
+            GROUP BY a.clubId))
         </if>
         <if test="5 == type">
             c.spID = #{serviceProviderId}
             AND sp.status = 90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
-            AND (u.loginTime <![CDATA[ < ]]> DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) OR c.clubId!= (select aa.clubId
-            FROM ((select
-            c.clubId
+            AND (u.loginTime <![CDATA[ < ]]> DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) or u.loginTime is null)and c.clubId not in (select a.clubId
+            FROM ((
+            select
+            c.clubId,ccr.addTime AS time,c.spID
             FROM club c
+            LEFT JOIN user u ON u.userID = c.userID
             LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
             LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
             where c.status=90 and sp.status=90
             and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+            GROUP BY c.clubId
             )UNION(
-            select c.clubId
+            select c.clubId,cr.orderTime AS time,c.spID
             FROM club c
+            LEFT JOIN user u ON u.userID = c.userID
             LEFT JOIN cm_order cr ON cr.clubId = c.clubId
             LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
             where c.status=90 and sp.status=90
             and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            )) aa
-            where aa.clubId=c.clubId
-            GROUP BY aa.clubId LIMIT 0,1))
+            GROUP BY c.clubId
+            )) a where a.time is not null
+            and  a.spID=#{serviceProviderId}
+            GROUP BY a.clubId )
         </if>
         <if test="6 == type">
             c.spID = #{serviceProviderId}
@@ -219,35 +229,44 @@
 
     <select id="findSpUserLoginSum" resultType="java.util.HashMap" parameterType="string">
         select
-        ifnull(COUNT(   CASE WHEN a.time >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) THEN 1 END),0) AS loginSum,
-        ifnull(COUNT(  CASE WHEN a.time <![CDATA[ < ]]> DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) THEN 1 END),0) AS not_loginSum
+        COUNT(  CASE WHEN a.time=1 THEN 1 END) AS loginSum,
+        ((SELECT count(1) from club
+        WHERE  status=90
+        <if test="spID != null">
+            and  spID=#{spID}
+        </if>
+        )-COUNT(  CASE WHEN a.time=1 THEN 1 END)) AS not_loginSum
         FROM (select a.*
-        FROM (
-        (select
-        c.clubId,u.loginTime AS time,c.spID
+        FROM ((
+        select
+        c.clubId,1 AS time,c.spID
         FROM club c
         LEFT JOIN user u ON u.userID = c.userID
         LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-        where c.status=90 and  sp.status=90  and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+        where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+        and u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+        GROUP BY c.clubId
         )UNION(
         select
-        c.clubId,ccr.addTime AS time,c.spID
+        c.clubId,1 AS time,c.spID
         FROM club c
         LEFT JOIN user u ON u.userID = c.userID
         LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
         LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-        where c.status=90 and sp.status=90  and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+        where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
         and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+        GROUP BY c.clubId
         )UNION(
-        select c.clubId,cr.orderTime AS time,c.spID
+        select c.clubId,1 AS time,c.spID
         FROM club c
         LEFT JOIN user u ON u.userID = c.userID
         LEFT JOIN cm_order cr ON cr.clubId = c.clubId
         LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
         where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
         and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+        GROUP BY c.clubId
         )
-        ) a where a.time is not null
+        ) a where  1=1
         <if test="spID != null">
             and  a.spID=#{spID}
         </if>