GroupController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package jnpf.permission.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import io.swagger.v3.oas.annotations.Operation;
  5. import io.swagger.v3.oas.annotations.Parameter;
  6. import io.swagger.v3.oas.annotations.Parameters;
  7. import io.swagger.v3.oas.annotations.tags.Tag;
  8. import jakarta.validation.Valid;
  9. import jnpf.base.ActionResult;
  10. import jnpf.base.controller.SuperController;
  11. import jnpf.base.vo.PageListVO;
  12. import jnpf.base.vo.PaginationVO;
  13. import jnpf.constant.MsgCode;
  14. import jnpf.constant.PermissionConst;
  15. import jnpf.permission.entity.GroupEntity;
  16. import jnpf.permission.entity.UserEntity;
  17. import jnpf.permission.entity.UserRelationEntity;
  18. import jnpf.permission.model.user.mod.UserIdModel;
  19. import jnpf.permission.model.usergroup.*;
  20. import jnpf.permission.service.GroupService;
  21. import jnpf.permission.service.UserRelationService;
  22. import jnpf.permission.service.UserService;
  23. import jnpf.util.JsonUtil;
  24. import jnpf.util.StringUtil;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.web.bind.annotation.*;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import java.util.Set;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 分组管理控制器
  33. *
  34. * @author :JNPF开发平台组
  35. * @version: V3.1.0
  36. * @copyright 引迈信息技术有限公司
  37. * @date :2022/3/10 17:57
  38. */
  39. @RestController
  40. @Tag(name = "分组管理", description = "UserGroupController")
  41. @RequestMapping("/api/permission/Group")
  42. public class GroupController extends SuperController<GroupService, GroupEntity> {
  43. @Autowired
  44. private GroupService userGroupService;
  45. @Autowired
  46. private UserRelationService userRelationService;
  47. @Autowired
  48. private UserService userService;
  49. @Operation(summary = "获取分组管理列表")
  50. @GetMapping
  51. public ActionResult<PageListVO<GroupVO>> list(GroupPagination pagination) {
  52. pagination.setDataType(1);
  53. if (StringUtil.isNotEmpty(pagination.getKeyword())) {
  54. pagination.setDataType(null);
  55. }
  56. List<GroupEntity> list = userGroupService.getList(pagination);
  57. List<GroupVO> jsonToList = JsonUtil.getJsonToList(list, GroupVO.class);
  58. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  59. return ActionResult.page(jsonToList, paginationVO);
  60. }
  61. @Operation(summary = "创建")
  62. @Parameters({
  63. @Parameter(name = "userGroupCrForm", description = "新建模型", required = true)
  64. })
  65. @SaCheckPermission(value = {"permission.user"})
  66. @PostMapping
  67. public ActionResult create(@RequestBody @Valid GroupForm form) {
  68. GroupEntity entity = JsonUtil.getJsonToBean(form, GroupEntity.class);
  69. // 判断名称是否重复
  70. if (userGroupService.isExistByFullName(entity.getFullName(), null)) {
  71. return ActionResult.fail(MsgCode.EXIST001.get());
  72. }
  73. if (userGroupService.isExistByEnCode(entity.getEnCode(), null)) {
  74. return ActionResult.fail(MsgCode.EXIST002.get());
  75. }
  76. userGroupService.crete(entity);
  77. return ActionResult.success(MsgCode.SU001.get());
  78. }
  79. @Operation(summary = "更新")
  80. @Parameters({
  81. @Parameter(name = "id", description = "主键", required = true),
  82. @Parameter(name = "userGroupUpForm", description = "修改模型", required = true)
  83. })
  84. @SaCheckPermission(value = {"permission.user"})
  85. @PutMapping("/{id}")
  86. public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid GroupForm form) {
  87. GroupEntity info = userGroupService.getInfo(id);
  88. if (info == null) {
  89. return ActionResult.fail(MsgCode.FA002.get());
  90. }
  91. GroupEntity groupEntity = JsonUtil.getJsonToBean(form, GroupEntity.class);
  92. // 判断名称是否重复
  93. if (userGroupService.isExistByFullName(groupEntity.getFullName(), id)) {
  94. return ActionResult.fail(MsgCode.EXIST001.get());
  95. }
  96. if (userGroupService.isExistByEnCode(groupEntity.getEnCode(), id)) {
  97. return ActionResult.fail(MsgCode.EXIST002.get());
  98. }
  99. userGroupService.update(id, groupEntity);
  100. return ActionResult.success(MsgCode.SU004.get());
  101. }
  102. @Operation(summary = "信息")
  103. @Parameters({
  104. @Parameter(name = "id", description = "主键", required = true)
  105. })
  106. @SaCheckPermission(value = {"permission.user"})
  107. @GetMapping("/{id}")
  108. public ActionResult<GroupInfoVO> info(@PathVariable("id") String id) {
  109. GroupEntity entity = userGroupService.getInfo(id);
  110. GroupInfoVO vo = JsonUtil.getJsonToBean(entity, GroupInfoVO.class);
  111. return ActionResult.success(vo);
  112. }
  113. @Operation(summary = "删除")
  114. @Parameters({
  115. @Parameter(name = "id", description = "主键", required = true)
  116. })
  117. @SaCheckPermission(value = {"permission.user"})
  118. @DeleteMapping("/{id}")
  119. public ActionResult delete(@PathVariable("id") String id) {
  120. GroupEntity entity = userGroupService.getInfo(id);
  121. if (entity == null) {
  122. return ActionResult.fail(MsgCode.FA003.get());
  123. }
  124. List<UserRelationEntity> bingUserByRoleList = userRelationService.getListByObjectId(id, PermissionConst.GROUP);
  125. for (UserRelationEntity item : bingUserByRoleList) {
  126. userRelationService.removeById(item);
  127. }
  128. userGroupService.delete(entity);
  129. return ActionResult.success(MsgCode.SU003.get());
  130. }
  131. //++++++++++++++++++++++++++++++++++动作start++++++++++++++++++++++++++++++
  132. @Operation(summary = "添加用户")
  133. @Parameters({
  134. @Parameter(name = "id", description = "主键", required = true),
  135. @Parameter(name = "userIdModel", description = "参数对象", required = false)
  136. })
  137. @SaCheckPermission(value = {"permission.user"})
  138. @PostMapping("{id}/Actions/AddUser")
  139. public ActionResult<GroupInfoVO> addUserToGroup(@PathVariable("id") String id, @RequestBody @Valid UserIdModel userIdModel) {
  140. GroupEntity info = userGroupService.getInfo(id);
  141. if (info == null) {
  142. return ActionResult.fail(MsgCode.FA001.get());
  143. }
  144. Set<String> userIds = userRelationService.getListByObjectId(id, PermissionConst.GROUP).stream().map(UserRelationEntity::getUserId).collect(Collectors.toSet());
  145. Set<String> adminIds = userService.getAdminList().stream().map(UserEntity::getId).collect(Collectors.toSet());
  146. List<UserRelationEntity> listRelation = new ArrayList<>();
  147. List<String> errList1 = new ArrayList<>();
  148. for (String userId : userIdModel.getIds()) {
  149. if (adminIds.contains(userId)) {
  150. errList1.add("超管不能添加");
  151. continue;
  152. }
  153. if (!userIds.contains(userId)) {
  154. UserRelationEntity userRelation = new UserRelationEntity();
  155. userRelation.setObjectId(id);
  156. userRelation.setUserId(userId);
  157. userRelation.setObjectType(PermissionConst.GROUP);
  158. listRelation.add(userRelation);
  159. }
  160. }
  161. if (CollectionUtil.isNotEmpty(listRelation)) {
  162. userRelationService.save(listRelation);
  163. }
  164. if (errList1.size() > 0) {
  165. return ActionResult.success(MsgCode.DB019.get());
  166. }
  167. return ActionResult.success(MsgCode.SU018.get());
  168. }
  169. @Operation(summary = "移除用户")
  170. @Parameters({
  171. @Parameter(name = "id", description = "主键", required = true),
  172. @Parameter(name = "userIdModel", description = "参数对象", required = false)
  173. })
  174. @SaCheckPermission(value = {"permission.user"})
  175. @PostMapping("{id}/Actions/DeleteUser")
  176. public ActionResult<GroupInfoVO> deleteUserToGroup(@PathVariable("id") String id, @RequestBody @Valid UserIdModel userIdModel) {
  177. GroupEntity entity = userGroupService.getInfo(id);
  178. List<String> ids = userIdModel.getIds();
  179. if (entity != null && ids.size() > 0) {
  180. List<UserRelationEntity> listByObjectId = userRelationService.getListByObjectId(id, PermissionConst.GROUP);
  181. for (UserRelationEntity item : listByObjectId) {
  182. if (ids.contains(item.getUserId())) {
  183. userRelationService.removeById(item.getId());
  184. }
  185. }
  186. }
  187. return ActionResult.success(MsgCode.SU021.get());
  188. }
  189. //++++++++++++++++++++++++++++++++++动作end++++++++++++++++++++++++++++++++
  190. @Operation(summary = "获取分组管理下拉框")
  191. @GetMapping("/Selector")
  192. public ActionResult<List<GroupSelectorVO>> selector() {
  193. List<GroupEntity> data = userGroupService.list();
  194. List<GroupSelectorVO> list = JsonUtil.getJsonToList(data, GroupSelectorVO.class);
  195. for (GroupSelectorVO vo : list) {
  196. vo.setIcon(PermissionConst.GROUP_ICON);
  197. }
  198. return ActionResult.success(list);
  199. }
  200. @Operation(summary = "自定义范围获取分组下拉框")
  201. @Parameters({
  202. @Parameter(name = "positionConditionModel", description = "岗位选择模型", required = true)
  203. })
  204. @PostMapping("/GroupCondition")
  205. public ActionResult<List<GroupSelectorVO>> positionCondition(@RequestBody UserIdModel idModel) {
  206. List<GroupEntity> data = userGroupService.getListByIds(idModel.getIds());
  207. List<GroupSelectorVO> list = JsonUtil.getJsonToList(data, GroupSelectorVO.class);
  208. for (GroupSelectorVO vo : list) {
  209. vo.setIcon(PermissionConst.GROUP_ICON);
  210. }
  211. return ActionResult.success(list);
  212. }
  213. }