ruoyi-admin/src/main/java/com/ruoyi/web/controller/SysLoginController.java
@@ -7,13 +7,13 @@ import com.ruoyi.common.core.domain.model.SmsLoginBody; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysLoginService; import com.ruoyi.web.domain.vo.UserInfoVo; import com.ruoyi.web.domain.vo.LoginVo; import com.ruoyi.web.domain.vo.UserInfoVo; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -106,7 +106,7 @@ public R<UserInfoVo> getInfo() { UserInfoVo userInfoVo = new UserInfoVo(); LoginUser loginUser = LoginHelper.getLoginUser(); SysUser user = userService.selectUserById(loginUser.getUserId()); SysUserVo user = userService.selectUserById(loginUser.getUserId()); userInfoVo.setUser(user); userInfoVo.setPermissions(loginUser.getMenuPermission()); userInfoVo.setRoles(loginUser.getRolePermission()); ruoyi-admin/src/main/java/com/ruoyi/web/domain/vo/UserInfoVo.java
@@ -1,6 +1,6 @@ package com.ruoyi.web.domain.vo; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.vo.SysUserVo; import lombok.Data; import java.util.Set; @@ -16,7 +16,7 @@ /** * 用户基本信息 */ private SysUser user; private SysUserVo user; /** * 菜单权限 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysProfileController.java
@@ -6,14 +6,15 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.file.MimeTypeUtils; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.SysUser; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.AvatarVo; import com.ruoyi.system.domain.vo.ProfileVo; import com.ruoyi.system.domain.vo.SysOssVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysUserService; import lombok.RequiredArgsConstructor; @@ -43,7 +44,7 @@ */ @GetMapping public R<ProfileVo> profile() { SysUser user = userService.selectUserById(LoginHelper.getUserId()); SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); ProfileVo profileVo = new ProfileVo(); profileVo.setUser(user); profileVo.setRoleGroup(userService.selectUserRoleGroup(user.getUserName())); @@ -56,7 +57,7 @@ */ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping public R<Void> updateProfile(@RequestBody SysUser user) { public R<Void> updateProfile(@RequestBody SysUserBo user) { if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); @@ -85,7 +86,7 @@ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping("/updatePwd") public R<Void> updatePwd(String oldPassword, String newPassword) { SysUser user = userService.selectUserById(LoginHelper.getUserId()); SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); String userName = user.getUserName(); String password = user.getPassword(); if (!BCrypt.checkpw(oldPassword, password)) { ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysRoleController.java
@@ -5,19 +5,20 @@ import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.system.domain.SysDept; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.bo.SysRoleBo; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.DeptTreeSelectVo; import com.ruoyi.system.domain.vo.SysRoleVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; @@ -111,9 +112,9 @@ if (roleService.updateRole(role) > 0) { // 更新缓存用户权限 LoginUser loginUser = LoginHelper.getLoginUser(); SysUser sysUser = userService.selectUserById(loginUser.getUserId()); SysUserVo sysUser = userService.selectUserById(loginUser.getUserId()); if (ObjectUtil.isNotNull(sysUser) && !LoginHelper.isAdmin()) { loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser)); loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser.getUserId(), sysUser.isAdmin())); LoginHelper.setLoginUser(loginUser); } return R.ok(); @@ -171,7 +172,7 @@ */ @SaCheckPermission("system:role:list") @GetMapping("/authUser/allocatedList") public TableDataInfo<SysUser> allocatedList(SysUser user, PageQuery pageQuery) { public TableDataInfo<SysUserVo> allocatedList(SysUserBo user, PageQuery pageQuery) { return userService.selectAllocatedList(user, pageQuery); } @@ -180,7 +181,7 @@ */ @SaCheckPermission("system:role:list") @GetMapping("/authUser/unallocatedList") public TableDataInfo<SysUser> unallocatedList(SysUser user, PageQuery pageQuery) { public TableDataInfo<SysUserVo> unallocatedList(SysUserBo user, PageQuery pageQuery) { return userService.selectUnallocatedList(user, pageQuery); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysUserController.java
@@ -10,7 +10,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StreamUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.common.excel.core.ExcelResult; import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.log.annotation.Log; @@ -18,15 +17,15 @@ import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.system.domain.SysDept; import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.vo.SysRoleVo; import com.ruoyi.system.domain.vo.SysUserExportVo; import com.ruoyi.system.domain.vo.SysUserImportVo; import com.ruoyi.system.domain.vo.SysUserInfoVo; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.listener.SysUserImportListener; import com.ruoyi.system.service.*; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; @@ -34,7 +33,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.*; import java.util.ArrayList; import java.util.List; /** * 用户信息 @@ -57,7 +57,7 @@ */ @SaCheckPermission("system:user:list") @GetMapping("/list") public TableDataInfo<SysUser> list(SysUser user, PageQuery pageQuery) { public TableDataInfo<SysUserVo> list(SysUserBo user, PageQuery pageQuery) { return userService.selectPageUserList(user, pageQuery); } @@ -67,11 +67,11 @@ @Log(title = "用户管理", businessType = BusinessType.EXPORT) @SaCheckPermission("system:user:export") @PostMapping("/export") public void export(SysUser user, HttpServletResponse response) { List<SysUser> list = userService.selectUserList(user); public void export(SysUserBo user, HttpServletResponse response) { List<SysUserVo> list = userService.selectUserList(user); List<SysUserExportVo> listVo = BeanUtil.copyToList(list, SysUserExportVo.class); for (int i = 0; i < list.size(); i++) { SysDept dept = list.get(i).getDept(); SysDeptVo dept = list.get(i).getDept(); SysUserExportVo vo = listVo.get(i); if (ObjectUtil.isNotEmpty(dept)) { vo.setDeptName(dept.getDeptName()); @@ -117,9 +117,9 @@ userInfoVo.setRoles(LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin())); userInfoVo.setPosts(postService.selectPostAll()); if (ObjectUtil.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); SysUserVo sysUser = userService.selectUserById(userId); userInfoVo.setUser(sysUser); userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId)); userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRoleVo::getRoleId)); userInfoVo.setPostIds(postService.selectPostListByUserId(userId)); } return R.ok(userInfoVo); @@ -131,7 +131,7 @@ @SaCheckPermission("system:user:add") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping public R<Void> add(@Validated @RequestBody SysUser user) { public R<Void> add(@Validated @RequestBody SysUserBo user) { if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) { return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) @@ -151,7 +151,7 @@ @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping public R<Void> edit(@Validated @RequestBody SysUser user) { public R<Void> edit(@Validated @RequestBody SysUserBo user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) { @@ -187,7 +187,7 @@ @SaCheckPermission("system:user:resetPwd") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") public R<Void> resetPwd(@RequestBody SysUser user) { public R<Void> resetPwd(@RequestBody SysUserBo user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); user.setPassword(BCrypt.hashpw(user.getPassword())); @@ -200,7 +200,7 @@ @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public R<Void> changeStatus(@RequestBody SysUser user) { public R<Void> changeStatus(@RequestBody SysUserBo user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); return toAjax(userService.updateUserStatus(user)); @@ -214,7 +214,7 @@ @SaCheckPermission("system:user:query") @GetMapping("/authRole/{userId}") public R<SysUserInfoVo> authRole(@PathVariable Long userId) { SysUser user = userService.selectUserById(userId); SysUserVo user = userService.selectUserById(userId); List<SysRoleVo> roles = roleService.selectRolesByUserId(userId); SysUserInfoVo userInfoVo = new SysUserInfoVo(); userInfoVo.setUser(user); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java
@@ -3,18 +3,11 @@ import com.baomidou.mybatisplus.annotation.*; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.mybatis.core.domain.BaseEntity; import com.ruoyi.common.core.xss.Xss; import com.ruoyi.common.sensitive.annotation.Sensitive; import com.ruoyi.common.sensitive.core.SensitiveStrategy; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; /** * 用户对象 sys_user @@ -42,16 +35,11 @@ /** * 用户账号 */ @Xss(message = "用户账号不能包含脚本字符") @NotBlank(message = "用户账号不能为空") @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符") private String userName; /** * 用户昵称 */ @Xss(message = "用户昵称不能包含脚本字符") @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") private String nickName; /** @@ -62,15 +50,11 @@ /** * 用户邮箱 */ @Sensitive(strategy = SensitiveStrategy.EMAIL) @Email(message = "邮箱格式不正确") @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") private String email; /** * 手机号码 */ @Sensitive(strategy = SensitiveStrategy.PHONE) private String phonenumber; /** @@ -119,35 +103,6 @@ */ private String remark; /** * 部门对象 */ @TableField(exist = false) private SysDept dept; /** * 角色对象 */ @TableField(exist = false) private List<SysRole> roles; /** * 角色组 */ @TableField(exist = false) private Long[] roleIds; /** * 岗位组 */ @TableField(exist = false) private Long[] postIds; /** * 数据权限 当前角色ID */ @TableField(exist = false) private Long roleId; public SysUser(Long userId) { this.userId = userId; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysUserBo.java
@@ -1,16 +1,18 @@ package com.ruoyi.system.domain.bo; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.xss.Xss; import com.ruoyi.common.mybatis.core.domain.BaseEntity; import com.ruoyi.common.sensitive.annotation.Sensitive; import com.ruoyi.common.sensitive.core.SensitiveStrategy; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import lombok.NoArgsConstructor; import java.util.Date; import com.ruoyi.common.mybatis.core.domain.BaseEntity; import lombok.NoArgsConstructor; /** * 用户信息业务对象 sys_user @@ -27,7 +29,6 @@ /** * 用户ID */ @NotNull(message = "用户ID不能为空", groups = { EditGroup.class }) private Long userId; /** @@ -38,12 +39,16 @@ /** * 用户账号 */ @NotBlank(message = "用户账号不能为空", groups = { AddGroup.class, EditGroup.class }) @Xss(message = "用户账号不能包含脚本字符") @NotBlank(message = "用户账号不能为空") @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符") private String userName; /** * 用户昵称 */ @Xss(message = "用户昵称不能包含脚本字符") @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") private String nickName; /** @@ -54,11 +59,15 @@ /** * 用户邮箱 */ @Sensitive(strategy = SensitiveStrategy.EMAIL) @Email(message = "邮箱格式不正确") @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") private String email; /** * 手机号码 */ @Sensitive(strategy = SensitiveStrategy.PHONE) private String phonenumber; /** @@ -90,11 +99,6 @@ * 最后登录时间 */ private Date loginDate; /** * 创建部门 */ private Long createDept; /** * 备注 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProfileVo.java
@@ -1,6 +1,5 @@ package com.ruoyi.system.domain.vo; import com.ruoyi.system.domain.SysUser; import lombok.Data; /** @@ -14,7 +13,7 @@ /** * 用户信息 */ private SysUser user; private SysUserVo user; /** * 用户所属角色组 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserInfoVo.java
@@ -1,6 +1,5 @@ package com.ruoyi.system.domain.vo; import com.ruoyi.system.domain.SysUser; import lombok.Data; import java.util.List; @@ -16,7 +15,7 @@ /** * 用户信息 */ private SysUser user; private SysUserVo user; /** * 角色ID列表 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
@@ -11,8 +11,9 @@ import com.ruoyi.common.excel.core.ExcelListener; import com.ruoyi.common.excel.core.ExcelResult; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.SysUserImportVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; @@ -50,11 +51,11 @@ @Override public void invoke(SysUserImportVo userVo, AnalysisContext context) { SysUser user = this.userService.selectUserByUserName(userVo.getUserName()); SysUserVo sysUser = this.userService.selectUserByUserName(userVo.getUserName()); try { // 验证是否存在这个用户 if (ObjectUtil.isNull(user)) { user = BeanUtil.toBean(userVo, SysUser.class); if (ObjectUtil.isNull(sysUser)) { SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); ValidatorUtils.validate(user); user.setPassword(password); user.setCreateBy(operUserId); @@ -62,8 +63,8 @@ successNum++; successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); } else if (isUpdateSupport) { Long userId = user.getUserId(); user = BeanUtil.toBean(userVo, SysUser.class); Long userId = sysUser.getUserId(); SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); user.setUserId(userId); ValidatorUtils.validate(user); userService.checkUserAllowed(user); @@ -74,11 +75,11 @@ successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功"); } else { failureNum++; failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(user.getUserName()).append(" 已存在"); failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在"); } } catch (Exception e) { failureNum++; String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; String msg = "<br/>" + failureNum + "、账号 " + sysUser.getUserName() + " 导入失败:"; failureMsg.append(msg).append(e.getMessage()); log.error(msg, e); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.mybatis.annotation.DataPermission; import com.ruoyi.system.domain.SysUser; import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; import com.ruoyi.system.domain.vo.SysUserVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,7 +23,7 @@ @DataColumn(key = "deptName", value = "d.dept_id"), @DataColumn(key = "userName", value = "u.user_id") }) Page<SysUser> selectPageUserList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); Page<SysUserVo> selectPageUserList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); /** * 根据条件分页查询用户列表 @@ -34,7 +35,7 @@ @DataColumn(key = "deptName", value = "d.dept_id"), @DataColumn(key = "userName", value = "u.user_id") }) List<SysUser> selectUserList(@Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); List<SysUserVo> selectUserList(@Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); /** * 根据条件分页查询已配用户角色列表 @@ -46,7 +47,7 @@ @DataColumn(key = "deptName", value = "d.dept_id"), @DataColumn(key = "userName", value = "u.user_id") }) Page<SysUser> selectAllocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); Page<SysUserVo> selectAllocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); /** * 根据条件分页查询未分配用户角色列表 @@ -58,7 +59,7 @@ @DataColumn(key = "deptName", value = "d.dept_id"), @DataColumn(key = "userName", value = "u.user_id") }) Page<SysUser> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); Page<SysUserVo> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); /** * 通过用户名查询用户 @@ -66,7 +67,7 @@ * @param userName 用户名 * @return 用户对象信息 */ SysUser selectUserByUserName(String userName); SysUserVo selectUserByUserName(String userName); /** * 通过手机号查询用户 @@ -74,7 +75,7 @@ * @param phonenumber 手机号 * @return 用户对象信息 */ SysUser selectUserByPhonenumber(String phonenumber); SysUserVo selectUserByPhonenumber(String phonenumber); /** * 通过用户ID查询用户 @@ -82,6 +83,6 @@ * @param userId 用户ID * @return 用户对象信息 */ SysUser selectUserById(Long userId); SysUserVo selectUserById(Long userId); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -2,7 +2,8 @@ import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.SysUserVo; import java.util.List; @@ -14,7 +15,7 @@ public interface ISysUserService { TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery); TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery); /** * 根据条件分页查询用户列表 @@ -22,7 +23,7 @@ * @param user 用户信息 * @return 用户信息集合信息 */ List<SysUser> selectUserList(SysUser user); List<SysUserVo> selectUserList(SysUserBo user); /** * 根据条件分页查询已分配用户角色列表 @@ -30,7 +31,7 @@ * @param user 用户信息 * @return 用户信息集合信息 */ TableDataInfo<SysUser> selectAllocatedList(SysUser user, PageQuery pageQuery); TableDataInfo<SysUserVo> selectAllocatedList(SysUserBo user, PageQuery pageQuery); /** * 根据条件分页查询未分配用户角色列表 @@ -38,7 +39,7 @@ * @param user 用户信息 * @return 用户信息集合信息 */ TableDataInfo<SysUser> selectUnallocatedList(SysUser user, PageQuery pageQuery); TableDataInfo<SysUserVo> selectUnallocatedList(SysUserBo user, PageQuery pageQuery); /** * 通过用户名查询用户 @@ -46,7 +47,7 @@ * @param userName 用户名 * @return 用户对象信息 */ SysUser selectUserByUserName(String userName); SysUserVo selectUserByUserName(String userName); /** * 通过手机号查询用户 @@ -54,7 +55,7 @@ * @param phonenumber 手机号 * @return 用户对象信息 */ SysUser selectUserByPhonenumber(String phonenumber); SysUserVo selectUserByPhonenumber(String phonenumber); /** * 通过用户ID查询用户 @@ -62,7 +63,7 @@ * @param userId 用户ID * @return 用户对象信息 */ SysUser selectUserById(Long userId); SysUserVo selectUserById(Long userId); /** * 根据用户ID查询用户所属角色组 @@ -86,7 +87,7 @@ * @param user 用户信息 * @return 结果 */ String checkUserNameUnique(SysUser user); String checkUserNameUnique(SysUserBo user); /** * 校验手机号码是否唯一 @@ -94,7 +95,7 @@ * @param user 用户信息 * @return 结果 */ String checkPhoneUnique(SysUser user); String checkPhoneUnique(SysUserBo user); /** * 校验email是否唯一 @@ -102,14 +103,14 @@ * @param user 用户信息 * @return 结果 */ String checkEmailUnique(SysUser user); String checkEmailUnique(SysUserBo user); /** * 校验用户是否允许操作 * * @param user 用户信息 */ void checkUserAllowed(SysUser user); void checkUserAllowed(SysUserBo user); /** * 校验用户是否有数据权限 @@ -124,7 +125,7 @@ * @param user 用户信息 * @return 结果 */ int insertUser(SysUser user); int insertUser(SysUserBo user); /** * 注册用户信息 @@ -132,7 +133,7 @@ * @param user 用户信息 * @return 结果 */ boolean registerUser(SysUser user); boolean registerUser(SysUserBo user); /** * 修改用户信息 @@ -140,7 +141,7 @@ * @param user 用户信息 * @return 结果 */ int updateUser(SysUser user); int updateUser(SysUserBo user); /** * 用户授权角色 @@ -156,7 +157,7 @@ * @param user 用户信息 * @return 结果 */ int updateUserStatus(SysUser user); int updateUserStatus(SysUserBo user); /** * 修改用户基本信息 @@ -164,7 +165,7 @@ * @param user 用户信息 * @return 结果 */ int updateUserProfile(SysUser user); int updateUserProfile(SysUserBo user); /** * 修改用户头像 @@ -181,7 +182,7 @@ * @param user 用户信息 * @return 结果 */ int resetPwd(SysUser user); int resetPwd(SysUserBo user); /** * 重置用户密码 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -8,31 +8,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.log.event.LogininforEvent; import com.ruoyi.common.core.domain.dto.RoleDTO; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.XcxLoginUser; import com.ruoyi.common.core.enums.DeviceType; import com.ruoyi.common.core.enums.LoginType; import com.ruoyi.common.core.enums.UserStatus; import com.ruoyi.system.domain.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.XcxLoginUser; import com.ruoyi.common.core.exception.user.CaptchaException; import com.ruoyi.common.core.exception.user.CaptchaExpireException; import com.ruoyi.common.core.exception.user.UserException; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.MessageUtils; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.*; import com.ruoyi.common.log.event.LogininforEvent; import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.mapper.SysUserMapper; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import jakarta.servlet.http.HttpServletRequest; import java.time.Duration; import java.util.List; import java.util.function.Supplier; @@ -73,7 +70,7 @@ if (captchaEnabled) { validateCaptcha(username, code, uuid, request); } SysUser user = loadUserByUsername(username); SysUserVo user = loadUserByUsername(username); checkLogin(LoginType.PASSWORD, username, () -> !BCrypt.checkpw(password, user.getPassword())); // 此处可根据登录用户的数据不同 自行创建 loginUser LoginUser loginUser = buildLoginUser(user); @@ -87,7 +84,7 @@ public String smsLogin(String phonenumber, String smsCode) { // 通过手机号查找用户 SysUser user = loadUserByPhonenumber(phonenumber); SysUserVo user = loadUserByPhonenumber(phonenumber); checkLogin(LoginType.SMS, user.getUserName(), () -> !validateSmsCode(phonenumber, smsCode)); // 此处可根据登录用户的数据不同 自行创建 loginUser @@ -106,7 +103,7 @@ // todo 以下自行实现 // 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid String openid = ""; SysUser user = loadUserByOpenid(openid); SysUserVo user = loadUserByOpenid(openid); // 此处可根据登录用户的数据不同 自行创建 loginUser XcxLoginUser loginUser = new XcxLoginUser(); @@ -184,7 +181,7 @@ } } private SysUser loadUserByUsername(String username) { private SysUserVo loadUserByUsername(String username) { SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserName, SysUser::getStatus) .eq(SysUser::getUserName, username)); @@ -198,7 +195,7 @@ return userMapper.selectUserByUserName(username); } private SysUser loadUserByPhonenumber(String phonenumber) { private SysUserVo loadUserByPhonenumber(String phonenumber) { SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getPhonenumber, SysUser::getStatus) .eq(SysUser::getPhonenumber, phonenumber)); @@ -212,10 +209,10 @@ return userMapper.selectUserByPhonenumber(phonenumber); } private SysUser loadUserByOpenid(String openid) { private SysUserVo loadUserByOpenid(String openid) { // 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户 // todo 自行实现 userService.selectUserByOpenid(openid); SysUser user = new SysUser(); SysUserVo user = new SysUserVo(); if (ObjectUtil.isNull(user)) { log.info("登录用户:{} 不存在.", openid); // todo 用户不存在 业务逻辑自行实现 @@ -229,14 +226,14 @@ /** * 构建登录用户 */ private LoginUser buildLoginUser(SysUser user) { private LoginUser buildLoginUser(SysUserVo user) { LoginUser loginUser = new LoginUser(); loginUser.setUserId(user.getUserId()); loginUser.setDeptId(user.getDeptId()); loginUser.setUsername(user.getUserName()); loginUser.setUserType(user.getUserType()); loginUser.setMenuPermission(permissionService.getMenuPermission(user)); loginUser.setRolePermission(permissionService.getRolePermission(user)); loginUser.setMenuPermission(permissionService.getMenuPermission(user.getUserId(), user.isAdmin())); loginUser.setRolePermission(permissionService.getRolePermission(user.getUserId(), user.isAdmin())); loginUser.setDeptName(ObjectUtil.isNull(user.getDept()) ? "" : user.getDept().getDeptName()); List<RoleDTO> roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class); loginUser.setRoles(roles); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java
@@ -1,8 +1,7 @@ package com.ruoyi.system.service; import cn.hutool.core.collection.CollUtil; import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.vo.SysRoleVo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -25,16 +24,17 @@ /** * 获取角色数据权限 * * @param user 用户信息 * @param userId 用户id * @param isAdmin 是否管理员 * @return 角色权限信息 */ public Set<String> getRolePermission(SysUser user) { public Set<String> getRolePermission(Long userId, boolean isAdmin) { Set<String> roles = new HashSet<>(); // 管理员拥有所有权限 if (user.isAdmin()) { if (isAdmin) { roles.add("admin"); } else { roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); roles.addAll(roleService.selectRolePermissionByUserId(userId)); } return roles; } @@ -42,25 +42,26 @@ /** * 获取菜单数据权限 * * @param user 用户信息 * @param userId 用户id * @param isAdmin 是否管理员 * @return 菜单权限信息 */ public Set<String> getMenuPermission(SysUser user) { public Set<String> getMenuPermission(Long userId, boolean isAdmin) { Set<String> perms = new HashSet<>(); // 管理员拥有所有权限 if (user.isAdmin()) { if (isAdmin) { perms.add("*:*:*"); } else { List<SysRole> roles = user.getRoles(); List<SysRoleVo> roles = roleService.selectRolesByUserId(userId); if (CollUtil.isNotEmpty(roles)) { // 多角色设置permissions属性,以便数据权限匹配权限 for (SysRole role : roles) { for (SysRoleVo role : roles) { Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); role.setPermissions(rolePerms); perms.addAll(rolePerms); } } else { perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); perms.addAll(menuService.selectMenuPermsByUserId(userId)); } } return perms; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
@@ -4,22 +4,21 @@ import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.log.event.LogininforEvent; import com.ruoyi.common.core.enums.UserType; import com.ruoyi.system.domain.SysUser; import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.core.enums.UserType; import com.ruoyi.common.core.exception.user.CaptchaException; import com.ruoyi.common.core.exception.user.CaptchaExpireException; import com.ruoyi.common.core.exception.user.UserException; import com.ruoyi.common.core.utils.MessageUtils; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.log.event.LogininforEvent; import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.system.domain.bo.SysUserBo; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import jakarta.servlet.http.HttpServletRequest; /** * 注册校验方法 @@ -48,7 +47,7 @@ if (captchaEnabled) { validateCaptcha(username, registerBody.getCode(), registerBody.getUuid(), request); } SysUser sysUser = new SysUser(); SysUserBo sysUser = new SysUserBo(); sysUser.setUserName(username); sysUser.setNickName(username); sysUser.setPassword(BCrypt.hashpw(password)); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
@@ -9,9 +9,9 @@ import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.bo.SysNoticeBo; import com.ruoyi.system.domain.vo.SysNoticeVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.mapper.SysNoticeMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.ISysNoticeService; @@ -68,7 +68,7 @@ lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle()); lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType()); if (StringUtils.isNotBlank(bo.getCreateByName())) { SysUser sysUser = userMapper.selectUserByUserName(bo.getCreateByName()); SysUserVo sysUser = userMapper.selectUserByUserName(bo.getCreateByName()); lqw.eq(SysNotice::getCreateBy, ObjectUtil.isNotNull(sysUser) ? sysUser.getUserId() : null); } return lqw; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; @@ -19,9 +20,14 @@ import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.mybatis.helper.DataBaseHelper; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.SysDept; import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.SysPostVo; import com.ruoyi.system.domain.vo.SysRoleVo; import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysUserService; import lombok.RequiredArgsConstructor; @@ -51,8 +57,8 @@ private final SysUserPostMapper userPostMapper; @Override public TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery) { Page<SysUser> page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) { Page<SysUserVo> page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); return TableDataInfo.build(page); } @@ -63,11 +69,11 @@ * @return 用户信息集合信息 */ @Override public List<SysUser> selectUserList(SysUser user) { public List<SysUserVo> selectUserList(SysUserBo user) { return baseMapper.selectUserList(this.buildQueryWrapper(user)); } private Wrapper<SysUser> buildQueryWrapper(SysUser user) { private Wrapper<SysUser> buildQueryWrapper(SysUserBo user) { Map<String, Object> params = user.getParams(); QueryWrapper<SysUser> wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) @@ -95,14 +101,14 @@ * @return 用户信息集合信息 */ @Override public TableDataInfo<SysUser> selectAllocatedList(SysUser user, PageQuery pageQuery) { 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()); Page<SysUser> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper); Page<SysUserVo> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper); return TableDataInfo.build(page); } @@ -113,7 +119,7 @@ * @return 用户信息集合信息 */ @Override public TableDataInfo<SysUser> selectUnallocatedList(SysUser user, PageQuery pageQuery) { public TableDataInfo<SysUserVo> selectUnallocatedList(SysUserBo user, PageQuery pageQuery) { List<Long> userIds = userRoleMapper.selectUserIdsByRoleId(user.getRoleId()); QueryWrapper<SysUser> wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) @@ -121,7 +127,7 @@ .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()); Page<SysUser> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper); Page<SysUserVo> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper); return TableDataInfo.build(page); } @@ -132,7 +138,7 @@ * @return 用户对象信息 */ @Override public SysUser selectUserByUserName(String userName) { public SysUserVo selectUserByUserName(String userName) { return baseMapper.selectUserByUserName(userName); } @@ -143,7 +149,7 @@ * @return 用户对象信息 */ @Override public SysUser selectUserByPhonenumber(String phonenumber) { public SysUserVo selectUserByPhonenumber(String phonenumber) { return baseMapper.selectUserByPhonenumber(phonenumber); } @@ -154,7 +160,7 @@ * @return 用户对象信息 */ @Override public SysUser selectUserById(Long userId) { public SysUserVo selectUserById(Long userId) { return baseMapper.selectUserById(userId); } @@ -195,7 +201,7 @@ * @return 结果 */ @Override public String checkUserNameUnique(SysUser user) { public String checkUserNameUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getUserName, user.getUserName()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); @@ -211,7 +217,7 @@ * @param user 用户信息 */ @Override public String checkPhoneUnique(SysUser user) { public String checkPhoneUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getPhonenumber, user.getPhonenumber()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); @@ -227,7 +233,7 @@ * @param user 用户信息 */ @Override public String checkEmailUnique(SysUser user) { public String checkEmailUnique(SysUserBo user) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getEmail, user.getEmail()) .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); @@ -243,7 +249,7 @@ * @param user 用户信息 */ @Override public void checkUserAllowed(SysUser user) { public void checkUserAllowed(SysUserBo user) { if (ObjectUtil.isNotNull(user.getUserId()) && user.isAdmin()) { throw new ServiceException("不允许操作超级管理员用户"); } @@ -257,9 +263,9 @@ @Override public void checkUserDataScope(Long userId) { if (!LoginHelper.isAdmin()) { SysUser user = new SysUser(); SysUserBo user = new SysUserBo(); user.setUserId(userId); List<SysUser> users = this.selectUserList(user); List<SysUserVo> users = this.selectUserList(user); if (CollUtil.isEmpty(users)) { throw new ServiceException("没有权限访问用户数据!"); } @@ -274,9 +280,10 @@ */ @Override @Transactional(rollbackFor = Exception.class) public int insertUser(SysUser user) { public int insertUser(SysUserBo user) { SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); // 新增用户信息 int rows = baseMapper.insert(user); int rows = baseMapper.insert(sysUser); // 新增用户岗位关联 insertUserPost(user); // 新增用户与角色管理 @@ -291,10 +298,11 @@ * @return 结果 */ @Override public boolean registerUser(SysUser user) { public boolean registerUser(SysUserBo user) { user.setCreateBy(user.getUserId()); user.setUpdateBy(user.getUserId()); return baseMapper.insert(user) > 0; SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); return baseMapper.insert(sysUser) > 0; } /** @@ -305,7 +313,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) public int updateUser(SysUser user) { public int updateUser(SysUserBo user) { Long userId = user.getUserId(); // 删除用户与角色关联 userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); @@ -315,7 +323,8 @@ userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId)); // 新增用户与岗位管理 insertUserPost(user); return baseMapper.updateById(user); SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); return baseMapper.updateById(sysUser); } /** @@ -339,8 +348,9 @@ * @return 结果 */ @Override public int updateUserStatus(SysUser user) { return baseMapper.updateById(user); public int updateUserStatus(SysUserBo user) { SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); return baseMapper.updateById(sysUser); } /** @@ -350,8 +360,9 @@ * @return 结果 */ @Override public int updateUserProfile(SysUser user) { return baseMapper.updateById(user); public int updateUserProfile(SysUserBo user) { SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); return baseMapper.updateById(sysUser); } /** @@ -376,8 +387,9 @@ * @return 结果 */ @Override public int resetPwd(SysUser user) { return baseMapper.updateById(user); public int resetPwd(SysUserBo user) { SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class); return baseMapper.updateById(sysUser); } /** @@ -400,7 +412,7 @@ * * @param user 用户对象 */ public void insertUserRole(SysUser user) { public void insertUserRole(SysUserBo user) { this.insertUserRole(user.getUserId(), user.getRoleIds()); } @@ -409,7 +421,7 @@ * * @param user 用户对象 */ public void insertUserPost(SysUser user) { public void insertUserPost(SysUserBo user) { Long[] posts = user.getPostIds(); if (ArrayUtil.isNotEmpty(posts)) { // 新增用户与岗位管理 @@ -468,7 +480,7 @@ @Transactional(rollbackFor = Exception.class) public int deleteUserByIds(Long[] userIds) { for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); checkUserAllowed(new SysUserBo(userId)); checkUserDataScope(userId); } List<Long> ids = List.of(userIds); ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -5,18 +5,18 @@ <mapper namespace="com.ruoyi.system.mapper.SysUserMapper"> <!-- 多结构嵌套自动映射需带上每个实体的主键id 否则映射会失败 --> <resultMap type="com.ruoyi.system.domain.SysUser" id="SysUserResult"> <resultMap type="com.ruoyi.system.domain.vo.SysUserVo" id="SysUserResult"> <id property="userId" column="user_id"/> <result property="deptId" column="dept_id"/> <association property="dept" column="dept_id" resultMap="deptResult"/> <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/> </resultMap> <resultMap id="deptResult" type="com.ruoyi.system.domain.SysDept"> <resultMap id="deptResult" type="com.ruoyi.system.domain.vo.SysDeptVo"> <id property="deptId" column="dept_id"/> </resultMap> <resultMap id="RoleResult" type="com.ruoyi.system.domain.SysRole"> <resultMap id="RoleResult" type="com.ruoyi.system.domain.vo.SysRoleVo"> <id property="roleId" column="role_id"/> </resultMap>