SysUserRoleV2ServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.backendsys.modules.system.service.impl;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.collection.CollUtil;
  4. import com.backendsys.entity.System.SysUserRoleDTO;
  5. import com.backendsys.exception.CustException;
  6. import com.backendsys.modules.system.dao.SysUserRoleDao;
  7. import com.backendsys.modules.system.dao.SysUserRoleModuleRelationDao;
  8. import com.backendsys.modules.system.dao.SysUserRoleRelationDao;
  9. import com.backendsys.modules.system.entity.SysUserRole;
  10. import com.backendsys.modules.system.entity.SysUserRoleModuleRelation;
  11. import com.backendsys.modules.system.entity.SysUserRoleRelation;
  12. import com.backendsys.modules.system.service.SysUserRoleV2Service;
  13. import com.backendsys.utils.response.PageEntity;
  14. import com.backendsys.utils.response.PageInfoResult;
  15. import com.backendsys.utils.v2.PageUtils;
  16. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  17. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.util.*;
  22. @Service
  23. public class SysUserRoleV2ServiceImpl extends ServiceImpl<SysUserRoleDao, SysUserRole> implements SysUserRoleV2Service {
  24. @Autowired
  25. private SysUserRoleDao sysUserRoleDao;
  26. @Autowired
  27. private SysUserRoleRelationDao sysUserRoleRelationDao;
  28. @Autowired
  29. private SysUserRoleModuleRelationDao sysUserRoleModuleRelationDao;
  30. @Override
  31. public PageEntity getUserRole(SysUserRoleDTO sysUserRoleDTO) {
  32. PageUtils.startPage(); // 分页
  33. List<SysUserRole> list = sysUserRoleDao.selectUserRoleList(sysUserRoleDTO);
  34. return new PageInfoResult(list).toEntity();
  35. }
  36. @Override
  37. public SysUserRole getUserRoleDetail(SysUserRoleDTO sysUserRoleDTO) {
  38. Long role_id = sysUserRoleDTO.getRole_id();
  39. SysUserRole roleDetail = sysUserRoleDao.selectById(role_id);
  40. if (roleDetail == null) throw new CustException("系统用户角色不存在");
  41. // 查询绑定人数
  42. LambdaQueryWrapper<SysUserRoleRelation> queryWrapper = new LambdaQueryWrapper<SysUserRoleRelation>().eq(SysUserRoleRelation::getRole_id, role_id);
  43. Long count = sysUserRoleRelationDao.selectCount(queryWrapper);
  44. roleDetail.setUser_count(Convert.toInt(count));
  45. return roleDetail;
  46. }
  47. @Override
  48. @Transactional
  49. public Map<String, Object> insertUserRole(SysUserRoleDTO sysUserRoleDTO) {
  50. // 判断 modules 是否重复
  51. List<String> modulesIds = sysUserRoleDTO.getModules();
  52. if (CollUtil.isNotEmpty(modulesIds) && modulesIds.size() != CollUtil.distinct(modulesIds).size()) {
  53. throw new CustException("模块ID出现重复值");
  54. }
  55. // 创建角色
  56. sysUserRoleDao.insertUserRole(sysUserRoleDTO);
  57. // 创建角色与模块关系
  58. sysUserRoleDao.insertUserRoleModuleRelation(sysUserRoleDTO);
  59. return Map.of("role_id", sysUserRoleDTO.getId());
  60. }
  61. @Override
  62. @Transactional
  63. public Map<String, Object> updateUserRole(SysUserRoleDTO sysUserRoleDTO) {
  64. // 判断 modules 是否重复
  65. List<String> modulesIds = sysUserRoleDTO.getModules();
  66. if (CollUtil.isNotEmpty(modulesIds) && modulesIds.size() != CollUtil.distinct(modulesIds).size()) {
  67. throw new CustException("模块ID出现重复值");
  68. }
  69. SysUserRole detail = sysUserRoleDao.selectById(sysUserRoleDTO.getRole_id());
  70. if (detail == null) throw new CustException("系统用户角色不存在");
  71. // 更新角色
  72. sysUserRoleDao.updateUserRole(sysUserRoleDTO);
  73. // 更新角色与模块关系 (需要先删除全部,再重新插入)
  74. sysUserRoleDao.updateUserRoleModuleRelation(sysUserRoleDTO);
  75. return Map.of("role_id", sysUserRoleDTO.getRole_id());
  76. }
  77. @Override
  78. @Transactional
  79. public Map<String, Object> deleteUserRole(SysUserRoleDTO sysUserRoleDTO) {
  80. Long role_id = sysUserRoleDTO.getRole_id();
  81. SysUserRole roleDetail = getUserRoleDetail(sysUserRoleDTO);
  82. if (roleDetail == null) throw new CustException("系统用户角色不存在");
  83. Integer user_count = roleDetail.getUser_count();
  84. if (user_count > 0) throw new CustException("角色已关联 " + user_count + " 个用户,请解除关联后再删除");
  85. // 删除角色
  86. sysUserRoleDao.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRole_id, role_id));
  87. // 删除角色与模块关系
  88. sysUserRoleModuleRelationDao.delete(new LambdaQueryWrapper<SysUserRoleModuleRelation>().eq(SysUserRoleModuleRelation::getRole_id, role_id));
  89. return Map.of("role_id", sysUserRoleDTO.getRole_id());
  90. }
  91. }