package cn.lihu.jh.module.system.api.user; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.module.system.api.user.dto.AdminUserRespDTO; import cn.lihu.jh.module.system.dal.dataobject.dept.DeptDO; import cn.lihu.jh.module.system.dal.dataobject.user.AdminUserDO; import cn.lihu.jh.module.system.service.dept.DeptService; import cn.lihu.jh.module.system.service.user.AdminUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import static cn.lihu.jh.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 获取用户负责的部门 AdminUserDO user = userService.getUser(id); if (user == null) { return Collections.emptyList(); } ArrayList deptIds = new ArrayList<>(); DeptDO dept = deptService.getDept(user.getDeptId()); if (dept == null) { return Collections.emptyList(); } if (ObjUtil.notEqual(dept.getLeaderUserId(), id)) { // 校验为负责人 return Collections.emptyList(); } deptIds.add(dept.getId()); // 1.2 获取所有子部门 List childDeptList = deptService.getChildDeptList(dept.getId()); 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 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); } }