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