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.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 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 java.util.*; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; /** * Admin 用户 API 实现类 * * @author 芋道源码 */ @Service public class AdminUserApiImpl implements AdminUserApi { @Resource private AdminUserService userService; @Resource private DeptService deptService; @Override public AdminUserRespDTO getUser(Long id) { AdminUserDO user = userService.getUser(id); return BeanUtils.toBean(user, AdminUserRespDTO.class); } @Override public List getUserListBySubordinate(Long id) { // 1.1 获取用户负责的部门 List depts = deptService.getDeptListByLeaderUserId(id); if (CollUtil.isEmpty(depts)) { return Collections.emptyList(); } // 1.2 获取所有子部门 Set deptIds = convertSet(depts, DeptDO::getId); List childDeptList = deptService.getChildDeptList(deptIds); if (CollUtil.isNotEmpty(childDeptList)) { deptIds.addAll(convertSet(childDeptList, DeptDO::getId)); } // 2. 获取部门对应的用户信息 List users = userService.getUserListByDeptIds(deptIds); users.removeIf(item -> ObjUtil.equal(item.getId(), id)); // 排除自己 return BeanUtils.toBean(users, AdminUserRespDTO.class); } @Override @DataPermission(enable = false) // 禁用数据权限。原因是,一般基于指定 id 的 API 查询,都是数据拼接为主 public List getUserList(Collection ids) { List users = userService.getUserList(ids); return BeanUtils.toBean(users, AdminUserRespDTO.class); } @Override public List getUserListByDeptIds(Collection deptIds) { List users = userService.getUserListByDeptIds(deptIds); return BeanUtils.toBean(users, AdminUserRespDTO.class); } @Override public List getUserListByPostIds(Collection postIds) { List users = userService.getUserListByPostIds(postIds); return BeanUtils.toBean(users, AdminUserRespDTO.class); } @Override public void validateUserList(Collection ids) { userService.validateUserList(ids); } @Override public AdminUserRespDTO getUserByName(String username) { AdminUserDO user = userService.getUserByUsername(username); return BeanUtils.toBean(user, AdminUserRespDTO.class); } }