SysUserRoleServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.backendsys.service.System;
  2. import com.backendsys.entity.System.SysUserRoleDTO;
  3. import com.backendsys.mapper.System.SysUserRoleMapper;
  4. import com.backendsys.utils.response.PageInfoResult;
  5. import com.github.pagehelper.PageHelper;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.transaction.annotation.Transactional;
  9. import java.util.*;
  10. @Service
  11. public class SysUserRoleServiceImpl<T> implements SysUserRoleService {
  12. @Autowired
  13. private SysUserRoleMapper sysUserRoleMapper;
  14. // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
  15. public static List<LinkedHashMap<String, Object>> convertArrayToList(String[] array) {
  16. List<LinkedHashMap<String, Object>> resultList = new ArrayList<>();
  17. for (int i = 0; i < array.length; i++) {
  18. Map<String, Object> map = new HashMap<>();
  19. map.put("id", array[i]);
  20. resultList.add(new LinkedHashMap<>(map));
  21. }
  22. return resultList;
  23. }
  24. /**
  25. * 查询 系统用户角色列表
  26. */
  27. @Override
  28. public Map<String, Object> queryUserRole(Integer pageNum, Integer pageSize, SysUserRoleDTO sysUserRoleDTO) {
  29. // 分页查询
  30. if (pageNum != null && pageSize != null) {
  31. PageHelper.startPage(pageNum, pageSize);
  32. PageHelper.getLocalPage().setPageSizeZero(true);
  33. }
  34. // 分页输出 (自定义)
  35. List<Map<String, Object>> list = sysUserRoleMapper.queryUserRoleList(sysUserRoleDTO);
  36. PageInfoResult pageInfoResult = new PageInfoResult(list);
  37. return pageInfoResult.toMap();
  38. }
  39. /**
  40. * 查询 系统用户角色详情 (由于使用 COUNT 会导致 @QueryNullCheck 检查记录是否存在失效,所以分两次查询)
  41. */
  42. @Override
  43. public Map<String, Object> queryUserRoleDetail(Long role_id) {
  44. Map<String, Object> role = sysUserRoleMapper.queryUserRoleDetail(role_id);
  45. if (role != null) {
  46. Map<String, Object> user_count = sysUserRoleMapper.queryUserCountByRoleId(role_id);
  47. role.put("user_count", user_count.get("user_count"));
  48. }
  49. return role;
  50. }
  51. /**
  52. * 创建 系统用户角色
  53. */
  54. @Override
  55. @Transactional
  56. public Map<String, Object> insertUserRole(SysUserRoleDTO sysUserRoleDTO) {
  57. // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
  58. List<String> modulesList = sysUserRoleDTO.getModules();
  59. String[] modulesArray = modulesList.toArray(new String[0]);
  60. List<LinkedHashMap<String, Object>> resultList = convertArrayToList(modulesArray);
  61. sysUserRoleDTO.setModules(resultList);
  62. // 创建角色
  63. sysUserRoleMapper.insertUserRole(sysUserRoleDTO);
  64. // 创建角色与模块关系
  65. sysUserRoleMapper.insertUserRoleModuleRelation(sysUserRoleDTO);
  66. return Map.of("role_id", sysUserRoleDTO.getId());
  67. }
  68. /**
  69. * 更新 系统用户角色
  70. */
  71. @Override
  72. @Transactional
  73. public Map<String, Object> updateUserRole(SysUserRoleDTO sysUserRoleDTO) {
  74. // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
  75. List<String> modulesList = sysUserRoleDTO.getModules();
  76. String[] modulesArray = modulesList.toArray(new String[0]);
  77. List<LinkedHashMap<String, Object>> resultList = convertArrayToList(modulesArray);
  78. sysUserRoleDTO.setModules(resultList);
  79. // 更新角色
  80. sysUserRoleMapper.updateUserRole(sysUserRoleDTO);
  81. // 更新角色与模块关系 (需要先删除全部,再重新插入)
  82. sysUserRoleMapper.updateUserRoleModuleRelation(sysUserRoleDTO);
  83. return Map.of("role_id", sysUserRoleDTO.getRole_id());
  84. }
  85. /**
  86. * 删除 系统用户角色 (物理删除)
  87. */
  88. @Override
  89. @Transactional
  90. public Map<String, Object> deleteUserRole(SysUserRoleDTO sysUserRoleDTO) {
  91. sysUserRoleMapper.deleteUserRole(sysUserRoleDTO);
  92. return Map.of("role_id", sysUserRoleDTO.getRole_id());
  93. }
  94. }