RoleRelationController.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package jnpf.permission.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.annotation.SaMode;
  4. import cn.hutool.core.collection.CollectionUtil;
  5. import io.swagger.v3.oas.annotations.Operation;
  6. import io.swagger.v3.oas.annotations.Parameter;
  7. import io.swagger.v3.oas.annotations.Parameters;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import jnpf.base.ActionResult;
  10. import jnpf.base.controller.SuperController;
  11. import jnpf.base.entity.DictionaryDataEntity;
  12. import jnpf.base.service.DictionaryDataService;
  13. import jnpf.base.vo.PaginationVO;
  14. import jnpf.constant.MsgCode;
  15. import jnpf.constant.PermissionConst;
  16. import jnpf.permission.entity.RoleEntity;
  17. import jnpf.permission.entity.RoleRelationEntity;
  18. import jnpf.permission.entity.UserRelationEntity;
  19. import jnpf.permission.model.role.RoleListVO;
  20. import jnpf.permission.model.rolerelaiton.*;
  21. import jnpf.permission.service.*;
  22. import jnpf.util.JsonUtil;
  23. import jnpf.util.enums.DictionaryDataEnum;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.StringJoiner;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 角色关系
  33. *
  34. * @author JNPF开发平台组
  35. * @version v6.0.0
  36. * @copyright 引迈信息技术有限公司
  37. * @date 2025/3/5 18:14:07
  38. */
  39. @Tag(name = "角色关系", description = "RoleRelation")
  40. @RestController
  41. @RequestMapping("/api/permission/RoleRelation")
  42. public class RoleRelationController extends SuperController<UserRelationService, UserRelationEntity> {
  43. @Autowired
  44. private RoleRelationService roleRelationService;
  45. @Autowired
  46. private UserService userService;
  47. @Autowired
  48. private OrganizeService organizeService;
  49. @Autowired
  50. private PositionService positionService;
  51. @Autowired
  52. private RoleService roleService;
  53. @Autowired
  54. private UserRelationService userRelationService;
  55. @Autowired
  56. private DictionaryDataService dictionaryDataApi;
  57. @Operation(summary = "获取角色绑定信息列表")
  58. @Parameters({
  59. @Parameter(name = "roleId", description = "角色id", required = true),
  60. @Parameter(name = "type", description = "类型:user,organize,position", required = true)
  61. })
  62. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  63. @GetMapping
  64. public ActionResult<?> getList(RoleRelationPage pagination) {
  65. String type = pagination.getType();
  66. if (PermissionConst.USER.equals(type)) {
  67. List<RoleRelationUserVo> userList = roleRelationService.getUserPage(pagination);
  68. Map<String, String> positionMap = positionService.getPosFullNameMap();
  69. List<DictionaryDataEntity> dataServiceList4 = dictionaryDataApi.getListByTypeDataCode(DictionaryDataEnum.SEX_TYPE.getDictionaryTypeId());
  70. Map<String, String> genderMap = dataServiceList4.stream().collect(Collectors.toMap(DictionaryDataEntity::getEnCode, DictionaryDataEntity::getFullName));
  71. for (RoleRelationUserVo userVo : userList) {
  72. StringJoiner positionJoiner = new StringJoiner(",");
  73. StringJoiner organizeJoiner = new StringJoiner(",");
  74. List<UserRelationEntity> allPostion = userRelationService.getListByObjectType(userVo.getId(), PermissionConst.POSITION);
  75. if (CollectionUtil.isNotEmpty(allPostion)) {
  76. for (UserRelationEntity item : allPostion) {
  77. String posName = positionMap.get(item.getObjectId());
  78. if (posName != null) {
  79. positionJoiner.add(posName);
  80. organizeJoiner.add(posName.substring(0, posName.lastIndexOf("/")));
  81. }
  82. }
  83. }
  84. userVo.setGender(genderMap.get(userVo.getGender()));
  85. userVo.setPosition(positionJoiner.toString());
  86. }
  87. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  88. return ActionResult.page(userList, paginationVO);
  89. }
  90. List<RoleRelationOrgVo> list = new ArrayList<>();
  91. if (PermissionConst.ORGANIZE.equals(type)) {
  92. list = roleRelationService.getOrgPage(pagination);
  93. list.stream().forEach(t -> t.setFullName(t.getOrgNameTree()));
  94. }
  95. if (PermissionConst.POSITION.equals(type)) {
  96. list = roleRelationService.getPosPage(pagination);
  97. Map<String, Object> allOrgsTreeName = organizeService.getAllOrgsTreeName();
  98. list.stream().forEach(t -> {
  99. t.setOrgNameTree(allOrgsTreeName.get(t.getOrganizeId()) + "/" + t.getFullName());
  100. t.setFullName(t.getOrgNameTree());
  101. });
  102. }
  103. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  104. return ActionResult.page(list, paginationVO);
  105. }
  106. @Operation(summary = "获取组织岗位绑定角色列表")
  107. @Parameters({
  108. @Parameter(name = "objectId", description = "对象主键", required = true),
  109. @Parameter(name = "type", description = "类型:organize,position", required = true)
  110. })
  111. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  112. @GetMapping("/roleList")
  113. public ActionResult<?> getRoleList(RoleListPage pagination) {
  114. List<RoleRelationEntity> relationList = roleRelationService.getListPage(pagination);
  115. List<String> roleList = relationList.stream().map(RoleRelationEntity::getRoleId).collect(Collectors.toList());
  116. List<RoleListVO> listRes = new ArrayList<>();
  117. if (CollectionUtil.isNotEmpty(roleList)) {
  118. Map<String, RoleEntity> roleMap = roleService.getList(roleList, pagination, true).stream().collect(Collectors.toMap(RoleEntity::getId, t -> t));
  119. for (RoleRelationEntity item : relationList) {
  120. RoleEntity roleEntity = roleMap.get(item.getRoleId());
  121. if (roleEntity != null) {
  122. RoleListVO vo = JsonUtil.getJsonToBean(roleEntity, RoleListVO.class);
  123. listRes.add(vo);
  124. }
  125. }
  126. }
  127. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  128. return ActionResult.page(listRes, paginationVO);
  129. }
  130. @Operation(summary = "角色绑定数据")
  131. @Parameters({
  132. @Parameter(name = "RoleRelationForm", description = "表单数据")
  133. })
  134. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  135. @PostMapping
  136. public ActionResult roleAddObjectIds(@RequestBody RoleRelationForm form) {
  137. return roleRelationService.roleAddObjectIds(form);
  138. }
  139. @Operation(summary = "角色移除绑定")
  140. @Parameters({
  141. @Parameter(name = "RoleRelationForm", description = "表单数据")
  142. })
  143. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  144. @PostMapping("/delete")
  145. public ActionResult delete(@RequestBody RoleRelationForm form) {
  146. roleRelationService.delete(form);
  147. return ActionResult.success(MsgCode.SU021.get());
  148. }
  149. @Operation(summary = "组织/岗位添加角色")
  150. @Parameters({
  151. @Parameter(name = "RoleRelationForm", description = "表单数据")
  152. })
  153. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  154. @PostMapping("/addRoles")
  155. public ActionResult AddRoles(@RequestBody AddRolesForm form) {
  156. roleRelationService.objectAddRoles(form);
  157. return ActionResult.success(MsgCode.SU002.get());
  158. }
  159. @Operation(summary = "组织/岗位移除角色")
  160. @Parameters({
  161. @Parameter(name = "RoleRelationForm", description = "表单数据")
  162. })
  163. @SaCheckPermission(value = {"permission.auth", "permission.organize", "permission.role"}, mode = SaMode.OR)
  164. @PostMapping("/deleteRoles")
  165. public ActionResult DeleteRoles(@RequestBody AddRolesForm form) {
  166. roleRelationService.objectDeleteRoles(form);
  167. return ActionResult.success(MsgCode.SU021.get());
  168. }
  169. }