Просмотр исходного кода

新APPbug多等级用户bug修改

xuqiang 1 год назад
Родитель
Сommit
5407c22be2

+ 6 - 2
src/main/java/com/ydtech/modules/partner/dao/PartnerUserMapper.java

@@ -22,7 +22,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @MapKey("userId")
     List<Map<String, String>> selectRecommender(@Param("level") String level);
 
-    List<RelationalVo> selectByUserId(String id);
+    List<RelationalVo> selectByUserId(@Param("id")String id,@Param("grade")Integer grade);
 
     TodayOverview selectTodayOverview(@Param("params") AppHomeParams params);
 
@@ -64,9 +64,13 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     Integer userCountIdsVo(@Param("ids") List<String> ids,@Param("params")  AppHomeParams params);
 
-    @Select(" SELECT user_id FROM partner_user WHERE referrer_id = #{userId} ")
+    @Select(" SELECT DISTINCT user_id FROM partner_user WHERE referrer_id = #{userId} ")
     List<String> selectByLevelUserId(String userId);
 
     @Select(" SELECT COUNT(1) FROM partner_user WHERE referrer_id = #{userId} AND grade = #{grade} ")
     Integer userCountLevel(String userId, int grade);
+
+    List<RelationalVo> selectByReferrerId(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    List<RelationalVo> selectQuerySuperiors(@Param("userId") String userId,@Param("grade") Integer grade);
 }

+ 14 - 4
src/main/java/com/ydtech/modules/partner/model/vo/RelationalVo.java

@@ -21,15 +21,25 @@ public class RelationalVo {
     @ApiModelProperty(value = "推荐人ID")
     private String referrerId;
 
+
+    @ApiModelProperty(value = "推荐人ID")
+    private String type;
+
+    @ApiModelProperty(value = "推荐人ID")
+    private String suggestName;
+
+    @ApiModelProperty(value = "推荐人ID")
+    private String deptName;
+
+    @ApiModelProperty(value = "推荐人ID")
+    private String agencyName;
+
+
     /**
      * 创建时间
      */
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
-    /**
-     * 邀请人信息
-     */
-    private RelationalVo relationalVo;
 
 }

+ 35 - 15
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -75,27 +75,38 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     @Override
     public List<RelationalVo>  relationalQuery(String id) {
         List<RelationalVo> list = new ArrayList<>();
-        List<RelationalVo> partnerUsers = baseMapper.selectByUserId(id);
+
+        Integer grade = baseMapper.selectGradeIntMin(id);
+        List<RelationalVo> partnerUsers = baseMapper.selectByUserId(id,grade);
+        if (1 < grade){
+            querySuperiors(list, grade,partnerUsers);
+        }
         list.addAll(partnerUsers);
-        querySuperiors(list,partnerUsers.get(0).getReferrerId());
-        //querySubordinates(list,partnerUser);
-        List<RelationalVo> partnerUserVos = BeanUtil.copyToList(list, RelationalVo.class);
-        return partnerUserVos;
+        querySubordinates(partnerUsers, grade,list);
+        return list;
     }
 
+    public void querySuperiors(List<RelationalVo> list,Integer grade,List<RelationalVo> partnerUsers){
+        if (CollectionUtil.isEmpty(partnerUsers)){
+            return;
+        }
+        String userId = partnerUsers.get(0).getUserId();
+        grade --;
+        List<RelationalVo> relationalVos = baseMapper.selectQuerySuperiors(userId,grade);
+        list.addAll(relationalVos);
+        querySuperiors( list, grade, relationalVos);
+    }
 
 
-    public void querySuperiors(List<RelationalVo> list,  String id){
-        while (StringUtils.isNotBlank(id)) {
-            List<RelationalVo> relationalVos = baseMapper.selectByUserId(id);
-            if (CollectionUtil.isNotEmpty(relationalVos)){
-                list.addAll(relationalVos);
-                querySuperiors( list,relationalVos.get(0).getReferrerId());
-            }else {
-                break;
-            }
-
+    public void querySubordinates(List<RelationalVo> partnerUsers,Integer grade,List<RelationalVo> list){
+        if (CollectionUtil.isEmpty(partnerUsers)){
+            return;
         }
+        String userId = partnerUsers.get(0).getUserId();
+        grade ++;
+        List<RelationalVo> relationalVos = baseMapper.selectByReferrerId(userId,grade);
+        list.addAll(relationalVos);
+        querySubordinates(relationalVos, grade,list);
     }
 
 
@@ -242,6 +253,10 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     public void getLevelUserId(String userId,Set<String> list){
         List<String> level = baseMapper.selectByLevelUserId(userId);
+        boolean b = containsOnlyId(level, userId);
+        if (CollectionUtil.isNotEmpty(level) && b){
+            return;
+        }
         if (CollectionUtil.isNotEmpty(level)){
             list.addAll(level);
             for (String s : level) {
@@ -250,6 +265,11 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         }
     }
 
+    public static boolean containsOnlyId(List<String> list, String targetId) {
+        return list != null
+                && !list.isEmpty()
+                && list.stream().allMatch(targetId::equals);
+    }
 
 
     @Override

+ 51 - 6
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -70,14 +70,21 @@
 
     <select id="selectByUserId" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
         SELECT
-            u1.grade,u1.grade_name,u1.user_id,u1.create_time,
-            u2.referrer_id,u2.mobile,u2.name,
-            CONCAT(u2.NAME, '(', u1.grade, ')') AS userName
+            id,
+            NAME AS userName,
+            mobile,
+            user_id,
+            dept_id,
+            (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS deptName,
+            (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
+            grade AS type,
+            referrer_id,
+            create_time
         FROM
-            partner_user_grade u1
-                LEFT JOIN partner_user u2 ON u2.user_id = u1.user_id
+            partner_user
         WHERE
-            u1.user_id = #{id}
+            user_id = #{id}
+          AND grade = ${grade}
     </select>
 
 
@@ -691,5 +698,43 @@ select grade,grade_name from  partner_rule
     </select>
 
 
+    <select id="selectByReferrerId" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
+        SELECT
+            id,
+            NAME AS userName,
+            mobile,
+            user_id,
+            dept_id,
+            (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS deptName,
+            (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
+            grade AS type,
+            referrer_id,
+            create_time
+        FROM
+            partner_user
+        WHERE
+            referrer_id = #{userId}
+          AND grade = ${grade}
+    </select>
+
+    <select id="selectQuerySuperiors" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
+        SELECT
+            id,
+            NAME AS userName,
+            mobile,
+            user_id,
+            dept_id,
+            (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS deptName,
+            (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
+            grade AS type,
+            referrer_id,
+            create_time
+        FROM
+            partner_user
+        WHERE
+            user_id = #{userId}
+          AND grade = ${grade}
+    </select>
+
 
 </mapper>