SysUserRoleController.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.backendsys.controller.Systems;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.backendsys.aspect.QueryNullCheck;
  4. import com.backendsys.aspect.QueryNullCheckAspect;
  5. import com.backendsys.entity.PageDTO;
  6. import com.backendsys.entity.System.SysUserRoleDTO;
  7. import com.backendsys.service.System.SysUserRoleModuleService;
  8. import com.backendsys.service.System.SysUserRoleService;
  9. import com.backendsys.utils.response.Result;
  10. import com.backendsys.utils.response.ResultEnum;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.security.access.prepost.PreAuthorize;
  13. import org.springframework.validation.annotation.Validated;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.util.HashSet;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.Set;
  19. import java.util.Arrays;
  20. /**
  21. * 系统用户角色
  22. */
  23. @Validated
  24. @RestController
  25. public class SysUserRoleController {
  26. @Autowired
  27. private SysUserRoleService sysUserRoleService;
  28. @Autowired
  29. private SysUserRoleModuleService sysUserRoleModuleService;
  30. // 判断 role.modules: [{ id: 1 }, { id: 2 }],是否有重复值
  31. //public boolean hasDuplicateIds(List<LinkedHashMap<String, Object>> modules) {
  32. // List<Object> ids = CollUtil.getFieldValues(modules, "id");
  33. // return CollUtil.isNotEmpty(ids) && ids.size() != CollUtil.distinct(ids).size();
  34. //}
  35. public boolean hasDuplicateIds(List<Object> ids) {
  36. return CollUtil.isNotEmpty(ids) && ids.size() != CollUtil.distinct(ids).size();
  37. }
  38. // // @Operation(summary = "系统用户角色列表")
  39. // @PreAuthorize("@ss.hasPermi('4.1')")
  40. // @GetMapping("/api/system/user/getUserRole")
  41. // public Result getUserRole(@Validated PageDTO pageDTO, @Validated SysUserRoleDTO sysUserRoleDTO) {
  42. // return Result.success(sysUserRoleService.queryUserRole(pageDTO.getPage_num(), pageDTO.getPage_size(), sysUserRoleDTO));
  43. // }
  44. //@Operation(summary = "系统用户角色详情")
  45. @PreAuthorize("@ss.hasPermi('4.1.1')")
  46. @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
  47. @GetMapping("/api/system/user/getUserRoleDetail")
  48. public Result getUserRoleDetail(@Validated(SysUserRoleDTO.Detail.class) SysUserRoleDTO sysUserRoleDTO) {
  49. return Result.success(QueryNullCheckAspect.getQueryResult());
  50. }
  51. //@Operation(summary = "创建系统用户角色")
  52. @PreAuthorize("@ss.hasPermi('4.1.2')")
  53. @PostMapping("/api/system/user/createUserRole")
  54. public Result createUserRole(@Validated(SysUserRoleDTO.Create.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
  55. // 判断 role.modules 是否重复
  56. if (hasDuplicateIds(sysUserRoleDTO.getModules())) {
  57. return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "模块ID出现重复值");
  58. }
  59. // 创建
  60. return Result.success(sysUserRoleService.insertUserRole(sysUserRoleDTO), "创建成功");
  61. }
  62. //@Operation(summary = "更新系统用户角色")
  63. @PreAuthorize("@ss.hasPermi('4.1.3')")
  64. @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
  65. @PutMapping("/api/system/user/updateUserRole")
  66. public Result updateUserRole(@Validated(SysUserRoleDTO.Update.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
  67. // 判断 role.modules 是否重复
  68. if (hasDuplicateIds(sysUserRoleDTO.getModules())) {
  69. return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "模块ID出现重复值");
  70. }
  71. // 更新
  72. return Result.success(sysUserRoleService.updateUserRole(sysUserRoleDTO), "更新成功");
  73. }
  74. //@Operation(summary = "删除系统用户角色")
  75. @PreAuthorize("@ss.hasPermi('4.1.4')")
  76. @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
  77. @DeleteMapping("/api/system/user/deleteUserRole")
  78. public Result deleteUserRole(@Validated(SysUserRoleDTO.Delete.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
  79. // 如果角色ID: 1管理员, 2游客,则不可删除
  80. Long role_id = sysUserRoleDTO.getRole_id();
  81. Set<Long> filterRoles = new HashSet<>(Arrays.asList(1L, 2L));
  82. if (filterRoles.contains(role_id)) {
  83. return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "该角色不可删除");
  84. }
  85. // 判断角色是否有关联用户,如有则不可删除
  86. Map<String, Object> query = QueryNullCheckAspect.getQueryResult();
  87. Long user_count = (Long) query.get("user_count");
  88. if (user_count != 0) {
  89. return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "角色已关联 " + user_count + " 个用户,请解除关联后再删除");
  90. }
  91. // 删除用户 (物理删除)
  92. return Result.success(sysUserRoleService.deleteUserRole(sysUserRoleDTO), "删除成功");
  93. }
  94. @PreAuthorize("@ss.hasPermi('4.1.5')")
  95. @GetMapping("/api/system/user/getUserRoleModule")
  96. public Result getUserRoleModule() {
  97. return Result.success(sysUserRoleModuleService.queryUserRoleModule());
  98. }
  99. }