You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
3.9 KiB

  1. package com.example.demo.serviceImpl;
  2. import com.example.demo.domain.entity.Role;
  3. import com.example.demo.domain.vo.ConsumeUser;
  4. import com.example.demo.domain.vo.MenuVo;
  5. import com.example.demo.domain.vo.Result;
  6. import com.example.demo.domain.vo.RoleVo;
  7. import com.example.demo.mapper.RefundMapper;
  8. import com.example.demo.mapper.RoleMapper;
  9. import com.example.demo.service.MenuService;
  10. import com.example.demo.service.RoleService;
  11. import com.github.pagehelper.PageHelper;
  12. import com.github.pagehelper.PageInfo;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.util.List;
  17. /**
  18. * @program: gold-java
  19. * @ClassName RoleServiceImpl
  20. * @description:
  21. * @author: Double
  22. * @create: 202507-15 11:30
  23. * @Version 1.0
  24. **/
  25. @Service
  26. public class RoleServiceImpl implements RoleService {
  27. @Autowired
  28. private RoleMapper roleMapper;
  29. @Autowired
  30. private MenuService menuService;
  31. //新增角色
  32. @Override
  33. @Transactional
  34. public Result addRole(RoleVo roleVo) {
  35. //校验角色
  36. if (roleVo.getRoleName() == null || roleVo.getRoleName().isEmpty()) {
  37. return Result.error("角色名为空");
  38. }
  39. if (roleMapper.selectByRoleName(roleVo.getRoleName()) != null) {
  40. return Result.error("角色名重复");
  41. }
  42. if (roleVo.getPriority() == null) {
  43. return Result.error("优先级为空");
  44. }
  45. if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) {
  46. return Result.error("权限为空");
  47. }
  48. else {
  49. if(roleVo.getFatherId() != 2) {
  50. for(Integer menuId : roleVo.getMenuIds()){
  51. if(menuId == 9){
  52. return Result.error("上级角色非管理员用户不能赋予权限管理");
  53. }
  54. }
  55. }
  56. }
  57. try {
  58. roleMapper.addRole(roleVo);
  59. Role role = roleMapper.selectByRoleName(roleVo.getRoleName());
  60. if (role == null) {
  61. return Result.error("角色添加失败");
  62. } else {
  63. roleVo.setId(role.getId());
  64. }
  65. menuService.addPermission(roleVo);
  66. } catch (Exception e) {
  67. return Result.error("添加失败");
  68. }
  69. return Result.success("创建成功");
  70. }
  71. //删除角色
  72. @Override
  73. @Transactional
  74. public Result deleteRole(RoleVo roleVo) {
  75. if (roleVo.getId() == null) {
  76. return Result.error("角色id为空");
  77. }
  78. if(roleVo.getId() == 2){
  79. return Result.error("管理员不允许删除");
  80. }
  81. try {
  82. roleMapper.deleteRoleMenu(roleVo);
  83. roleMapper.deleteRole(roleVo);
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. return Result.error("删除失败");
  87. }
  88. return Result.success("删除成功");
  89. }
  90. @Override
  91. public RoleVo selectFather(Integer id) {
  92. return roleMapper.selectFather(id);
  93. }
  94. //查找全部角色
  95. @Override
  96. public List<RoleVo> selectAllRole() {
  97. return roleMapper.selectAllRole();
  98. }
  99. @Override
  100. public List<RoleVo> selectSubRole(Integer id) {
  101. return roleMapper.selectByFatherId(id);
  102. }
  103. //分页查找角色
  104. @Override
  105. public PageInfo<RoleVo> selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) {
  106. PageHelper.startPage(pageNum, pageSize);
  107. List<RoleVo> roleVos = roleMapper.selectBy(roleVo);
  108. // 遍历 roleVos 列表
  109. for (RoleVo role : roleVos) {
  110. // 获取每个角色的权限树
  111. List<MenuVo> permissionTree = menuService.getPermissionTree(role.getId());
  112. // 将权限树设置到角色对象中
  113. role.setTree(permissionTree);
  114. }
  115. return new PageInfo<>(roleVos);
  116. }
  117. }