From 364d9d80dc3856617bc0f77abff2d59bac931874 Mon Sep 17 00:00:00 2001 From: rqian <1206436827@qq.com> Date: Wed, 6 May 2026 15:09:13 +0800 Subject: [PATCH] #update --- .../controller/system/SysLoginController.java | 2 + .../controller/system/SysRoleController.java | 12 +++ .../controller/system/SysUserController.java | 93 +++++++------------ .../com/maibu/core/domain/entity/SysRole.java | 2 + .../com/maibu/core/domain/entity/SysSite.java | 2 +- .../maibu/core/domain/model/LoginUser.java | 3 +- .../web/service/UserDetailsServiceImpl.java | 2 +- .../java/com/maibu/mapper/SysRoleMapper.java | 2 + .../com/maibu/service/ISysRoleService.java | 7 ++ .../com/maibu/service/SysSiteService.java | 3 + .../service/impl/SysRoleServiceImpl.java | 11 +++ .../main/resources/system/SysRoleMapper.xml | 41 +++++++- 12 files changed, 115 insertions(+), 65 deletions(-) diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java index de3b59a..1365e3f 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java @@ -166,6 +166,8 @@ public class SysLoginController { ajax.put("nickName", nickName); if (sysUser != null) { ajax.put("roleId",sysUser.getRoleId()); + ajax.put("siteId",sysUser.getSiteId()); + ajax.put("orgId",sysUser.getOrgId()); aiChatNum = sysUser.getAiChatNum(); sysUser.setSessionId(split[1]); sysUser.setDisplayPassword(password); diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysRoleController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysRoleController.java index 7e17daa..d39dc45 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysRoleController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysRoleController.java @@ -16,6 +16,7 @@ import com.maibu.service.ISysDeptService; import com.maibu.service.ISysRoleService; import com.maibu.service.ISysUserService; import com.maibu.utils.MessageUtils; +import com.maibu.utils.SecurityUtils; import com.maibu.utils.StringUtils; import com.maibu.utils.collection.CollectionUtils; import com.maibu.utils.poi.ExcelUtil; @@ -187,6 +188,17 @@ public class SysRoleController extends BaseController { return success(roleService.selectRoleAll()); } + /** + * 获取角色选择框列表 + */ + @ApiOperation("获取角色选择框列表") + @GetMapping("/selectAllocatableRole") + public AjaxResult selectAllocatableRole() { + Long roleId = SecurityUtils.getLoginUser() == null? null:SecurityUtils.getLoginUser().getRoleId(); + return success(roleService.selectAllocatableRole(roleId)); + } + + /** * 查询已分配用户角色列表 */ diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysUserController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysUserController.java index 42c837b..485e017 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysUserController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysUserController.java @@ -37,8 +37,7 @@ import org.springframework.web.multipart.MultipartFile; @Api(tags = "用户管理") @RestController @RequestMapping("/system/user") -public class SysUserController extends BaseController -{ +public class SysUserController extends BaseController { @Autowired private ISysUserService userService; @@ -54,8 +53,7 @@ public class SysUserController extends BaseController @ApiOperation("获取用户分页列表") // @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") - public TableDataInfo list(SysUser user) - { + public TableDataInfo list(SysUser user) { startPage(); // if (null == user.getDeptId()) { // user.setDeptId(getLoginUser().getDeptId()); @@ -68,8 +66,7 @@ public class SysUserController extends BaseController @Log(title = "用户管理", businessType = BusinessType.EXPORT) // @PreAuthorize("@ss.hasPermi('system:user:export')") @PostMapping("/export") - public void export(HttpServletResponse response, SysUser user) - { + public void export(HttpServletResponse response, SysUser user) { if (null == user.getDeptId()) { user.setDeptId(getLoginUser().getDeptId()); } @@ -82,8 +79,7 @@ public class SysUserController extends BaseController @Log(title = "用户管理", businessType = BusinessType.IMPORT) // @PreAuthorize("@ss.hasPermi('system:user:import')") @PostMapping("/importData") - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil util = new ExcelUtil(SysUser.class); List userList = util.importExcel(file.getInputStream()); String operName = getUsername(); @@ -94,8 +90,7 @@ public class SysUserController extends BaseController @ApiOperation("下载用户导入模板") @PostMapping("/importTemplate") - public void importTemplate(HttpServletResponse response) - { + public void importTemplate(HttpServletResponse response) { ExcelUtil util = new ExcelUtil(SysUser.class); util.importTemplateExcel(response, "用户数据"); } @@ -105,16 +100,14 @@ public class SysUserController extends BaseController */ @ApiOperation("根据用户编号获取详细信息") // @PreAuthorize("@ss.hasPermi('system:user:query')") - @GetMapping(value = { "/", "/{userId}" }) - public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) - { + @GetMapping(value = {"/", "/{userId}"}) + public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) { userService.checkUserDataScope(userId); AjaxResult ajax = AjaxResult.success(); // List roles = roleService.selectRoleAll(); // ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); // ajax.put("posts", postService.selectPostAll()); - if (StringUtils.isNotNull(userId)) - { + if (StringUtils.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); ajax.put(AjaxResult.DATA_TAG, sysUser); // ajax.put("postIds", postService.selectPostListByUserId(userId)); @@ -135,20 +128,14 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:add')") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysUser user) - { - if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) - { + public AjaxResult add(@Validated @RequestBody SysUser user) { + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.add.failed.name.exists"), user.getUserName())); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) - { + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.add.failed.phone.exists"), user.getUserName())); - } - else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) - { + } else if (StringUtils.isNotEmpty(user.getEmail()) + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.add.failed.email.exists"), user.getUserName())); } user.setCreateBy(getUsername()); @@ -165,26 +152,22 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysUser user) - { + public AjaxResult edit(@Validated @RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); - if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) - { + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.update.failed.name.exists"), user.getUserName())); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) - { + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.update.failed.phone.exists"), user.getUserName())); - } - else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) - { + } else if (StringUtils.isNotEmpty(user.getEmail()) + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { return error(StringUtils.format(MessageUtils.message("user.update.failed.email.exists"), user.getUserName())); } user.setUpdateBy(getUsername()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + if (!StringUtils.isEmpty(user.getPassword())) { + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + } user.setDisplayPassword(user.getPassword()); return toAjax(userService.updateUser(user)); } @@ -196,10 +179,8 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") - public AjaxResult remove(@PathVariable Long[] userIds) - { - if (ArrayUtils.contains(userIds, getUserId())) - { + public AjaxResult remove(@PathVariable Long[] userIds) { + if (ArrayUtils.contains(userIds, getUserId())) { return error(MessageUtils.message("user.delete.failed")); } return toAjax(userService.deleteUserByIds(userIds)); @@ -212,8 +193,7 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") - public AjaxResult resetPwd(@RequestBody SysUser user) - { + public AjaxResult resetPwd(@RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); @@ -229,8 +209,7 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysUser user) - { + public AjaxResult changeStatus(@RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); user.setUpdateBy(getUsername()); @@ -243,8 +222,7 @@ public class SysUserController extends BaseController @ApiOperation("根据用户编号获取授权角色") // @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping("/authRole/{userId}") - public AjaxResult authRole(@PathVariable("userId") Long userId) - { + public AjaxResult authRole(@PathVariable("userId") Long userId) { AjaxResult ajax = AjaxResult.success(); SysUser user = userService.selectUserById(userId); List roles = roleService.selectRolesByUserId(userId); @@ -260,8 +238,7 @@ public class SysUserController extends BaseController // @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.GRANT) @PutMapping("/authRole") - public AjaxResult insertAuthRole(Long userId, Long[] roleIds) - { + public AjaxResult insertAuthRole(Long userId, Long[] roleIds) { userService.checkUserDataScope(userId); userService.insertUserAuth(userId, roleIds); return success(); @@ -273,8 +250,7 @@ public class SysUserController extends BaseController @ApiOperation("获取部门树列表") // @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/deptTree") - public AjaxResult deptTree(SysDept dept) - { + public AjaxResult deptTree(SysDept dept) { return success(deptService.selectDeptTreeList(dept)); } @@ -286,8 +262,7 @@ public class SysUserController extends BaseController @ApiOperation("获取用户分页列表") // @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/listTerminal") - public TableDataInfo listTerminal(SysUser user) - { + public TableDataInfo listTerminal(SysUser user) { startPage(); List list = userService.listTerminal(user); return getDataTable(list); @@ -300,8 +275,7 @@ public class SysUserController extends BaseController @ApiOperation("根据机构id获取当前用户列表") // @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/getByDeptId") - public TableDataInfo getByDeptId() - { + public TableDataInfo getByDeptId() { startPage(); List list = userService.selectByDeptId(); return getDataTable(list); @@ -311,8 +285,7 @@ public class SysUserController extends BaseController * 根据机构id获取当前用户列表 */ @GetMapping("/getByRoleId") - public TableDataInfo getByRoleId(@RequestParam Long id) - { + public TableDataInfo getByRoleId(@RequestParam Long id) { startPage(); List list = userService.selectByRoleId(id); return getDataTable(list); diff --git a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysRole.java b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysRole.java index a8c1262..3c4bf3c 100644 --- a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysRole.java +++ b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysRole.java @@ -113,6 +113,8 @@ public class SysRole extends BaseDO { */ private Boolean siteAccess = false; + private Integer roleLevel; + public SysRole() { diff --git a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysSite.java b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysSite.java index 9f7cb18..70e8129 100644 --- a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysSite.java +++ b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysSite.java @@ -21,7 +21,7 @@ public class SysSite extends BaseDO { private String siteCode; - private String orgId; + private Long orgId; private BigDecimal longitude; diff --git a/maibu-common/src/main/java/com/maibu/core/domain/model/LoginUser.java b/maibu-common/src/main/java/com/maibu/core/domain/model/LoginUser.java index 880dcc7..161a1b2 100644 --- a/maibu-common/src/main/java/com/maibu/core/domain/model/LoginUser.java +++ b/maibu-common/src/main/java/com/maibu/core/domain/model/LoginUser.java @@ -108,11 +108,12 @@ public class LoginUser implements UserDetails { this.permissions = permissions; } - public LoginUser(Long userId, Long deptId, Long orgId, Long siteId, String language, SysUser user, Set permissions) { + public LoginUser(Long userId, Long deptId, Long orgId, Long siteId, Long roleId,String language, SysUser user, Set permissions) { this.userId = userId; this.deptId = deptId; this.orgId = orgId; this.siteId = siteId; + this.roleId = roleId; this.user = user; this.language = language; this.permissions = permissions; diff --git a/maibu-framework/src/main/java/com/maibu/web/service/UserDetailsServiceImpl.java b/maibu-framework/src/main/java/com/maibu/web/service/UserDetailsServiceImpl.java index d8e9b4b..0e92bea 100644 --- a/maibu-framework/src/main/java/com/maibu/web/service/UserDetailsServiceImpl.java +++ b/maibu-framework/src/main/java/com/maibu/web/service/UserDetailsServiceImpl.java @@ -60,6 +60,6 @@ public class UserDetailsServiceImpl implements UserDetailsService public UserDetails createLoginUser(SysUser user) { - return new LoginUser(user.getUserId(), user.getDeptId(), user.getOrgId(),user.getSiteId(),user.getLanguage(), user, permissionService.getMenuPermission(user)); + return new LoginUser(user.getUserId(), user.getDeptId(), user.getOrgId(),user.getSiteId(),user.getRoleId(),user.getLanguage(), user, permissionService.getMenuPermission(user)); } } diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMapper.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMapper.java index 0f24500..a53da34 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMapper.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMapper.java @@ -35,6 +35,8 @@ public interface SysRoleMapper */ public List selectRoleAll(); + public List selectAllocatableRole(Integer roleLevel); + /** * 根据用户ID获取角色选择框列表 * diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysRoleService.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysRoleService.java index 70e5d5d..9c79e8e 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysRoleService.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysRoleService.java @@ -46,6 +46,13 @@ public interface ISysRoleService */ public List selectRoleAll(); + /** + * 查询所有角色 + * + * @return 角色列表 + */ + public List selectAllocatableRole(Long roleId); + /** * 根据用户ID获取角色选择框列表 * diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/SysSiteService.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/SysSiteService.java index db1ea21..41ead82 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/SysSiteService.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/SysSiteService.java @@ -29,6 +29,9 @@ public class SysSiteService { if (site != null && !StringUtils.isEmpty(site.getSiteName())) { queryWrapper.like(SysSite::getSiteName, site.getSiteName()); } + if (site != null && site.getOrgId()!=null) { + queryWrapper.eq(SysSite::getOrgId, site.getOrgId()); + } return sysSiteMapper.selectList(queryWrapper); } diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysRoleServiceImpl.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysRoleServiceImpl.java index 27ca781..659cc13 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysRoleServiceImpl.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysRoleServiceImpl.java @@ -116,6 +116,17 @@ public class SysRoleServiceImpl implements ISysRoleService { return permsSet; } + /** + * 查询所有角色 + * + * @return 角色列表 + */ + @Override + public List selectAllocatableRole(Long roleId) { + SysRole sysRole = roleMapper.selectRoleById(roleId); + return roleMapper.selectAllocatableRole(sysRole.getRoleLevel()); + } + /** * 查询所有角色 * diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMapper.xml index 0ff7ed7..c5da8a2 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMapper.xml @@ -21,11 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, - r.status, r.del_flag, r.create_time, r.remark,r.site_access + r.status, r.del_flag, r.create_time, r.remark,r.site_access,r.role_level from sys_role r left join sys_user_role ur on ur.role_id = r.role_id left join sys_user u on u.user_id = ur.user_id @@ -44,7 +45,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" r.del_flag, r.create_time, r.remark, - r.site_access + r.site_access, + r.role_level, GROUP_CONCAT(srm.menu_id) AS menu_list FROM sys_role r LEFT JOIN sys_user_role ur ON ur.role_id = r.role_id @@ -93,12 +95,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" r.create_time, r.remark, r.site_access, + r.role_level, GROUP_CONCAT(srm.menu_id) AS menu_list FROM sys_role r LEFT JOIN sys_user_role ur ON ur.role_id = r.role_id LEFT JOIN sys_user u ON u.user_id = ur.user_id LEFT JOIN sys_role_menu srm ON srm.role_id = r.role_id where r.del_flag = 0 + + AND r.role_level < #{role_level} + + GROUP BY r.role_id + order by r.role_sort + + + @@ -157,6 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" status, remark, site_access, + role_level, create_by, create_time )values( @@ -170,6 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{status}, #{remark}, #{siteAccess}, + #{roleLevel}, #{createBy}, sysdate() ) @@ -187,6 +223,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" status = #{status}, remark = #{remark}, site_access = #{siteAccess}, + role_level = #{roleLevel}, update_by = #{updateBy}, update_time = sysdate()