From 826976ff37a83fc8fec64aeb19727d69afc6fcfa Mon Sep 17 00:00:00 2001 From: heheng <475597332@qq.com> Date: 星期四, 31 七月 2025 16:05:24 +0800 Subject: [PATCH] 修改人员角色绑定 --- multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysMenuController.java | 22 +++++++++++ multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java | 40 +++++++++++++++----- multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java | 5 ++ multi-common/src/main/java/com/gkhy/exam/common/domain/model/LoginUserDetails.java | 1 multi-system/src/main/resources/mapper/system/SysUserMapper.xml | 14 ++++++ multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysRoleController.java | 34 +++++++++++++++++ 6 files changed, 105 insertions(+), 11 deletions(-) diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysMenuController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysMenuController.java index 7311532..d9d3655 100644 --- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysMenuController.java +++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysMenuController.java @@ -7,6 +7,10 @@ import com.gkhy.exam.common.domain.entity.SysMenu; import com.gkhy.exam.common.utils.StringUtils; import com.gkhy.exam.system.service.ISysMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -24,6 +28,7 @@ * * @author expert */ +@Api(tags = "菜单信息") @RestController @RequestMapping("/system/menu") public class SysMenuController @@ -35,6 +40,7 @@ * 获取菜单列表 */ //@PreAuthorize("hasAnyAuthority('system:menu:list')") + @ApiOperation(value = "获取菜单列表") @GetMapping("/list") public CommonResult list(SysMenu menu) { @@ -46,6 +52,10 @@ * 根据菜单编号获取详细信息 */ //@PreAuthorize("hasAnyAuthority('system:menu:query')") + @ApiOperation(value = "根据菜单编号获取详细信息") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "menuId", dataType = "int", required = true, value = "menuId"), + }) @GetMapping(value = "/{menuId}") public CommonResult getInfo(@PathVariable Long menuId) { @@ -56,6 +66,7 @@ * 获取菜单下拉树列表 */ @GetMapping("/treeselect") + @ApiOperation(value = "获取菜单下拉树列表") public CommonResult treeselect(SysMenu menu) { List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); @@ -65,6 +76,10 @@ /** * 加载对应角色菜单列表树 */ + @ApiOperation(value = "加载对应角色菜单列表树") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "roleId", dataType = "int", required = true, value = "roleId"), + }) @GetMapping(value = "/roleMenuTreeselect/{roleId}") public CommonResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) { @@ -79,6 +94,7 @@ * 新增菜单 */ //@PreAuthorize("hasAnyAuthority('system:menu:add')") + @ApiOperation(value = "新增菜单") @PostMapping public CommonResult add(@Validated @RequestBody SysMenu menu) { @@ -100,6 +116,7 @@ //@PreAuthorize("hasAnyAuthority('system:menu:edit')") @PutMapping + @ApiOperation(value = "修改菜单") public CommonResult edit(@Validated @RequestBody SysMenu menu) { if (!menuService.checkMenuNameUnique(menu)) @@ -122,7 +139,12 @@ * 删除菜单 */ //@PreAuthorize("hasAnyAuthority('system:menu:remove')") + @ApiOperation(value = "删除菜单") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "menuId", dataType = "int", required = true, value = "menuId"), + }) @DeleteMapping("/{menuId}") + public CommonResult remove(@PathVariable("menuId") Long menuId) { if (menuService.hasChildByMenuId(menuId)) diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysRoleController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysRoleController.java index 97bcde3..cb34f51 100644 --- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysRoleController.java +++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysRoleController.java @@ -16,6 +16,10 @@ import com.gkhy.exam.system.domain.SysUserRole; import com.gkhy.exam.system.service.ISysRoleService; import com.gkhy.exam.system.service.SysUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -35,6 +39,7 @@ * * @author expert */ +@Api(tags = "角色信息") @RestController @RequestMapping("/system/role") public class SysRoleController @@ -56,6 +61,7 @@ // @PreAuthorize("hasAnyAuthority('system:role:list')") @GetMapping("/list") + @ApiOperation(value = "获取角色列表") public CommonResult list(SysRole role) { @@ -76,7 +82,11 @@ * 根据角色编号获取详细信息 */ //@PreAuthorize("hasAnyAuthority('system:role:query')") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "roleId", dataType = "int", required = true, value = "roleId"), + }) @GetMapping(value = "/{roleId}") + @ApiOperation(value = "根据角色编号获取详细信息") public CommonResult getInfo(@PathVariable Long roleId) { roleService.checkRoleDataScope(roleId); @@ -89,6 +99,7 @@ //@PreAuthorize("hasAnyAuthority('system:role:add')") //@Log(title = "角色管理", businessType = BusinessType.INSERT) @PostMapping + @ApiOperation(value = "新增角色") public CommonResult add(@Validated @RequestBody SysRole role) { if (!roleService.checkRoleNameUnique(role)) @@ -110,6 +121,7 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") //@Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping + @ApiOperation(value = "修改保存角色") public CommonResult edit(@Validated @RequestBody SysRole role) { roleService.checkRoleAllowed(role); @@ -146,6 +158,7 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") //@Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/dataScope") + @ApiOperation(value = "修改保存数据权限") public CommonResult dataScope(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); @@ -159,6 +172,7 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") // @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") + @ApiOperation(value = "状态修改") public CommonResult changeStatus(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); @@ -172,6 +186,10 @@ */ //@PreAuthorize("hasAnyAuthority('system:role:remove')") @Log(title = "角色管理", businessType = BusinessType.DELETE) + @ApiOperation(value = "删除角色") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "roleIds", dataType = "array", required = true, value = "roleIds"), + }) @DeleteMapping("/{roleIds}") public CommonResult remove(@PathVariable Long[] roleIds) { @@ -182,6 +200,7 @@ * 获取角色选择框列表 */ //@PreAuthorize("hasAnyAuthority('system:role:query')") + @ApiOperation(value = "获取角色选择框列表") @GetMapping("/optionselect") public CommonResult optionselect() { @@ -192,6 +211,7 @@ * 查询已分配用户角色列表 */ //@PreAuthorize("hasAnyAuthority('system:role:list')") + @ApiOperation(value = "查询已分配用户角色列表") @GetMapping("/authUser/allocatedList") public CommonResult allocatedList(SysUser user) { @@ -205,6 +225,8 @@ */ //@PreAuthorize("hasAnyAuthority('system:role:list')") @GetMapping("/authUser/unallocatedList") + @ApiOperation(value = "查询未分配用户角色列表") + public CommonResult unallocatedList(SysUser user) { startPage(); @@ -218,6 +240,7 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancel") + @ApiOperation(value = "取消授权用户") public CommonResult cancelAuthUser(@RequestBody SysUserRole userRole) { return CommonResult.success(roleService.deleteAuthUser(userRole)); @@ -229,6 +252,11 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") + @ApiOperation(value = "批量取消授权用户") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "userIds", dataType = "array", required = true, value = "用户id数组"), + @ApiImplicitParam(paramType = "query", name = "roleId", dataType = "int", required = true, value = "角色id"), + }) public CommonResult cancelAuthUserAll(Long roleId, Long[] userIds) { return CommonResult.success(roleService.deleteAuthUsers(roleId, userIds)); @@ -240,6 +268,11 @@ //@PreAuthorize("hasAnyAuthority('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") + @ApiOperation(value = "批量选择用户授权") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "userIds", dataType = "array", required = true, value = "用户id数组"), + @ApiImplicitParam(paramType = "query", name = "roleId", dataType = "int", required = true, value = "角色id"), + }) public CommonResult selectAuthUserAll(Long roleId, Long[] userIds) { roleService.checkRoleDataScope(roleId); @@ -251,6 +284,7 @@ */ //@PreAuthorize("hasAnyAuthority('system:role:query')") @GetMapping(value = "/deptTree/{roleId}") + @ApiOperation(value = "获取对应角色部门树列表") public CommonResult deptTree(@PathVariable("roleId") Long roleId) { Map<String,Object> ajax = new HashMap<>(); diff --git a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java index 89c1576..d0878a5 100644 --- a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java +++ b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java @@ -16,6 +16,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; +import java.util.Set; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; @@ -164,4 +165,8 @@ @TableField(exist = false) private List<SysRole> roles; +// @TableField(exist = false) +// @ApiModelProperty("角色ids") +// private Set<Long> roleIds; + } diff --git a/multi-common/src/main/java/com/gkhy/exam/common/domain/model/LoginUserDetails.java b/multi-common/src/main/java/com/gkhy/exam/common/domain/model/LoginUserDetails.java index 8d255f7..645597a 100644 --- a/multi-common/src/main/java/com/gkhy/exam/common/domain/model/LoginUserDetails.java +++ b/multi-common/src/main/java/com/gkhy/exam/common/domain/model/LoginUserDetails.java @@ -24,6 +24,7 @@ private List<GrantedAuthority> authorities; + public LoginUserDetails(SysUser user,List<GrantedAuthority> authorities) { this.user = user; this.authorities=authorities; diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java index bd08a00..04d642e 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java @@ -7,6 +7,7 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.constant.CacheConstant; import com.gkhy.exam.common.constant.UserConstant; +import com.gkhy.exam.common.domain.entity.SysRole; import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.enums.UserTypeEnum; import com.gkhy.exam.common.exception.ApiException; @@ -26,10 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.validation.Validator; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; @@ -153,12 +151,8 @@ user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword()))); int row=baseMapper.insert(user); - List<SysUserRole> userRoleList = new ArrayList<>(); - SysUserRole sysUserRole = new SysUserRole(); - sysUserRole.setUserId(user.getId()); - sysUserRole.setRoleId(2L); - userRoleList.add(sysUserRole); - userRoleMapper.batchUserRole(userRoleList); + + batchSaveRole(user.getRoles(),user.getId(),false); exStudentService.insertStudent(exStudent); @@ -168,6 +162,30 @@ return row; } + public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate){ + + if (isUpdate){ + userRoleMapper.deleteUserRoleByUserId(userId); + } + + List<SysUserRole> userRoleList = new ArrayList<>(); + if(roleIds != null && !roleIds.isEmpty()){ + + for (SysRole roleId : roleIds) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(roleId.getRoleId()); + userRoleList.add(sysUserRole); + } + }else { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(2L); + userRoleList.add(sysUserRole); + } + userRoleMapper.batchUserRole(userRoleList); + } + @Override public int updateUser(SysUser user) { checkRequestData(user); @@ -175,6 +193,8 @@ user.setUpdateBy(SecurityUtils.getUsername()); user.setPassword(null); int row=baseMapper.updateById(user); + batchSaveRole(user.getRoles(),user.getId(),true); + if(row<1){ throw new ApiException("更新用户信息失败"); } diff --git a/multi-system/src/main/resources/mapper/system/SysUserMapper.xml b/multi-system/src/main/resources/mapper/system/SysUserMapper.xml index de62190..4c0eb6f 100644 --- a/multi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/multi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -39,6 +39,12 @@ </resultMap> + <resultMap id="SysUserVoResult" type="com.gkhy.exam.common.domain.entity.SysUser" extends="SysUserResult"> + <collection property="roles" ofType="com.gkhy.exam.common.domain.entity.SysRole" column="userId = id" select="getReponseData"> + <result property="roleId" column="role_id" /> + <result property="roleName" column="role_name" /> + </collection> + </resultMap> <delete id="deleteUserById" parameterType="java.lang.Long"> @@ -51,7 +57,12 @@ where username=#{username} and del_flag=0 limit 1 </select> - <select id="userList" resultMap="SysUserResult"> + <select id="getReponseData" resultType="com.gkhy.exam.common.domain.entity.SysRole"> + select r.role_name,r.role_id from sys_user_role ur + left join sys_role r on r.role_id=ur.role_id + where ur.user_id = #{userId} + </select> + <select id="userList" resultMap="SysUserVoResult"> select u.id,u.username,u.name,u.user_type,u.phone,u.parent_id,u.company_id,u.sex,u.status,u.del_flag,u.version, u.login_ip,u.login_date,u.create_by,u.create_time,u.remark,c.name as company_name,su.name as parent_name, u.dept_id,d.dept_name,u.duty,u.post,u.id_card,u.entry_time,u.resign_time,u.person_type,u.age,u.positional @@ -59,6 +70,7 @@ left join sys_company c on c.id=u.company_id left join sys_user su on su.id=u.parent_id and u.parent_id!=0 left join sys_dept d on d.dept_id=u.dept_id + <where> and u.del_flag = 0 <if test="username != null and username != ''"> -- Gitblit v1.9.2