CRM: 完善 code review 数据权限提到的问题,重新封装 CrmQueryWrapperUtils

This commit is contained in:
puhui999
2023-12-08 15:27:58 +08:00
parent db62d70f3f
commit 5c395fc1c4
21 changed files with 223 additions and 194 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.api.user;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@ -7,13 +8,13 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@ -37,21 +38,32 @@ public class AdminUserApiImpl implements AdminUserApi {
}
@Override
public Set<Long> getSubordinateIds(Long id) {
AdminUserDO user = userService.getUser(id);
public List<AdminUserRespDTO> getUserListBySubordinate(Long userId) {
// 1. 获取用户信息
AdminUserDO user = userService.getUser(userId);
if (user == null) {
return null;
return Collections.emptyList();
}
Set<Long> subordinateIds = null; // 下属用户编号
// 2.1 获取用户负责的部门
ArrayList<Long> deptIds = new ArrayList<>();
DeptDO dept = deptService.getDept(user.getDeptId());
// TODO @puhui999需要递归查询到子部门并且要排除到自己噢。
// TODO @puhui999保持 if return 原则,这里其实要判断不等于,则返回 null最好返回 空集合,上面也是
if (ObjUtil.equal(dept.getLeaderUserId(), id)) { // 校验是否是该部门的负责人
List<AdminUserDO> users = userService.getUserListByDeptIds(Collections.singletonList(dept.getId()));
subordinateIds = convertSet(users, AdminUserDO::getId);
if (dept == null) {
return Collections.emptyList();
}
return subordinateIds;
if (ObjUtil.notEqual(dept.getLeaderUserId(), userId)) { // 校验为负责人
return Collections.emptyList();
}
deptIds.add(dept.getId()); // 加入此部门
// 2.2 获取所有子部门
List<DeptDO> childDeptList = deptService.getChildDeptList(dept.getId());
if (CollUtil.isNotEmpty(childDeptList)) {
deptIds.addAll(convertSet(childDeptList, DeptDO::getId));
}
// 2.3 获取用户信息
List<AdminUserDO> users = userService.getUserListByDeptIds(deptIds);
users.removeIf(item -> ObjUtil.equal(item.getId(), userId)); // 排除自己
return BeanUtils.toBean(users, AdminUserRespDTO.class);
}
@Override