diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index eeea2515..3e431f7c 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -8,6 +8,7 @@ import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.dto.TreeNode; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.*; @@ -317,6 +318,41 @@ public class SysUserController { return R.ok(); } + /** + * 用户path_ids初始化 + * @return + */ + @SysLog(title = "人员",desc = "用户path_ids初始化",biz = BizType.UPDATE) + @PostMapping("/initSalesParentPathIds") + @PreAuthorize("hasRole('sys:user:update')") + @Transactional(rollbackFor = Exception.class) + public R updateSalesParent(){ + LambdaQueryWrapper lqwSale = new LambdaQueryWrapper<>(); + lqwSale.eq(SysUserSales::getPid,"0"); + List userSales = sysUserSalesService.list(lqwSale); + userSales.forEach(a->{ + a.setPathIds("0_"+a.getUserId()); + }); + sysUserSalesService.updateBatchById(userSales); + initPath(userSales); + return R.ok(); + } + + + private void initPath(List pSales){ + pSales.forEach(p->{ + LambdaQueryWrapper lqwSale = new LambdaQueryWrapper<>(); + lqwSale.eq(SysUserSales::getPid,p.getUserId()); + List userSales = sysUserSalesService.list(lqwSale); + userSales.forEach(a->{ + a.setPathIds(p.getPathIds()+"_"+a.getUserId()); + }); + sysUserSalesService.updateBatchById(userSales); + + initPath(userSales); + }); + } + /** * 修改销售人员上下级 * @param userBo @@ -341,6 +377,7 @@ public class SysUserController { } List updateAllList = new ArrayList<>(); if(pid.equals("0")){ + //清除父级,还原回一级 List sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); List updateList = this.updateSalesLevel(pid, "0", sysUserSales); updateAllList.addAll(updateList); @@ -362,31 +399,30 @@ public class SysUserController { * @return */ private List updateSalesLevel(String pid,String newPrefixPath,List sysUserSales) { + List updateList = new ArrayList<>(); for (SysUserSales userSale : sysUserSales) { + if(newPrefixPath.contains("_"+userSale.getUserId())){ + Assert.throwEx("不能选择该人员,上下级死循环"); + } String pathIds = userSale.getPathIds(); - String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf(userSale.getUserId())-1); userSale.setPathIds(newPrefixPath+"_"+userSale.getUserId()); userSale.setPid(pid); updateList.add(userSale); + //更新子节点 - List childList = sysUserSalesService.listByPathId(pathIds); + if(pathIds.lastIndexOf(userSale.getUserId())<0){ + return updateList; + } + String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf("_"+userSale.getUserId())-1); + log.info(oldPrefixPath); + List childList = sysUserSalesService.listByPathId(pathIds); for (SysUserSales childNode : childList) { - String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath,""); - String[] arr = childPathIds.split("_"); - Set setStr = new HashSet<>(); - for (String strv : arr) { - setStr.add(strv); - } - if(userSale.getUserId().equals(childNode.getUserId())){ - continue; - } - if(setStr.size() lqw = new LambdaQueryWrapper<>(); lqw.likeRight(SysUserSales::getPathIds,pathId); + lqw.ne(SysUserSales::getPathIds,pathId); List list = this.list(lqw); - List result = new ArrayList<>(); +// List result = new ArrayList<>(); //过滤数值类型脏数据 - for (SysUserSales userSales : list) { - String[] arr = userSales.getPathIds().split("_"); - String lastId = arr[arr.length-1]; - if(!lastId.equals(userSales.getUserId())){ - continue; - } - result.add(userSales); - } - return result; +// for (SysUserSales userSales : list) { +// String[] arr = userSales.getPathIds().split("_"); +// String lastId = arr[arr.length-1]; +// if(!lastId.equals(userSales.getUserId())){ +// continue; +// } +// result.add(userSales); +// } + return list; } @Override