123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package com.backendsys.controller.Systems;
- import cn.hutool.core.collection.CollUtil;
- import com.backendsys.aspect.QueryNullCheck;
- import com.backendsys.aspect.QueryNullCheckAspect;
- import com.backendsys.entity.PageDTO;
- import com.backendsys.entity.System.SysUserRoleDTO;
- import com.backendsys.service.System.SysUserRoleModuleService;
- import com.backendsys.service.System.SysUserRoleService;
- import com.backendsys.utils.response.Result;
- import com.backendsys.utils.response.ResultEnum;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import java.util.Arrays;
- /**
- * 系统用户角色
- */
- @Validated
- @RestController
- public class SysUserRoleController {
- @Autowired
- private SysUserRoleService sysUserRoleService;
- @Autowired
- private SysUserRoleModuleService sysUserRoleModuleService;
- // 判断 role.modules: [{ id: 1 }, { id: 2 }],是否有重复值
- //public boolean hasDuplicateIds(List<LinkedHashMap<String, Object>> modules) {
- // List<Object> ids = CollUtil.getFieldValues(modules, "id");
- // return CollUtil.isNotEmpty(ids) && ids.size() != CollUtil.distinct(ids).size();
- //}
- public boolean hasDuplicateIds(List<Object> ids) {
- return CollUtil.isNotEmpty(ids) && ids.size() != CollUtil.distinct(ids).size();
- }
- // // @Operation(summary = "系统用户角色列表")
- // @PreAuthorize("@ss.hasPermi('4.1')")
- // @GetMapping("/api/system/user/getUserRole")
- // public Result getUserRole(@Validated PageDTO pageDTO, @Validated SysUserRoleDTO sysUserRoleDTO) {
- // return Result.success(sysUserRoleService.queryUserRole(pageDTO.getPage_num(), pageDTO.getPage_size(), sysUserRoleDTO));
- // }
- //@Operation(summary = "系统用户角色详情")
- @PreAuthorize("@ss.hasPermi('4.1.1')")
- @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
- @GetMapping("/api/system/user/getUserRoleDetail")
- public Result getUserRoleDetail(@Validated(SysUserRoleDTO.Detail.class) SysUserRoleDTO sysUserRoleDTO) {
- return Result.success(QueryNullCheckAspect.getQueryResult());
- }
- //@Operation(summary = "创建系统用户角色")
- @PreAuthorize("@ss.hasPermi('4.1.2')")
- @PostMapping("/api/system/user/createUserRole")
- public Result createUserRole(@Validated(SysUserRoleDTO.Create.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
- // 判断 role.modules 是否重复
- if (hasDuplicateIds(sysUserRoleDTO.getModules())) {
- return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "模块ID出现重复值");
- }
- // 创建
- return Result.success(sysUserRoleService.insertUserRole(sysUserRoleDTO), "创建成功");
- }
- //@Operation(summary = "更新系统用户角色")
- @PreAuthorize("@ss.hasPermi('4.1.3')")
- @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
- @PutMapping("/api/system/user/updateUserRole")
- public Result updateUserRole(@Validated(SysUserRoleDTO.Update.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
- // 判断 role.modules 是否重复
- if (hasDuplicateIds(sysUserRoleDTO.getModules())) {
- return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "模块ID出现重复值");
- }
- // 更新
- return Result.success(sysUserRoleService.updateUserRole(sysUserRoleDTO), "更新成功");
- }
- //@Operation(summary = "删除系统用户角色")
- @PreAuthorize("@ss.hasPermi('4.1.4')")
- @QueryNullCheck(serviceClass = SysUserRoleService.class, serviceMethod = "queryUserRoleDetail", argField = "role_id", message = "用户角色不存在")
- @DeleteMapping("/api/system/user/deleteUserRole")
- public Result deleteUserRole(@Validated(SysUserRoleDTO.Delete.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) {
- // 如果角色ID: 1管理员, 2游客,则不可删除
- Long role_id = sysUserRoleDTO.getRole_id();
- Set<Long> filterRoles = new HashSet<>(Arrays.asList(1L, 2L));
- if (filterRoles.contains(role_id)) {
- return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "该角色不可删除");
- }
- // 判断角色是否有关联用户,如有则不可删除
- Map<String, Object> query = QueryNullCheckAspect.getQueryResult();
- Long user_count = (Long) query.get("user_count");
- if (user_count != 0) {
- return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "角色已关联 " + user_count + " 个用户,请解除关联后再删除");
- }
- // 删除用户 (物理删除)
- return Result.success(sysUserRoleService.deleteUserRole(sysUserRoleDTO), "删除成功");
- }
- @PreAuthorize("@ss.hasPermi('4.1.5')")
- @GetMapping("/api/system/user/getUserRoleModule")
- public Result getUserRoleModule() {
- return Result.success(sysUserRoleModuleService.queryUserRoleModule());
- }
- }
|