ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
@@ -2,6 +2,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; @@ -11,7 +12,6 @@ import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.service.ISysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -120,4 +120,16 @@ deptService.checkDeptDataScope(deptId); return toAjax(deptService.deleteDeptById(deptId)); } /** * 获取部门选择框列表 * * @param deptIds 部门ID串 */ @SaCheckPermission("system:dept:query") @GetMapping("/optionselect") public R<List<SysDeptVo>> optionselect(@RequestParam(required = false) Long[] deptIds) { return R.ok(deptService.selectDeptByIds(List.of(deptIds))); } } ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java
@@ -1,6 +1,8 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; @@ -12,8 +14,6 @@ import org.dromara.system.domain.bo.SysPostBo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.service.ISysPostService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -110,12 +110,13 @@ /** * 获取岗位选择框列表 * * @param postIds 岗位ID串 */ @SaCheckPermission("system:dept:query") @GetMapping("/optionselect") public R<List<SysPostVo>> optionselect() { SysPostBo postBo = new SysPostBo(); postBo.setStatus(UserConstants.POST_NORMAL); List<SysPostVo> posts = postService.selectPostList(postBo); return R.ok(posts); public R<List<SysPostVo>> optionselect(@RequestParam(required = false) Long[] postIds) { return R.ok(postService.selectPostByIds(List.of(postIds))); } } ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java
@@ -149,11 +149,13 @@ /** * 获取角色选择框列表 * * @param roleIds 角色ID串 */ @SaCheckPermission("system:role:query") @GetMapping("/optionselect") public R<List<SysRoleVo>> optionselect() { return R.ok(roleService.selectRoleAll()); public R<List<SysRoleVo>> optionselect(@RequestParam(required = false) Long[] roleIds) { return R.ok(roleService.selectRoleByIds(List.of(roleIds))); } /** ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -11,7 +11,6 @@ import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.encrypt.annotation.ApiEncrypt; @@ -207,6 +206,19 @@ } /** * 根据用户ID串批量获取用户基础信息 * * @param userIds 用户ID串 * @param deptId 部门ID */ @SaCheckPermission("system:user:query") @GetMapping("/optionselect") public R<List<SysUserVo>> optionselect(@RequestParam(required = false) Long[] userIds, @RequestParam(required = false) Long deptId) { return R.ok(userService.selectUserByIds(List.of(userIds), deptId)); } /** * 重置密码 */ @ApiEncrypt ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
@@ -53,6 +53,14 @@ SysDeptVo selectDeptById(Long deptId); /** * 通过部门ID串查询部门 * * @param deptIds 部门id串 * @return 部门列表信息 */ List<SysDeptVo> selectDeptByIds(List<Long> deptIds); /** * 根据ID查询所有子部门数(正常状态) * * @param deptId 部门ID ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java
@@ -49,6 +49,14 @@ List<Long> selectPostListByUserId(Long userId); /** * 通过岗位ID串查询岗位 * * @param postIds 岗位id串 * @return 岗位列表信息 */ List<SysPostVo> selectPostByIds(List<Long> postIds); /** * 校验岗位名称 * * @param post 岗位信息 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java
@@ -75,6 +75,14 @@ SysRoleVo selectRoleById(Long roleId); /** * 通过角色ID串查询角色 * * @param roleIds 角色ID串 * @return 角色列表信息 */ List<SysRoleVo> selectRoleByIds(List<Long> roleIds); /** * 校验角色名称是否唯一 * * @param role 角色信息 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
@@ -67,6 +67,15 @@ SysUserVo selectUserById(Long userId); /** * 通过用户ID串查询用户 * * @param userIds 用户ID串 * @param deptId 部门id * @return 用户列表信息 */ List<SysUserVo> selectUserByIds(List<Long> userIds, Long deptId); /** * 根据用户ID查询用户所属角色组 * * @param userId 用户ID ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.exception.ServiceException; @@ -27,7 +28,6 @@ import org.dromara.system.mapper.SysRoleMapper; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -139,6 +139,14 @@ return dept; } @Override public List<SysDeptVo> selectDeptByIds(List<Long> deptIds) { return baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>() .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getLeader) .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL) .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds)); } /** * 通过部门ID查询部门名称 * ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
@@ -1,10 +1,13 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -18,7 +21,6 @@ import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysUserPostMapper; import org.dromara.system.service.ISysPostService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -98,6 +100,20 @@ } /** * 通过岗位ID串查询岗位 * * @param postIds 岗位id串 * @return 岗位列表信息 */ @Override public List<SysPostVo> selectPostByIds(List<Long> postIds) { return baseMapper.selectVoList(new LambdaQueryWrapper<SysPost>() .select(SysPost::getPostId, SysPost::getPostName, SysPost::getPostCode) .eq(SysPost::getStatus, UserConstants.POST_NORMAL) .in(CollUtil.isNotEmpty(postIds), SysPost::getPostId, postIds)); } /** * 校验岗位名称是否唯一 * * @param post 岗位信息 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
@@ -167,6 +167,20 @@ } /** * 通过角色ID串查询角色 * * @param roleIds 角色ID串 * @return 角色列表信息 */ @Override public List<SysRoleVo> selectRoleByIds(List<Long> roleIds) { return baseMapper.selectRoleList(new LambdaQueryWrapper<SysRole>() .select(SysRole::getRoleId, SysRole::getRoleName, SysRole::getRoleKey) .eq(SysRole::getStatus, UserConstants.ROLE_NORMAL) .in(CollUtil.isNotEmpty(roleIds), SysRole::getRoleId, roleIds)); } /** * 校验角色名称是否唯一 * * @param role 角色信息 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -78,20 +78,20 @@ Map<String, Object> params = user.getParams(); QueryWrapper<SysUser> wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .between(params.get("beginTime") != null && params.get("endTime") != null, "u.create_time", params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>() .select(SysDept::getDeptId) .apply(DataBaseHelper.findInSet(user.getDeptId(), "ancestors"))); List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId); ids.add(user.getDeptId()); w.in("u.dept_id", ids); }).orderByAsc("u.user_id"); .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .between(params.get("beginTime") != null && params.get("endTime") != null, "u.create_time", params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>() .select(SysDept::getDeptId) .apply(DataBaseHelper.findInSet(user.getDeptId(), "ancestors"))); List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId); ids.add(user.getDeptId()); w.in("u.dept_id", ids); }).orderByAsc("u.user_id"); return wrapper; } @@ -105,11 +105,11 @@ public TableDataInfo<SysUserVo> selectAllocatedList(SysUserBo user, PageQuery pageQuery) { QueryWrapper<SysUser> wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .orderByAsc("u.user_id"); .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .orderByAsc("u.user_id"); Page<SysUserVo> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper); return TableDataInfo.build(page); } @@ -125,11 +125,11 @@ List<Long> userIds = userRoleMapper.selectUserIdsByRoleId(user.getRoleId()); QueryWrapper<SysUser> wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) .and(w -> w.ne("r.role_id", user.getRoleId()).or().isNull("r.role_id")) .notIn(CollUtil.isNotEmpty(userIds), "u.user_id", userIds) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .orderByAsc("u.user_id"); .and(w -> w.ne("r.role_id", user.getRoleId()).or().isNull("r.role_id")) .notIn(CollUtil.isNotEmpty(userIds), "u.user_id", userIds) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .orderByAsc("u.user_id"); Page<SysUserVo> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper); return TableDataInfo.build(page); } @@ -173,6 +173,22 @@ } /** * 通过用户ID串查询用户 * * @param userIds 用户ID串 * @param deptId 部门id * @return 用户列表信息 */ @Override public List<SysUserVo> selectUserByIds(List<Long> userIds, Long deptId) { return baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName) .eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); } /** * 查询用户所属角色组 * * @param userId 用户ID @@ -211,8 +227,8 @@ @Override public boolean checkUserNameUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getUserName, user.getUserName()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); .eq(SysUser::getUserName, user.getUserName()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); return !exist; } @@ -224,8 +240,8 @@ @Override public boolean checkPhoneUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getPhonenumber, user.getPhonenumber()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); .eq(SysUser::getPhonenumber, user.getPhonenumber()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); return !exist; } @@ -237,8 +253,8 @@ @Override public boolean checkEmailUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getEmail, user.getEmail()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); .eq(SysUser::getEmail, user.getEmail()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); return !exist; } @@ -351,9 +367,9 @@ @Override public int updateUserStatus(Long userId, String status) { return baseMapper.update(null, new LambdaUpdateWrapper<SysUser>() .set(SysUser::getStatus, status) .eq(SysUser::getUserId, userId)); new LambdaUpdateWrapper<SysUser>() .set(SysUser::getStatus, status) .eq(SysUser::getUserId, userId)); } /** @@ -365,12 +381,12 @@ @Override public int updateUserProfile(SysUserBo user) { return baseMapper.update(null, new LambdaUpdateWrapper<SysUser>() .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName()) .set(SysUser::getPhonenumber, user.getPhonenumber()) .set(SysUser::getEmail, user.getEmail()) .set(SysUser::getSex, user.getSex()) .eq(SysUser::getUserId, user.getUserId())); new LambdaUpdateWrapper<SysUser>() .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName()) .set(SysUser::getPhonenumber, user.getPhonenumber()) .set(SysUser::getEmail, user.getEmail()) .set(SysUser::getSex, user.getSex()) .eq(SysUser::getUserId, user.getUserId())); } /** @@ -383,9 +399,9 @@ @Override public boolean updateUserAvatar(Long userId, Long avatar) { return baseMapper.update(null, new LambdaUpdateWrapper<SysUser>() .set(SysUser::getAvatar, avatar) .eq(SysUser::getUserId, userId)) > 0; new LambdaUpdateWrapper<SysUser>() .set(SysUser::getAvatar, avatar) .eq(SysUser::getUserId, userId)) > 0; } /** @@ -398,9 +414,9 @@ @Override public int resetUserPwd(Long userId, String password) { return baseMapper.update(null, new LambdaUpdateWrapper<SysUser>() .set(SysUser::getPassword, password) .eq(SysUser::getUserId, userId)); new LambdaUpdateWrapper<SysUser>() .set(SysUser::getPassword, password) .eq(SysUser::getUserId, userId)); } /** @@ -545,7 +561,7 @@ @Override public String selectUserNameById(Long userId) { SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName(); } @@ -562,6 +578,7 @@ .select(SysUser::getNickName).eq(SysUser::getUserId, userId)); return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName(); } /** * 通过用户ID查询用户手机号 *