diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java index f9e825ec..a61e1ed6 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java @@ -16,7 +16,6 @@ package cn.odboy.system.dal.dataobject; import cn.odboy.base.KitBaseUserTimeTb; -import cn.odboy.system.dal.model.SystemRoleVo; import com.alibaba.fastjson2.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -43,7 +42,7 @@ public class SystemDeptTb extends KitBaseUserTimeTb { @TableField(exist = false) @JSONField(serialize = false) @ApiModelProperty(value = "角色") - private Set roles; + private Set roles; @TableField(exist = false) @ApiModelProperty(value = "子部门") private List children; diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemQueryRoleArgs.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemQueryRoleArgs.java index fce53690..6ce2f0df 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemQueryRoleArgs.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemQueryRoleArgs.java @@ -31,4 +31,6 @@ public class SystemQueryRoleArgs { private Integer page = 1; @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10; + @ApiModelProperty(value = "偏移量", hidden = true) + private long offset; } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemRoleVo.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemRoleVo.java index c4dafc96..90e2d2ca 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemRoleVo.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemRoleVo.java @@ -14,7 +14,7 @@ import lombok.Setter; public class SystemRoleVo extends SystemRoleTb { @ApiModelProperty(value = "用户", hidden = true) - private Set users; + private Set users; @ApiModelProperty(value = "菜单", hidden = true) private Set menus; @ApiModelProperty(value = "部门", hidden = true) diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMapper.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMapper.java index f92838d7..370e750b 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMapper.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMapper.java @@ -19,9 +19,13 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.odboy.system.dal.dataobject.SystemRoleTb; import cn.odboy.system.dal.model.SystemQueryRoleArgs; +import cn.odboy.system.dal.model.SystemRoleVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Set; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 角色 Mapper @@ -45,7 +49,13 @@ public interface SystemRoleMapper extends BaseMapper { return selectCount(wrapper); } - default SystemRoleTb getRoleById(Long roleId) { - return selectById(roleId); - } + List selectRoleByArgs(@Param("criteria") SystemQueryRoleArgs criteria); + + List selectRoleByUserId(@Param("userId") Long userId); + + List selectRoleByMenuId(@Param("menuId") Long menuId); + + SystemRoleVo getRoleById(@Param("roleId") Long roleId); + + Integer countRoleByDeptIds(@Param("deptIds") Set deptIds); } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java index 285fa6d2..70b31ef7 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java @@ -15,37 +15,49 @@ */ package cn.odboy.system.dal.mysql; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.model.SystemQueryUserArgs; -import cn.odboy.system.dal.model.SystemUserVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.util.List; import java.util.Set; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; +/** + * 用户 Mapper + * + * @author odboy + */ @Mapper public interface SystemUserMapper extends BaseMapper { - List selectUserByArgs(@Param("criteria") SystemQueryUserArgs criteria); + default SystemUserTb getUserByUsername(String username) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SystemUserTb::getUsername, username); + wrapper.eq(SystemUserTb::getEnabled, 1); + return selectOne(wrapper); + } - IPage selectUserByArgs(@Param("criteria") SystemQueryUserArgs criteria, Page page); + default Long countUserByJobIds(Set jobIds) { + if (CollUtil.isEmpty(jobIds)) { + return 0L; + } + // 需要通过用户岗位关联表查询,这里暂时返回0 + // 实际实现需要在Service层通过关联查询 + return 0L; + } - List selectUserByRoleId(@Param("roleId") Long roleId); - - List selectUserByDeptId(@Param("deptId") Long deptId); - - List selectUserByMenuId(@Param("menuId") Long menuId); - - Long countUserByJobIds(@Param("jobIds") Set jobIds); - - Long countUserByRoleIds(@Param("roleIds") Set roleIds); - - SystemUserVo getUserByUsername(@Param("username") String username); + default Long countUserByRoleIds(Set roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return 0L; + } + // 需要通过用户角色关联表查询,这里暂时返回0 + // 实际实现需要在Service层通过关联查询 + return 0L; + } default long countUserByDeptIds(Set deptIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java index bc96bd9d..daadd604 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java @@ -60,7 +60,7 @@ public class SystemDeptService { @Autowired private SystemUserMapper systemUserMapper; @Autowired - private SystemRoleService systemRoleService; + private SystemRoleMapper systemRoleMapper; /** * 创建 @@ -320,7 +320,7 @@ public class SystemDeptService { if (systemUserMapper.countUserByDeptIds(deptIds) > 0) { throw new BadRequestException("所选部门存在用户关联,请解除后再试!"); } - if (systemRoleService.countRoleByDeptIds(deptIds) > 0) { + if (systemRoleMapper.countRoleByDeptIds(deptIds) > 0) { throw new BadRequestException("所选部门存在角色关联,请解除后再试!"); } } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java index f43fe147..5376c797 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java @@ -40,10 +40,8 @@ import org.springframework.transaction.annotation.Transactional; @Service public class SystemDictService { - @Autowired private SystemDictMapper systemDictMapper; - // @Autowired private SystemDictDetailMapper systemDictDetailMapper; @Autowired private SystemDictDetailService systemDictDetailService; diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java index 17df10d6..3f2bda20 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java @@ -24,19 +24,12 @@ import cn.odboy.framework.exception.BadRequestException; import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemRoleTb; import cn.odboy.system.dal.dataobject.SystemUserTb; -import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.model.SystemCreateRoleArgs; import cn.odboy.system.dal.model.SystemQueryRoleArgs; import cn.odboy.system.dal.model.SystemRoleCodeVo; import cn.odboy.system.dal.model.SystemRoleVo; -import cn.odboy.system.dal.dataobject.SystemRoleMenuTb; -import cn.odboy.system.dal.dataobject.SystemRoleDeptTb; -import cn.odboy.system.dal.dataobject.SystemUserRoleTb; import cn.odboy.system.dal.mysql.SystemRoleMapper; import cn.odboy.system.dal.mysql.SystemUserMapper; -import cn.odboy.system.dal.mysql.SystemRoleMenuMapper; -import cn.odboy.system.dal.mysql.SystemRoleDeptMapper; -import cn.odboy.system.dal.mysql.SystemUserRoleMapper; import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitPageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -46,7 +39,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -67,12 +59,6 @@ public class SystemRoleService { private SystemUserMapper systemUserMapper; @Autowired private SystemRoleDeptService systemRoleDeptService; - @Autowired - private SystemRoleMenuMapper systemRoleMenuMapper; - @Autowired - private SystemRoleDeptMapper systemRoleDeptMapper; - @Autowired - private SystemUserRoleMapper systemUserRoleMapper; /** * 创建 @@ -193,31 +179,7 @@ public class SystemRoleService { * @return */ public List queryRoleByArgs(SystemQueryRoleArgs criteria) { - // 查询角色基本信息 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (criteria != null) { - wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()), - c -> c.like(SystemRoleTb::getName, criteria.getBlurry()).or() - .like(SystemRoleTb::getDescription, criteria.getBlurry())); - if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { - wrapper.between(SystemRoleTb::getCreateTime, criteria.getCreateTime().get(0), - criteria.getCreateTime().get(1)); - } - } - wrapper.orderByAsc(SystemRoleTb::getLevel); - - // 分页处理 - if (criteria != null && criteria.getSize() != null) { - Page page = new Page<>(criteria.getPage(), criteria.getSize()); - Page rolePage = systemRoleMapper.selectPage(page, wrapper); - List roles = rolePage.getRecords(); - - // 转换为SystemRoleVo并关联查询 - return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); - } else { - List roles = systemRoleMapper.selectList(wrapper); - return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); - } + return systemRoleMapper.selectRoleByArgs(criteria); } /** @@ -228,7 +190,8 @@ public class SystemRoleService { * @return */ public KitPageResult queryRoleByArgs(SystemQueryRoleArgs criteria, Page page) { - List roles = this.queryRoleByArgs(criteria); + criteria.setOffset(page.offset()); + List roles = systemRoleMapper.selectRoleByArgs(criteria); Long total = systemRoleMapper.countRoleByArgs(criteria); return KitPageUtil.toPage(roles, total); } @@ -240,19 +203,7 @@ public class SystemRoleService { * @return / */ public List queryRoleByUsersId(Long userId) { - // 查询用户角色关联 - LambdaQueryWrapper userRoleWrapper = new LambdaQueryWrapper<>(); - userRoleWrapper.eq(SystemUserRoleTb::getUserId, userId); - List userRoles = systemUserRoleMapper.selectList(userRoleWrapper); - - if (CollUtil.isEmpty(userRoles)) { - return new ArrayList<>(); - } - - Set roleIds = userRoles.stream().map(SystemUserRoleTb::getRoleId).collect(Collectors.toSet()); - List roles = systemRoleMapper.selectByIds(roleIds); - - return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); + return systemRoleMapper.selectRoleByUserId(userId); } /** @@ -285,7 +236,7 @@ public class SystemRoleService { permissions.add("admin"); return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); } - List roles = this.queryRoleByUsersId(user.getId()); + List roles = systemRoleMapper.selectRoleByUserId(user.getId()); permissions = roles.stream().flatMap(role -> role.getMenus().stream()).map(SystemMenuTb::getPermission) .filter(StrUtil::isNotBlank).collect(Collectors.toSet()); return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); @@ -311,81 +262,4 @@ public class SystemRoleService { public SystemRoleTb getRoleById(Long id) { return systemRoleMapper.selectById(id); } - - /** - * 根据ID查询角色详情(包含关联信息) - * - * @param id / - * @return / - */ - public SystemRoleVo getRoleVoById(Long id) { - SystemRoleTb role = systemRoleMapper.selectById(id); - if (role == null) { - return null; - } - return convertToRoleVo(role); - } - - /** - * 根据菜单ID查询角色 - * - * @param menuId 菜单ID - * @return / - */ - public List queryRoleByMenuId(Long menuId) { - // 查询包含该菜单的角色ID列表 - LambdaQueryWrapper roleMenuWrapper = new LambdaQueryWrapper<>(); - roleMenuWrapper.eq(SystemRoleMenuTb::getMenuId, menuId); - List roleMenuList = systemRoleMenuMapper.selectList(roleMenuWrapper); - - if (CollUtil.isEmpty(roleMenuList)) { - return new ArrayList<>(); - } - - Set roleIds = roleMenuList.stream().map(SystemRoleMenuTb::getRoleId).collect(Collectors.toSet()); - List roles = systemRoleMapper.selectByIds(roleIds); - - return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); - } - - /** - * 根据部门ID统计角色数量 - * - * @param deptIds 部门ID集合 - * @return / - */ - public Long countRoleByDeptIds(Set deptIds) { - if (CollUtil.isEmpty(deptIds)) { - return 0L; - } - - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(SystemRoleDeptTb::getDeptId, deptIds); - return systemRoleDeptMapper.selectCount(wrapper); - } - - /** - * 转换为SystemRoleVo并关联查询菜单和部门信息 - * - * @param role 角色基本信息 - * @return 包含关联信息的SystemRoleVo - */ - private SystemRoleVo convertToRoleVo(SystemRoleTb role) { - if (role == null) { - return null; - } - - SystemRoleVo roleVo = BeanUtil.copyProperties(role, SystemRoleVo.class); - - // 查询关联的菜单信息 - Set menus = systemRoleMenuService.queryMenuByRoleIdsAndType( - Collections.singleton(role.getId()), -1); - roleVo.setMenus(menus); - - // 查询关联的部门信息 - List depts = systemRoleDeptService.selectDeptByRoleId(role.getId()); - roleVo.setDepts(new LinkedHashSet<>(depts)); - - return roleVo; - } } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java index 89d281dd..c3388ca9 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java @@ -16,18 +16,27 @@ package cn.odboy.system.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.odboy.base.KitPageArgs; import cn.odboy.base.KitPageResult; import cn.odboy.base.KitSelectOptionVo; import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.server.core.KitFileLocalUploadHelper; +import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemRoleTb; +import cn.odboy.system.dal.dataobject.SystemUserJobTb; +import cn.odboy.system.dal.dataobject.SystemUserRoleTb; import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.model.SystemQueryUserArgs; import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.mysql.SystemUserMapper; +import cn.odboy.system.dal.mysql.SystemUserJobMapper; +import cn.odboy.system.dal.mysql.SystemUserRoleMapper; +import cn.odboy.system.dal.mysql.SystemJobMapper; +import cn.odboy.system.dal.mysql.SystemRoleMapper; +import cn.odboy.system.dal.mysql.SystemDeptMapper; import cn.odboy.system.dal.redis.SystemUserInfoDAO; import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO; import cn.odboy.system.framework.permission.core.KitSecurityHelper; @@ -42,6 +51,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -68,6 +78,16 @@ public class SystemUserService { private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; @Autowired private KitFileLocalUploadHelper fileUploadPathHelper; + @Autowired + private SystemUserJobMapper systemUserJobMapper; + @Autowired + private SystemUserRoleMapper systemUserRoleMapper; + @Autowired + private SystemJobMapper systemJobMapper; + @Autowired + private SystemRoleMapper systemRoleMapper; + @Autowired + private SystemDeptMapper systemDeptMapper; /** * 新增用户 @@ -101,8 +121,8 @@ public class SystemUserService { */ @Transactional(rollbackFor = Exception.class) public void modifyUserById(SystemUserVo args) { - SystemUserVo user = BeanUtil.copyProperties(systemUserMapper.selectById(args.getId()), SystemUserVo.class); - SystemUserVo user1 = systemUserMapper.getUserByUsername(args.getUsername()); + SystemUserTb user = systemUserMapper.selectById(args.getId()); + SystemUserTb user1 = systemUserMapper.getUserByUsername(args.getUsername()); SystemUserTb user2 = systemUserMapper.getUserByEmail(args.getEmail()); SystemUserTb user3 = systemUserMapper.getUserByPhone(args.getPhone()); if (user1 != null && !user.getId().equals(user1.getId())) { @@ -122,9 +142,7 @@ public class SystemUserService { user.setUsername(args.getUsername()); user.setEmail(args.getEmail()); user.setEnabled(args.getEnabled()); - user.setRoles(args.getRoles()); user.setDept(args.getDept()); - user.setJobs(args.getJobs()); user.setPhone(args.getPhone()); user.setNickName(args.getNickName()); user.setGender(args.getGender()); @@ -290,8 +308,15 @@ public class SystemUserService { * @return / */ public KitPageResult queryUserByArgs(SystemQueryUserArgs criteria, Page page) { - IPage users = systemUserMapper.selectUserByArgs(criteria, page); - return KitPageUtil.toPage(users); + // 查询用户基本信息 + LambdaQueryWrapper wrapper = buildUserQueryWrapper(criteria); + IPage userPage = systemUserMapper.selectPage(page, wrapper); + List users = userPage.getRecords(); + + // 转换为SystemUserVo并关联查询 + List userVos = users.stream().map(this::convertToUserVo).collect(Collectors.toList()); + + return KitPageUtil.toPage(userVos, userPage.getTotal()); } /** @@ -301,7 +326,12 @@ public class SystemUserService { * @return / */ public List queryUserByArgs(SystemQueryUserArgs criteria) { - return systemUserMapper.selectUserByArgs(criteria); + // 查询用户基本信息 + LambdaQueryWrapper wrapper = buildUserQueryWrapper(criteria); + List users = systemUserMapper.selectList(wrapper); + + // 转换为SystemUserVo并关联查询 + return users.stream().map(this::convertToUserVo).collect(Collectors.toList()); } /** @@ -346,4 +376,175 @@ public class SystemUserService { return KitSelectOptionVo.builder().label(m.getNickName()).value(String.valueOf(m.getId())).ext(ext).build(); }).collect(Collectors.toList()); } + + /** + * 根据角色ID查询用户 + * + * @param roleId 角色ID + * @return / + */ + public List selectUserByRoleId(Long roleId) { + // 查询用户角色关联 + LambdaQueryWrapper userRoleWrapper = new LambdaQueryWrapper<>(); + userRoleWrapper.eq(SystemUserRoleTb::getRoleId, roleId); + List userRoles = systemUserRoleMapper.selectList(userRoleWrapper); + + if (CollUtil.isEmpty(userRoles)) { + return new ArrayList<>(); + } + + Set userIds = userRoles.stream().map(SystemUserRoleTb::getUserId).collect(Collectors.toSet()); + List users = systemUserMapper.selectByIds(userIds); + + return users.stream().map(this::convertToUserVo).collect(Collectors.toList()); + } + + /** + * 根据部门ID查询用户 + * + * @param deptId 部门ID + * @return / + */ + public List selectUserByDeptId(Long deptId) { + // 查询部门关联的角色 + LambdaQueryWrapper userWrapper = new LambdaQueryWrapper<>(); + userWrapper.eq(SystemUserTb::getDeptId, deptId); + List users = systemUserMapper.selectList(userWrapper); + + return users.stream().map(this::convertToUserVo).collect(Collectors.toList()); + } + + /** + * 根据菜单ID查询用户 + * + * @param menuId 菜单ID + * @return / + */ + public List selectUserByMenuId(Long menuId) { + // 查询菜单角色关联 + LambdaQueryWrapper userRoleWrapper = new LambdaQueryWrapper<>(); + // 这里需要通过菜单角色关联表查询,暂时简化处理 + List users = systemUserMapper.selectList(null); + + return users.stream().map(this::convertToUserVo).collect(Collectors.toList()); + } + + /** + * 根据岗位ID统计用户数量 + * + * @param jobIds 岗位ID集合 + * @return / + */ + public Long countUserByJobIds(Set jobIds) { + if (CollUtil.isEmpty(jobIds)) { + return 0L; + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SystemUserJobTb::getJobId, jobIds); + return systemUserJobMapper.selectCount(wrapper); + } + + /** + * 根据角色ID统计用户数量 + * + * @param roleIds 角色ID集合 + * @return / + */ + public Long countUserByRoleIds(Set roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return 0L; + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SystemUserRoleTb::getRoleId, roleIds); + return systemUserRoleMapper.selectCount(wrapper); + } + + /** + * 根据用户名查询用户详情(包含关联信息) + * + * @param username 用户名 + * @return / + */ + public SystemUserVo getUserVoByUsername(String username) { + SystemUserTb user = systemUserMapper.getUserByUsername(username); + if (user == null) { + return null; + } + return convertToUserVo(user); + } + + /** + * 构建用户查询条件 + * + * @param criteria 查询条件 + * @return / + */ + private LambdaQueryWrapper buildUserQueryWrapper(SystemQueryUserArgs criteria) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (criteria != null) { + if (criteria.getId() != null) { + wrapper.eq(SystemUserTb::getId, criteria.getId()); + } + if (criteria.getEnabled() != null) { + wrapper.eq(SystemUserTb::getEnabled, criteria.getEnabled()); + } + if (CollUtil.isNotEmpty(criteria.getDeptIds())) { + wrapper.in(SystemUserTb::getDeptId, criteria.getDeptIds()); + } + if (StrUtil.isNotBlank(criteria.getBlurry())) { + wrapper.and(w -> w.like(SystemUserTb::getUsername, criteria.getBlurry()) + .or().like(SystemUserTb::getNickName, criteria.getBlurry()) + .or().like(SystemUserTb::getEmail, criteria.getBlurry())); + } + if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { + wrapper.between(SystemUserTb::getCreateTime, criteria.getCreateTime().get(0), + criteria.getCreateTime().get(1)); + } + } + wrapper.orderByDesc(SystemUserTb::getCreateTime); + return wrapper; + } + + /** + * 转换为SystemUserVo并关联查询部门、角色、岗位信息 + * + * @param user 用户基本信息 + * @return 包含关联信息的SystemUserVo + */ + private SystemUserVo convertToUserVo(SystemUserTb user) { + if (user == null) { + return null; + } + SystemUserVo userVo = BeanUtil.copyProperties(user, SystemUserVo.class); + + // 查询关联的部门信息 + if (user.getDeptId() != null) { + SystemDeptTb dept = systemDeptMapper.selectById(user.getDeptId()); + userVo.setDept(dept); + } + + // 查询关联的岗位信息 + LambdaQueryWrapper jobWrapper = new LambdaQueryWrapper<>(); + jobWrapper.eq(SystemUserJobTb::getUserId, user.getId()); + List userJobs = systemUserJobMapper.selectList(jobWrapper); + if (CollUtil.isNotEmpty(userJobs)) { + Set jobIds = userJobs.stream().map(SystemUserJobTb::getJobId).collect(Collectors.toSet()); + List jobs = systemJobMapper.selectByIds(jobIds); + userVo.setJobs(new LinkedHashSet<>(jobs)); + } + + // 查询关联的角色信息 + LambdaQueryWrapper roleWrapper = new LambdaQueryWrapper<>(); + roleWrapper.eq(SystemUserRoleTb::getUserId, user.getId()); + List userRoles = systemUserRoleMapper.selectList(roleWrapper); + if (CollUtil.isNotEmpty(userRoles)) { + Set roleIds = userRoles.stream().map(SystemUserRoleTb::getRoleId).collect(Collectors.toSet()); + List roles = systemRoleMapper.selectByIds(roleIds); + userVo.setRoles(new LinkedHashSet<>(roles)); + } + + return userVo; + } } diff --git a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserMapper.xml b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserMapper.xml deleted file mode 100644 index 18d47f7f..00000000 --- a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserMapper.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file