SysRoleServiceImpl.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.caimei.service.sys.impl;
  2. import com.caimei.mapper.cmMapper.SystemMapper;
  3. import com.caimei.model.ResponseJson;
  4. import com.caimei.model.po.SysRole;
  5. import com.caimei.service.sys.SysRoleService;
  6. import com.caimei.utils.CommonUtil;
  7. import com.github.pagehelper.PageHelper;
  8. import com.github.pagehelper.PageInfo;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import org.springframework.util.StringUtils;
  13. import javax.annotation.Resource;
  14. import java.util.List;
  15. /**
  16. * Description
  17. *
  18. * @author : Charles
  19. * @date : 2022/1/6
  20. */
  21. @Slf4j
  22. @Service
  23. public class SysRoleServiceImpl implements SysRoleService {
  24. @Resource
  25. private SystemMapper systemMapper;
  26. /**
  27. * 获取角色列表
  28. *
  29. * @param pageNum 页码
  30. * @param pageSize 每页大小
  31. */
  32. @Override
  33. public ResponseJson<PageInfo<SysRole>> getRoleList(int pageNum, int pageSize) {
  34. PageHelper.startPage(pageNum, pageSize);
  35. List<SysRole> roles = systemMapper.getRoleList();
  36. PageInfo<SysRole> pageData = new PageInfo<>(roles);
  37. return ResponseJson.success(pageData);
  38. }
  39. /**
  40. * 根据ID获取角色
  41. */
  42. @Override
  43. public ResponseJson<SysRole> getRoleInfo(Integer id) {
  44. SysRole sysRole = getRole(id);
  45. if (null != sysRole) {
  46. // 根据角色ID获取菜单Ids
  47. List<Integer> menuIdList = systemMapper.getMenuIdsByRoleId(id);
  48. String menuIds = CommonUtil.idListToString(menuIdList, ",");
  49. // 根据角色ID获取(权限-菜单)Ids
  50. List<String> permissionIdList = systemMapper.getPermissionMenuIdsByRoleId(id);
  51. StringBuilder ids = new StringBuilder(menuIds);
  52. for (String permissionId : permissionIdList) {
  53. ids.append(",").append(permissionId);
  54. }
  55. sysRole.setMenuIds(ids.toString());
  56. }
  57. return ResponseJson.success(sysRole);
  58. }
  59. private SysRole getRole(Integer id) {
  60. return systemMapper.getRole(id);
  61. }
  62. /**
  63. * 根据ID更新角色
  64. */
  65. @Transactional(rollbackFor=Exception.class)
  66. @Override
  67. public ResponseJson<Void> updateRole(Integer id, SysRole sysRole) {
  68. sysRole.setId(id);
  69. sysRole.setDelFlag(0);
  70. // 菜单Ids,用","隔开
  71. String menuIds = sysRole.getMenuIds();
  72. if (1 == id) {
  73. sysRole.setRoleName("shop_base_role");
  74. sysRole.setRoleDesc("供应商基础功能角色");
  75. }
  76. systemMapper.updateRole(sysRole);
  77. // 保存角色菜单关系
  78. saveRoleMenuRelation(sysRole.getId(), menuIds);
  79. return ResponseJson.success();
  80. }
  81. /**
  82. * 添加角色
  83. */
  84. @Transactional(rollbackFor=Exception.class)
  85. @Override
  86. public ResponseJson<Void> addRole(SysRole sysRole) {
  87. if (StringUtils.hasLength(sysRole.getRoleName())) {
  88. // 查询是否存在当前角色
  89. SysRole dbRole = systemMapper.getRoleByRoleName(sysRole.getRoleName());
  90. if (null == dbRole) {
  91. String menuIds = sysRole.getMenuIds();
  92. // 保存角色
  93. sysRole.setRoleType(null == sysRole.getRoleType() ? 1 : sysRole.getRoleType());
  94. systemMapper.insertRole(sysRole);
  95. // 保存角色菜单关系
  96. saveRoleMenuRelation(sysRole.getId(), menuIds);
  97. return ResponseJson.success();
  98. }else {
  99. return ResponseJson.error("角色名已存在", null);
  100. }
  101. }
  102. return ResponseJson.error("角色名称不能为空", null);
  103. }
  104. /**
  105. * 根据ID删除角色
  106. */
  107. @Transactional(rollbackFor=Exception.class)
  108. @Override
  109. public ResponseJson<Void> deleteRole(Integer id) {
  110. // 删除角色菜单关联
  111. systemMapper.deleteRoleMenuRelation(id);
  112. // 删除原有角色权限关联
  113. systemMapper.deleteRolePermissionRelation(id);
  114. // 删除角色
  115. systemMapper.deleteRole(id);
  116. return ResponseJson.success();
  117. }
  118. /**
  119. * 角色授权菜单
  120. */
  121. @Override
  122. public ResponseJson<Void> setRoleMenu(Integer id, SysRole sysRole) {
  123. // 删除原有角色菜单关联
  124. systemMapper.deleteRoleMenuRelation(id);
  125. // 保存角色菜单关系
  126. String menuIds = sysRole.getMenuIds();
  127. saveRoleMenuRelation(id, menuIds);
  128. return ResponseJson.success();
  129. }
  130. /**
  131. * 保存角色菜单关系
  132. */
  133. private void saveRoleMenuRelation(Integer roleId, String menuIds) {
  134. // 删除原有角色菜单关联
  135. systemMapper.deleteRoleMenuRelation(roleId);
  136. // 删除原有角色权限关联
  137. systemMapper.deleteRolePermissionRelation(roleId);
  138. if (StringUtils.hasLength(menuIds)) {
  139. // 设置角色菜单
  140. String[] split = menuIds.split(",");
  141. for (String s : split) {
  142. if (StringUtils.hasLength(s)) {
  143. if (s.contains("-")) {
  144. // 保存角色权限关系
  145. String[] ids = s.split("-");
  146. systemMapper.insertRolePermissionRelation(roleId, Integer.valueOf(ids[0]));
  147. } else {
  148. // 保存角色菜单关系
  149. systemMapper.insertRoleMenuRelation(roleId, Integer.valueOf(s));
  150. }
  151. }
  152. }
  153. }
  154. }
  155. }