RoleServiceImpl.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.zswl.dataservice.service.user.impl;
  2. import com.zswl.dataservice.dao.RoleDao;
  3. import com.zswl.dataservice.dataConfig.ResultMessage;
  4. import com.zswl.dataservice.domain.user.Role;
  5. import com.zswl.dataservice.model.user.RoleAddParam;
  6. import com.zswl.dataservice.model.user.RoleModel;
  7. import com.zswl.dataservice.model.user.RoleSearchParam;
  8. import com.zswl.dataservice.service.base.SuperService;
  9. import com.zswl.dataservice.type.DataState;
  10. import com.zswl.dataservice.type.RoleType;
  11. import com.zswl.dataservice.utils.bean.BeanUtils;
  12. import com.zswl.dataservice.utils.page.PageEntityUtil;
  13. import com.zswl.dataservice.utils.result.ResultContent;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.apache.commons.lang3.ObjectUtils;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.data.domain.Page;
  19. import org.springframework.data.domain.Pageable;
  20. import org.springframework.data.domain.Sort;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.util.Assert;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * @author TRX
  28. * @date 2024/6/5
  29. */
  30. @Slf4j
  31. @Service
  32. public class RoleServiceImpl extends SuperService {
  33. @Autowired
  34. RoleDao roleDao;
  35. /**
  36. * 添加/编辑角色
  37. *
  38. * @param param
  39. * @return
  40. */
  41. public ResultContent addRole(RoleAddParam param) {
  42. Assert.hasText(param.getName(), "name不能为空");
  43. Assert.hasText(param.getCode(), "code不能为空");
  44. String oid = param.getOid();
  45. if (StringUtils.isEmpty(oid)) {
  46. oid = getCurrentOid();
  47. }
  48. param.setOid(oid);
  49. if (param.getSort() == null) {
  50. param.setSort(1L);
  51. }
  52. if (param.getState() == null) {
  53. param.setState(DataState.Enable);
  54. }
  55. Role nameRole = roleDao.findTopByName(param.getName());
  56. Role codeRole = roleDao.findTopByCode(param.getCode());
  57. initDefaultUser(param);
  58. if (StringUtils.isEmpty(param.getId())) {
  59. param.setId(null);
  60. // 添加
  61. if (ObjectUtils.isNotEmpty(nameRole)) {
  62. return ResultContent.buildFail(String.format("角色名称已存在:%s", param.getName()));
  63. }
  64. if (ObjectUtils.isNotEmpty(codeRole)) {
  65. return ResultContent.buildFail(String.format("角色标识已存在:%s", param.getCode()));
  66. }
  67. Role role = new Role();
  68. BeanUtils.copyProperties(param, role);
  69. role.setRoleType(RoleType.Custom);
  70. role.setCreateUserId(getCurrentUserId());
  71. role.setIsAdmin(Boolean.FALSE);
  72. roleDao.save(role);
  73. } else {
  74. // 编辑
  75. Role role = roleDao.findTopById(param.getId());
  76. if (ObjectUtils.isEmpty(role)) {
  77. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
  78. }
  79. if (ObjectUtils.isNotEmpty(nameRole) && !nameRole.getId().equals(role.getId())) {
  80. return ResultContent.buildFail(String.format("角色名称已存在:%s", param.getName()));
  81. }
  82. if (ObjectUtils.isNotEmpty(codeRole) && !codeRole.getId().equals(role.getId())) {
  83. return ResultContent.buildFail(String.format("角色标识已存在:%s", param.getCode()));
  84. }
  85. // 编辑本地角色
  86. BeanUtils.copyProperties(param, role);
  87. roleDao.save(role);
  88. }
  89. return ResultContent.buildSuccess();
  90. }
  91. /**
  92. * 删除角色
  93. *
  94. * @param id
  95. * @return
  96. */
  97. public ResultContent deleteRole(String id) {
  98. Role role = roleDao.findTopById(id);
  99. if (ObjectUtils.isEmpty(role)) {
  100. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
  101. }
  102. if (role.getIsAdmin() != null && role.getIsAdmin()) {
  103. return ResultContent.buildFail(String.format("管理员角色不能删除"));
  104. }
  105. if (role.getRoleType() == RoleType.BuildIn) {
  106. return ResultContent.buildFail(String.format("内置角色不能删除"));
  107. }
  108. // 删除本地角色
  109. roleDao.delete(role);
  110. return ResultContent.buildSuccess();
  111. }
  112. /**
  113. * 角色详情
  114. *
  115. * @param id
  116. * @return
  117. */
  118. public ResultContent<RoleModel> getRole(String id) {
  119. Role role = roleDao.findTopById(id);
  120. if (ObjectUtils.isEmpty(role)) {
  121. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
  122. }
  123. RoleModel roleModel = toModel(role);
  124. return ResultContent.buildSuccess(roleModel);
  125. }
  126. /**
  127. * 角色列表
  128. *
  129. * @param param
  130. * @param pageable
  131. * @return
  132. */
  133. public ResultContent<Page<RoleModel>> page(RoleSearchParam param, Pageable pageable) {
  134. initSearchParam(param);
  135. param.setIsSortDesc(Boolean.FALSE);
  136. Page<Role> page = roleDao.page(pageable, param);
  137. return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
  138. }
  139. /**
  140. * 得到机构所有的角色
  141. *
  142. * @param oid
  143. * @return
  144. */
  145. public ResultContent<List<RoleModel>> getAllRoles(String oid) {
  146. if (StringUtils.isEmpty(oid)) {
  147. oid = getCurrentOid();
  148. }
  149. List<Role> list = roleDao.findAll(Sort.by(Sort.Order.asc("sort"),
  150. Sort.Order.asc("createTime")));
  151. List<RoleModel> models = new ArrayList<>();
  152. if (ObjectUtils.isNotEmpty(list)) {
  153. models = list.stream().map(this::toModel).collect(Collectors.toList());
  154. }
  155. return ResultContent.buildSuccess(models);
  156. }
  157. public RoleModel toModel(Role role) {
  158. RoleModel roleModel = new RoleModel();
  159. if (ObjectUtils.isNotEmpty(role)) {
  160. BeanUtils.copyProperties(role, roleModel);
  161. }
  162. return roleModel;
  163. }
  164. }