| 
					
				 | 
			
			
				@@ -3,28 +3,27 @@ package cn.newfeifan.mall.module.distri.service.duser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.SharePathSaveReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusSaveReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.distri.dal.mysql.sharepath.SharePathMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.service.integral.IntegralService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.member.dal.mysql.user.MemberUserMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.member.service.user.MemberUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.newfeifan.mall.module.system.service.member.MemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.validation.annotation.Validated; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.framework.common.pojo.PageResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.newfeifan.mall.framework.common.pojo.PageParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.framework.common.util.object.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.distri.dal.mysql.duser.DuserMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,6 +46,12 @@ public class DuserServiceImpl implements DuserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private MemberUserService memberUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SharePathMapper sharePathMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private MemberUserMapper memberUserMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Long createDuser(DuserSaveReqVO createReqVO) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -153,4 +158,38 @@ public class DuserServiceImpl implements DuserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void getSharePathCount(PageResult<DuserRespVO> result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<DuserRespVO> list = result.getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (DuserRespVO duserRespVO : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            duserRespVO.setDescendantCount(sharePathMapper.selectCount(new LambdaQueryWrapperX<SharePathDO>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(SharePathDO::getAncestor, duserRespVO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(SharePathDO::getDepth,1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            )); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            duserRespVO.setChildrenCount(sharePathMapper.selectCount(new LambdaQueryWrapperX<SharePathDO>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(SharePathDO::getAncestor, duserRespVO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .ne(SharePathDO::getDepth,1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            )); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |