Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

lixiaolong 1 hafta önce
ebeveyn
işleme
0f35c5da68

+ 1 - 8
partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java

@@ -94,15 +94,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     @Override
     public List<RelationalVo> relationalQuery(String id) {
         SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(id);
-        List<RelationalVo> list = new ArrayList<>();
         Integer grade = baseMapper.selectGradeMin(sysUserJzgInfo.getId());
-        List<RelationalVo> partnerUsers = baseMapper.selectByUserId(sysUserJzgInfo.getId(), grade);
-        if (1 < grade) {
-            querySuperiors(list, grade, partnerUsers);
-        }
-        list.addAll(partnerUsers);
-        querySubordinates(partnerUsers, grade, list);
-        return list;
+        return baseMapper.selectByUserId(sysUserJzgInfo.getId(), grade);
     }
 
     public void querySuperiors(List<RelationalVo> list, Integer grade, List<RelationalVo> partnerUsers) {

+ 33 - 20
partner/src/main/resources/mapper/PartnerUserMapper.xml

@@ -144,25 +144,39 @@
     </select>
 
     <select id="selectByUserId" resultType="com.jzg.entity.vo.RelationalVo">
-        SELECT
-        p.id,
-        p.NAME AS userName,
-        p.mobile,
-        p.user_id,
-        p.dept_id,
-        (SELECT `name` FROM sys_dept d WHERE d.id = p.dept_id AND d.is_delete = 0) AS deptName,
-        (SELECT username FROM sys_user u WHERE u.id = p.referrer_id AND u.is_delete = 0) AS suggestName,
-        p.grade AS type,
-        p.referrer_id,
-        p.create_time
-        FROM
-        partner_user p
-        LEFT JOIN sys_user_jzg_info u ON u.user_id = p.user_id AND u.is_delete = 0
-        <where>
-            AND p.is_delete = 0
-            AND p.user_id = #{id}
-            AND p.grade = #{grade}
-        </where>
+        WITH RECURSIVE cte_name AS (
+            SELECT
+            p.id,
+            p.NAME AS userName,
+            p.mobile,
+            p.user_id,
+            p.dept_id,
+            (SELECT `name` FROM sys_dept d WHERE d.id = p.dept_id AND d.is_delete = 0) AS deptName,
+            (SELECT username FROM sys_user u WHERE u.id = p.referrer_id AND u.is_delete = 0) AS suggestName,
+            p.grade AS type,
+            p.referrer_id,
+            p.create_time
+            FROM
+            partner_user p
+            WHERE p.user_id = #{id} AND grade = #{grade}
+            UNION ALL
+            SELECT
+                pu.id,
+                pu.NAME AS userName,
+                pu.mobile,
+                pu.user_id,
+                pu.dept_id,
+                    (SELECT `name` FROM sys_dept d WHERE d.id = pu.dept_id AND d.is_delete = 0) AS deptName,
+                    (SELECT username FROM sys_user u WHERE u.id = pu.referrer_id AND u.is_delete = 0) AS suggestName,
+                pu.grade AS type,
+                pu.referrer_id,
+                pu.create_time
+                    FROM
+                    partner_user pu
+                    INNER JOIN cte_name rt ON pu.referrer_id = rt.user_id
+                    WHERE  pu.grade = (rt.type + 1)
+                    )
+        SELECT * FROM cte_name
     </select>
 
     <select id="selectTodayOverview" resultType="com.jzg.entity.vo.TodayOverview">
@@ -893,7 +907,6 @@
         LEFT JOIN sys_user_jzg_info u ON u.id = p.user_id AND u.is_delete = 0
         <where>
             p.is_delete = 0
-            AND u.`status` = 3
             AND p.user_id = #{userId}
             AND p.grade = #{grade}
         </where>