|
@ -27,8 +27,7 @@ import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
|
import javax.validation.Valid; |
|
|
import javax.validation.Valid; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.util.ArrayList; |
|
|
import java.util.*; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -323,6 +322,29 @@ public class SysUserController { |
|
|
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); |
|
|
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); |
|
|
lqw.in(SysUser::getId,userBo.getUserIds()); |
|
|
lqw.in(SysUser::getId,userBo.getUserIds()); |
|
|
sysUserService.update(param,lqw); |
|
|
sysUserService.update(param,lqw); |
|
|
|
|
|
if(param.getSalesFlag().equals(0)){ |
|
|
|
|
|
sysUserSalesService.removeBatchByIds(userBo.getUserIds()); |
|
|
|
|
|
}else { |
|
|
|
|
|
List<SysUserSales> existList = sysUserSalesService.listByIds(userBo.getUserIds()); |
|
|
|
|
|
List<SysUserSales> insertList = new ArrayList<>(); |
|
|
|
|
|
for (String userId : userBo.getUserIds()) { |
|
|
|
|
|
boolean exist = false; |
|
|
|
|
|
for (SysUserSales userSales : existList) { |
|
|
|
|
|
if(userId.equals(userSales.getUserId())){ |
|
|
|
|
|
exist = true; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(!exist){ |
|
|
|
|
|
SysUserSales userSale = new SysUserSales(); |
|
|
|
|
|
userSale.setUserId(userId); |
|
|
|
|
|
userSale.setPid("0"); |
|
|
|
|
|
userSale.setPathIds("0_"+userId); |
|
|
|
|
|
insertList.add(userSale); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
sysUserSalesService.saveBatch(insertList); |
|
|
|
|
|
} |
|
|
return R.ok(); |
|
|
return R.ok(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -337,34 +359,70 @@ public class SysUserController { |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public R<?> updateSalesParent(@RequestBody @Valid SysUserParentParam userBo){ |
|
|
public R<?> updateSalesParent(@RequestBody @Valid SysUserParentParam userBo){ |
|
|
final String pid = userBo.getParentId(); |
|
|
final String pid = userBo.getParentId(); |
|
|
List<SysUserSales> sysUserSalesList = new ArrayList<>(); |
|
|
final List<String> userIds = new ArrayList<>(); |
|
|
if(!userBo.getParentId().equals("0")){ |
|
|
userIds.addAll(userBo.getUserIds()); |
|
|
final SysUserSales userSales = sysUserSalesService.getById(pid); |
|
|
if(!pid.equals("0")){ |
|
|
boolean isExist = false; |
|
|
userIds.add(pid); |
|
|
if(userSales!=null){ |
|
|
} |
|
|
isExist = userBo.getUserIds().stream().filter(StringUtils::hasText).anyMatch(objId->userSales.getPid().equals(objId)); |
|
|
List<SysUser> sysUserList = sysUserService.listByIds(userIds); |
|
|
} |
|
|
for (SysUser sysUser : sysUserList) { |
|
|
if(isExist&&userBo.getUserIds().size()>1){ |
|
|
if(sysUser.getSalesFlag().equals(0)){ |
|
|
return R.error("多节点操作出现递归数据"); |
|
|
return R.error("["+sysUser.getName()+"]未设置销售属性"); |
|
|
} |
|
|
|
|
|
if(isExist){ |
|
|
|
|
|
SysUserSales sysUserSales = new SysUserSales(); |
|
|
|
|
|
sysUserSales.setUserId(userSales.getPid()); |
|
|
|
|
|
sysUserSales.setPid(userSales.getUserId()); |
|
|
|
|
|
sysUserSalesList.add(sysUserSales); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
List<SysUserSales> sysUserSalesList2 = userBo.getUserIds().stream().filter(StringUtils::hasText).map(uid->{ |
|
|
List<SysUserSales> updateAllList = new ArrayList<>(); |
|
|
SysUserSales sysUserSales = new SysUserSales(); |
|
|
if(pid.equals("0")){ |
|
|
sysUserSales.setUserId(uid); |
|
|
List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); |
|
|
sysUserSales.setPid(pid); |
|
|
List<SysUserSales> updateList = this.updateSalesLevel(pid, "0", sysUserSales); |
|
|
return sysUserSales; |
|
|
updateAllList.addAll(updateList); |
|
|
}).collect(Collectors.toList()); |
|
|
}else { |
|
|
sysUserSalesList.addAll(sysUserSalesList2); |
|
|
SysUserSales parent = sysUserSalesService.getById(pid); |
|
|
sysUserSalesService.saveOrUpdateBatch(sysUserSalesList); |
|
|
List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); |
|
|
|
|
|
List<SysUserSales> updateList = this.updateSalesLevel(pid, parent.getPathIds(), sysUserSales); |
|
|
|
|
|
updateAllList.addAll(updateList); |
|
|
|
|
|
} |
|
|
|
|
|
sysUserSalesService.updateBatchById(updateAllList); |
|
|
return R.ok(); |
|
|
return R.ok(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 更新id路径 |
|
|
|
|
|
* @param pid |
|
|
|
|
|
* @param newPrefixPath |
|
|
|
|
|
* @param sysUserSales |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
private List<SysUserSales> updateSalesLevel(String pid,String newPrefixPath,List<SysUserSales> sysUserSales) { |
|
|
|
|
|
List<SysUserSales> updateList = new ArrayList<>(); |
|
|
|
|
|
for (SysUserSales userSale : sysUserSales) { |
|
|
|
|
|
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<SysUserSales> childList = sysUserSalesService.listByPathId(pathIds); |
|
|
|
|
|
for (SysUserSales childNode : childList) { |
|
|
|
|
|
String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath,""); |
|
|
|
|
|
String[] arr = childPathIds.split("_"); |
|
|
|
|
|
Set<String> setStr = new HashSet<>(); |
|
|
|
|
|
for (String strv : arr) { |
|
|
|
|
|
setStr.add(strv); |
|
|
|
|
|
} |
|
|
|
|
|
String lastId = arr[arr.length-1]; |
|
|
|
|
|
if(!lastId.equals(childNode.getUserId())||userSale.getUserId().equals(childNode.getUserId())){ |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
if(setStr.size()<arr.length){ |
|
|
|
|
|
Assert.throwEx("出现递归节点"); |
|
|
|
|
|
} |
|
|
|
|
|
childNode.setPathIds(childPathIds); |
|
|
|
|
|
updateList.add(childNode); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return updateList; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 删除 |
|
|
* 删除 |
|
|
* @param id |
|
|
* @param id |
|
|