浏览代码

Merge branch 'dev/2024/0417/update-admin' of Harper/feifan-backend-zx-admin into master

添加营销模块用户关系列表
Yangzw 1 年之前
父节点
当前提交
911b1bbfba

+ 0 - 12
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/DuserController.java

@@ -1,8 +1,5 @@
 package cn.newfeifan.mall.module.distri.controller.admin.duser;
 
-import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.TreeNode;
-import cn.newfeifan.mall.module.member.controller.admin.user.vo.MemberUserRespVO;
-import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -73,15 +70,6 @@ public class DuserController {
         return success(BeanUtils.toBean(duser, DuserRespVO.class));
     }
 
-    @GetMapping("/getDescendants")
-    @Operation(summary = "通过推荐人获得直推人")
-    @Parameter(name = "userId", description = "编号", required = true, example = "1024")
-    @Parameter(name = "depth", description = "层次", required = true, example = "1")
-    @PreAuthorize("@ss.hasPermission('distri:duser:query')")
-    public CommonResult<List<MemberUserRespVO>> getDescendants(@RequestParam("userId") Long userId, Long depth) {
-        List<MemberUserDO> descendants = duserService.getDescendants(userId, depth);
-        return success(BeanUtils.toBean(descendants, MemberUserRespVO.class));
-    }
 
     @GetMapping("/page")
     @Operation(summary = "获得推荐用户分页")

+ 0 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserRespVO.java

@@ -62,7 +62,4 @@ public class DuserRespVO {
     @Schema(description = "后代总数")
     private Long childrenCount;
 
-    @Schema(description = "用户头像")
-    private String avatar;
-
 }

+ 9 - 4
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/SharePathController.java

@@ -11,7 +11,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
 
-import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.servlet.http.*;
 import java.util.*;
@@ -88,6 +87,14 @@ public class SharePathController {
         return success(BeanUtils.toBean(sharePath, SharePathRespVO.class));
     }
 
+    @GetMapping("/getDescendants")
+    @Operation(summary = "通过推荐人获得直推人")
+    @PreAuthorize("@ss.hasPermission('distri:duser:query')")
+    public CommonResult<PageResult<SharePathRespVO>> getDescendants(@Valid SharePathPageReqVO pageReqVO) {
+        PageResult<SharePathRespVO> descendants = sharePathService.getDescendants(pageReqVO);
+        return success(descendants);
+    }
+
     @GetMapping("/page")
     @Operation(summary = "获得分销用户关系分页")
     @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
@@ -122,13 +129,11 @@ public class SharePathController {
     @Operation(summary = "获取分销人员关系树")
     @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
     public CommonResult<TreeNode> getTree(@RequestParam("userId") Long userId,
-                                          @RequestParam("minDepth") Integer minDepth,
+                                          @RequestParam(value = "minDepth",defaultValue = "1") Integer minDepth,
                                           @RequestParam("maxDepth") Integer maxDepth) {
         TreeNode sharePath = sharePathService.getTree(userId,minDepth,maxDepth);
         return success(sharePath);
     }
 
 
-
-
 }

+ 3 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathRespVO.java

@@ -2,9 +2,6 @@ package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 
@@ -61,4 +58,7 @@ public class SharePathRespVO {
     @Schema(description = "直推人昵称", example = "张三")
     @ExcelProperty("直推人昵称")
     private String descNickName;
+
+    @Schema(description = "用户头像")
+    private String avatar;
 }

+ 11 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/sharepath/SharePathMapper.java

@@ -33,6 +33,17 @@ public interface SharePathMapper extends BaseMapperX<SharePathDO> {
                 .likeIfPresent(SharePathDO::getDescNickName, reqVO.getDescNickName())
                 .orderByDesc(SharePathDO::getId));
     }
