RoleServiceImpl.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.ghsc.partybuild.service.impl;
  2. import com.github.pagehelper.PageHelper;
  3. import com.github.pagehelper.PageInfo;
  4. import com.ghsc.partybuild.mapper.CfMenuRoleMapper;
  5. import com.ghsc.partybuild.mapper.CfRolesCQuery;
  6. import com.ghsc.partybuild.mapper.CfRolesMapper;
  7. import com.ghsc.partybuild.mapper.CfUserrolesMapper;
  8. import com.ghsc.partybuild.model.*;
  9. import com.ghsc.partybuild.service.RoleService;
  10. import com.ghsc.partybuild.util.MapUtils;
  11. import com.ghsc.partybuild.util.StringUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.cache.annotation.Cacheable;
  14. import org.springframework.stereotype.Service;
  15. import java.util.*;
  16. @Service("roleService")
  17. public class RoleServiceImpl implements RoleService {
  18. @Autowired
  19. private CfRolesMapper cfRolesMapper;
  20. @Autowired
  21. private CfMenuRoleMapper cfMenuRoleMapper;
  22. @Autowired
  23. private CfRolesCQuery cfRolesCQuery;
  24. @Autowired
  25. private CfUserrolesMapper cfUserrolesMapper;
  26. @Autowired
  27. private StringUtils stringUtils;
  28. @Autowired
  29. private MapUtils mapUtils;
  30. @Override
  31. public String saveRole(CfRoles cfRoles) {
  32. if (stringUtils.IsNullOrEmpty(cfRoles.getRoleid())) {
  33. cfRoles.setRoleid(UUID.randomUUID().toString());
  34. cfRolesMapper.insert(cfRoles);
  35. } else {
  36. cfRolesMapper.updateByPrimaryKey(cfRoles);
  37. }
  38. return cfRoles.getRoleid();
  39. }
  40. @Override
  41. public PageInfo<CfRoles> getRoleList(int pageNum, int pageSize, String appid, String roleName) {
  42. PageHelper.startPage(pageNum, pageSize);
  43. CfRolesExample exp = new CfRolesExample();
  44. CfRolesExample.Criteria criteria1 = exp.or().andApplicationidEqualTo(appid);
  45. if (roleName != null && roleName.length() > 0) {
  46. criteria1.andRolenameLike(roleName.trim());
  47. }
  48. List<CfRoles> roles = cfRolesMapper.selectByExample(exp);
  49. PageInfo result = new PageInfo(roles);
  50. return result;
  51. }
  52. @Override
  53. public PageInfo<CfRoles> getRoleList(int pageNum, int pageSize, String appid, String roleName, String userId) {
  54. //如果非管理员GetRoleList
  55. List<HashMap<String, Object>> roleList = cfRolesCQuery.valUserRole(userId, "管理员");
  56. String roleCondition = "";
  57. if (roleList.size() == 0) {
  58. //获取用户所有分组的角色和最大等级
  59. List<HashMap<String, Object>> userRoles = cfRolesCQuery.getUserRoles(userId);
  60. if (userRoles.size() > 0) {
  61. roleCondition = " and (1=2";
  62. for (HashMap<String, Object> r : userRoles) {
  63. roleCondition += " or (GROUPBY='" + r.get("GROUPBY") + "' and orderby<=" + r.get("ORDERBY") + ")";
  64. }
  65. roleCondition += ")";
  66. }
  67. }
  68. PageHelper.startPage(pageNum, pageSize);
  69. PageHelper.orderBy("groupby asc,orderby desc");
  70. List<CfRoles> roles = cfRolesCQuery.selectRoleByExample(roleName, roleCondition);
  71. PageInfo result = new PageInfo(roles);
  72. return result;
  73. }
  74. @Override
  75. public List<CfRoles> getRolesByUid(String uid) {
  76. List<CfRoles> roles = cfRolesCQuery.selectRoleByUserid(uid);
  77. return roles;
  78. }
  79. @Override
  80. public List<String> getMenuIdsByRoleId(String roleId) {
  81. CfMenuRoleExample exp = new CfMenuRoleExample();
  82. exp.or().andRoleidEqualTo(roleId);
  83. List<String> menulist = new ArrayList<String>();
  84. cfMenuRoleMapper.selectByExample(exp).forEach(it -> menulist.add(it.getMenuid()));
  85. return menulist;
  86. }
  87. @Override
  88. public CfRoles getRoleById(String roleId) {
  89. return cfRolesMapper.selectByPrimaryKey(roleId);
  90. }
  91. @Override
  92. public PageInfo<HashMap<String, Object>> getRoleUserList(String roleId,String username, int pageIndex, int pageSize) {
  93. PageHelper.startPage(pageIndex, pageSize);
  94. List<HashMap<String, Object>> users = cfRolesCQuery.selectRoleUserList(roleId,username);
  95. return new PageInfo(users);
  96. }
  97. @Override
  98. public int SaveRoleList(String roleId, String menuIds) {
  99. String[] menuIdArray = menuIds == null ? new String[]{} : menuIds.split(",");
  100. List<String> menuIdList = Arrays.asList(menuIdArray);
  101. CfMenuRoleExample expMR = new CfMenuRoleExample();
  102. expMR.or().andRoleidEqualTo(roleId);
  103. List<CfMenuRoleKey> exitMR = cfMenuRoleMapper.selectByExample(expMR);
  104. List<String> exitMRKeyList = new ArrayList<>();
  105. int changeCount = 1;
  106. //清除掉差异数据
  107. for (CfMenuRoleKey exitKey : exitMR) {
  108. exitMRKeyList.add(exitKey.getMenuid());
  109. if (!menuIdList.contains(exitKey.getMenuid())) {
  110. int drow = cfMenuRoleMapper.deleteByPrimaryKey(exitKey);
  111. if (drow > 0) {
  112. changeCount++;
  113. }
  114. }
  115. }
  116. //新增添加数据
  117. for (String menuId : menuIdList) {
  118. if (!exitMRKeyList.contains(menuId)) {
  119. CfMenuRoleKey cfMenuRole = new CfMenuRoleKey();
  120. cfMenuRole.setRoleid(roleId);
  121. cfMenuRole.setMenuid(menuId);
  122. int irow = cfMenuRoleMapper.insert(cfMenuRole);
  123. if (irow > 0) {
  124. changeCount++;
  125. }
  126. }
  127. }
  128. return changeCount;
  129. }
  130. @Override
  131. public String deleteRole(String roleId) {
  132. String result;
  133. CfUserrolesExample expUr = new CfUserrolesExample();
  134. expUr.or().andRoleidEqualTo(roleId);
  135. List<CfUserrolesKey> cfURModel = cfUserrolesMapper.selectByExample(expUr);
  136. if (cfURModel.isEmpty()) {
  137. CfMenuRoleExample expMr = new CfMenuRoleExample();
  138. expMr.or().andRoleidEqualTo(roleId);
  139. int drowUr = cfMenuRoleMapper.deleteByExample(expMr);
  140. int drowRole = cfRolesMapper.deleteByPrimaryKey(roleId);
  141. result = "";
  142. } else {
  143. result = "删除角色必需先清理角色下相关人员!";
  144. }
  145. return result;
  146. }
  147. @Override
  148. public List<String> getRoleNameByUserId(String userId) {
  149. // return this.cfUserrolesMapper.GetRoleNameByUserId(userId);
  150. return null;
  151. }
  152. @Override
  153. public List<CfUserrolesKey> getRoleUsersByRoleName(String roleName){
  154. String roleid=getRoleId(roleName);
  155. CfUserrolesExample expUr = new CfUserrolesExample();
  156. expUr.or().andRoleidEqualTo(roleid);
  157. List<CfUserrolesKey> cfURModel = cfUserrolesMapper.selectByExample(expUr);
  158. return cfURModel;
  159. }
  160. private String getRoleId(String roleName) {
  161. CfRolesExample example = new CfRolesExample();
  162. example.or().andRolenameEqualTo(roleName);
  163. List<CfRoles> roles = cfRolesMapper.selectByExample(example);
  164. if (roles.size() > 0) {
  165. return roles.get(0).getRoleid();
  166. }
  167. return null;
  168. }
  169. @Override
  170. public List<HashMap<String, Object>> getRoleByUserName(String userName) {
  171. return this.cfRolesCQuery.GetRoleByUserName(userName);
  172. }
  173. @Override
  174. public int insertUserRole(String userName, String roleId) {
  175. return this.cfRolesCQuery.insertUserRole(userName, roleId);
  176. }
  177. }