+    default PageResult<SharePathDO> selectDescendantsPage(SharePathPageReqVO reqVO) {
+        LambdaQueryWrapperX<SharePathDO> queryWrapper = new LambdaQueryWrapperX<SharePathDO>()
+                .eqIfPresent(SharePathDO::getAncestor, reqVO.getAncestor());
+        if(reqVO.getDepth() != null){
+            queryWrapper.eq(SharePathDO::getDepth, 1);
+            queryWrapper.orderByAsc(SharePathDO::getSort);
+        }else {
+            queryWrapper.ne(SharePathDO::getDepth, 1);
+        }
+        return selectPage(reqVO, queryWrapper);
+    }
 
     void addNode(@Param("parentId") Long parentId,
                  @Param("parentName") String parentName,

+ 1 - 2
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserService.java

@@ -6,7 +6,6 @@ import cn.newfeifan.mall.module.distri.controller.admin.duser.vo.*;
 import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.SharePathSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
-import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
 
 /**
  * 推荐用户 Service 接口
@@ -82,5 +81,5 @@ public interface DuserService {
      */
     DuserInfoVO getDuserInfo(Long userId);
 
-    List<MemberUserDO> getDescendants(Long userId, Long depth);
+    DuserDO getDuserByUserId(Long userId);
 }

+ 7 - 20
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java

@@ -21,7 +21,6 @@ import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 import cn.newfeifan.mall.module.distri.controller.admin.duser.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
@@ -158,6 +157,13 @@ public class DuserServiceImpl implements DuserService {
 
     }
 
+    @Override
+    public DuserDO getDuserByUserId(Long userId) {
+        return duserMapper.selectOne(new LambdaQueryWrapper<DuserDO>()
+                .eq(DuserDO::getUserId,userId)
+        );
+    }
+
     private void checkAndCreat(Long userId) {
         DuserDO duserDO = duserMapper.selectOne(new LambdaQueryWrapperX<DuserDO>().eqIfPresent(DuserDO::getUserId, userId));
         MemberUserDO user = memberUserService.getUser(userId);
@@ -206,23 +212,4 @@ public class DuserServiceImpl implements DuserService {
             ));
         }
     }
-
-    @Override
-    public List<MemberUserDO> getDescendants(Long userId, Long depth) {
-        LambdaQueryWrapperX<SharePathDO> wrapper = new LambdaQueryWrapperX<SharePathDO>()
-                .eq(SharePathDO::getAncestor, userId);
-        if(depth != null){
-            wrapper.eq(SharePathDO::getDepth, 1);
-        }else {
-            wrapper.ne(SharePathDO::getDepth, 1);
-        }
-        List<SharePathDO> sharePathDOS = sharePathMapper.selectList(wrapper);
-        List<Long> userIds = sharePathDOS.stream().map(SharePathDO::getDescendant).collect(Collectors.toList());
-
-
-        return memberUserMapper.selectList(new LambdaQueryWrapper<MemberUserDO>()
-                .in(MemberUserDO::getId, userIds)
-        );
-    }
-
 }

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java

@@ -8,7 +8,6 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
-import cn.newfeifan.mall.framework.common.pojo.PageParam;
 
 /**
  * 分销用户关系 Service 接口
@@ -99,6 +98,7 @@ public interface SharePathService {
 
     List<Long> sonsId(Long userId);
 
+    PageResult<SharePathRespVO> getDescendants(SharePathPageReqVO pageReqVO);
     TreeNode getTree(Long userId, Integer minDepth, Integer maxDepth);
 
 }

+ 20 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java

@@ -273,6 +273,26 @@ public class SharePathServiceImpl implements SharePathService {
         return Stream.concat(orderUserId.stream(), userId.stream()).distinct().collect(Collectors.toList());
 
     }
+    @Override
+    public PageResult<SharePathRespVO> getDescendants(SharePathPageReqVO pageReqVO) {
+        LambdaQueryWrapperX<SharePathDO> wrapper = new LambdaQueryWrapperX<SharePathDO>()
+                .eq(SharePathDO::getAncestor, pageReqVO.getAncestor());
+        if(pageReqVO.getDepth() != null){
+            wrapper.eq(SharePathDO::getDepth, 1);
+        }else {
+            wrapper.ne(SharePathDO::getDepth, 1);
+        }
+
+        PageResult<SharePathDO> sharePathDOPageResult = sharePathMapper.selectDescendantsPage(pageReqVO);
+        PageResult<SharePathRespVO> result = BeanUtils.toBean(sharePathDOPageResult, SharePathRespVO.class);
+        List<SharePathRespVO> list = result.getList();
+        list.forEach(sharePath -> {
+            sharePath.setAvatar(memberUserService.getUser(sharePath.getDescendant()).getAvatar());
+        });
+        return result;
+    }
+
+
 
 
 }