Commit c334f3025b27b9cc388999fe24670102927c00c0

Authored by 云中非
1 parent ea9f767c

refactor: 格式化

... ... @@ -38,199 +38,199 @@ import java.util.stream.Collectors;
38 38 @RequiredArgsConstructor
39 39 public class RoleServiceImpl extends AbstractBaseService<RoleMapper, Role> implements RoleService {
40 40
41   - private final MenuMapper menuMapper;
42   - private final CacheUtils cacheUtils;
43   - private final MenuService menuService;
44   - private final TenantMenuMapper tenantMenuMapper;
45   - private final TenantRoleMapper tenantRoleMapper;
46   - private final UserRoleMapper userRoleMapper;
  41 + private final MenuMapper menuMapper;
  42 + private final CacheUtils cacheUtils;
  43 + private final MenuService menuService;
  44 + private final TenantMenuMapper tenantMenuMapper;
  45 + private final TenantRoleMapper tenantRoleMapper;
  46 + private final UserRoleMapper userRoleMapper;
47 47
48   - @Override
49   - public YtPageData<RoleDTO> page(String tenantId, Map<String, Object> queryMap) {
50   - IPage<Role> roleIPage =
51   - baseMapper.selectPage(
52   - getPage(queryMap, "create_time", false),
53   - new QueryWrapper<Role>()
54   - .lambda()
55   - .eq(queryMap.get("status") != null, Role::isEnabled, queryMap.get("status"))
56   - .eq(queryMap.get("roleType") != null, Role::getRoleType, queryMap.get("roleType"))
57   - .ne(queryMap.get("roleType") == null, Role::getRoleType, RoleEnum.TENANT_ADMIN.name())
58   - .eq(Role::getTenantId, tenantId)
59   - .like(
60   - queryMap.get("roleName") != null,
61   - Role::getName,
62   - String.valueOf(queryMap.get("roleName"))));
63   - return getPageData(roleIPage, RoleDTO.class);
64   - }
65   -
66   - @Override
67   - @Transactional
68   - public boolean deleteRole(String[] roleIds, String tenantId) {
69   - Set<String> ids = Set.of(roleIds);
70   - int notTenantMenuCount =
71   - baseMapper.selectCount(
72   - new QueryWrapper<Role>().lambda().ne(Role::getTenantId, tenantId).in(Role::getId, ids));
73   - if (notTenantMenuCount > 0) {
74   - throw new AccessDeniedException("cannot delete role that not create by you");
75   - }
76   - // 判断该角色下面是否有用户
77   - Set<String> userIds = baseMapper.checkRoleUserMappingByRoleIds(ids);
78   - if (null != userIds && userIds.size() > 0) {
79   - throw new YtDataValidationException(ErrorMessage.ROLE_IN_USE.getMessage());
  48 + @Override
  49 + public YtPageData<RoleDTO> page(String tenantId, Map<String, Object> queryMap) {
  50 + IPage<Role> roleIPage =
  51 + baseMapper.selectPage(
  52 + getPage(queryMap, "create_time", false),
  53 + new QueryWrapper<Role>()
  54 + .lambda()
  55 + .eq(queryMap.get("status") != null, Role::isEnabled, queryMap.get("status"))
  56 + .eq(queryMap.get("roleType") != null, Role::getRoleType, queryMap.get("roleType"))
  57 + .ne(queryMap.get("roleType") == null, Role::getRoleType, RoleEnum.TENANT_ADMIN.name())
  58 + .eq(Role::getTenantId, tenantId)
  59 + .like(
  60 + queryMap.get("roleName") != null,
  61 + Role::getName,
  62 + String.valueOf(queryMap.get("roleName"))));
  63 + return getPageData(roleIPage, RoleDTO.class);
80 64 }
81   - // delete sys_role_menu mapping
82   - baseMapper.deleteRoleMenuMappingByRoleIds(ids);
83   - // delete role
84   - baseMapper.deleteBatchIds(ids);
85   - // FIXME 频繁删除role造成缓存效果不大
86   - cacheUtils.invalidateCacheName(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY);
87   - return true;
88   - }
89 65
90   - @Override
91   - public Set<String> getPermissions(
92   - boolean isSysadmin, boolean isTenantAdmin, String tenantId, String useerId) {
93   - Set<String> permissions = Sets.newHashSet();
94   - Set<String> allPermission;
95   - String cacheKey;
96   - boolean cachePresent;
97   - if (isSysadmin) {
98   - cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + RoleEnum.SYS_ADMIN.name();
99   - Optional<Set<String>> optionalPermission =
100   - cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
101   - cachePresent = optionalPermission.isPresent();
102   - allPermission = optionalPermission.orElseGet(menuMapper::getAllPermission);
103   - } else if (isTenantAdmin) {
104   - cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + tenantId;
105   - Optional<Set<String>> optionalPermission =
106   - cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
107   - cachePresent = optionalPermission.isPresent();
108   - allPermission =
109   - optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByTenantId(tenantId));
110   - } else {
111   - cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + useerId;
112   - Optional<Set<String>> optionalPermission =
113   - cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
114   - cachePresent = optionalPermission.isPresent();
115   - allPermission =
116   - optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByUserId(useerId));
  66 + @Override
  67 + @Transactional
  68 + public boolean deleteRole(String[] roleIds, String tenantId) {
  69 + Set<String> ids = Set.of(roleIds);
  70 + int notTenantMenuCount =
  71 + baseMapper.selectCount(
  72 + new QueryWrapper<Role>().lambda().ne(Role::getTenantId, tenantId).in(Role::getId, ids));
  73 + if (notTenantMenuCount > 0) {
  74 + throw new AccessDeniedException("cannot delete role that not create by you");
  75 + }
  76 + // 判断该角色下面是否有用户
  77 + Set<String> userIds = baseMapper.checkRoleUserMappingByRoleIds(ids);
  78 + if (null != userIds && userIds.size() > 0) {
  79 + throw new YtDataValidationException(ErrorMessage.ROLE_IN_USE.getMessage());
  80 + }
  81 + // delete sys_role_menu mapping
  82 + baseMapper.deleteRoleMenuMappingByRoleIds(ids);
  83 + // delete role
  84 + baseMapper.deleteBatchIds(ids);
  85 + // FIXME 频繁删除role造成缓存效果不大
  86 + cacheUtils.invalidateCacheName(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY);
  87 + return true;
117 88 }
118   - if (cachePresent) {
119   - return allPermission;
120   - } else {
121   - allPermission.forEach(
122   - permission -> permissions.addAll(Sets.newHashSet(permission.split(","))));
123   - cacheUtils.put(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey, permissions);
124   - }
125   - return permissions;
126   - }
127   -
128   - @Override
129   - @Transactional
130   - public void updateRoleStatus(String roleId, int status, boolean isSysadmin, String tenantId) {
131   - Optional.ofNullable(
132   - baseMapper.selectOne(
133   - new QueryWrapper<Role>()
134   - .lambda()
135   - .eq(Role::getId, roleId)
136   - .eq(!isSysadmin, Role::getTenantId, tenantId)))
137   - .ifPresent(
138   - role -> {
139   - role.setEnabled(status == 1);
140   - baseMapper.updateById(role);
141   - });
142   - }
143 89
144   - @Override
145   - @Transactional
146   - public RoleDTO saveOrUpdateRoleInfoWithMenu(
147   - RoleReqDTO roleReqDTO, boolean isSysadmin, boolean isPlatformAdmin, String tenantId) {
148   - Role role;
149   - // 默认普通管理员角色,即租户管理员添加的角色
150   - var roleType = RoleEnum.CUSTOMER_USER.name();
151   - if (null != roleReqDTO.getRoleType()) {
152   - roleType = roleReqDTO.getRoleType().name();
153   - } else {
154   - if (isSysadmin || isPlatformAdmin) {
155   - roleType = RoleEnum.PLATFORM_ADMIN.name();
156   - }
  90 + @Override
  91 + public Set<String> getPermissions(
  92 + boolean isSysadmin, boolean isTenantAdmin, String tenantId, String useerId) {
  93 + Set<String> permissions = Sets.newHashSet();
  94 + Set<String> allPermission;
  95 + String cacheKey;
  96 + boolean cachePresent;
  97 + if (isSysadmin) {
  98 + cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + RoleEnum.SYS_ADMIN.name();
  99 + Optional<Set<String>> optionalPermission =
  100 + cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
  101 + cachePresent = optionalPermission.isPresent();
  102 + allPermission = optionalPermission.orElseGet(menuMapper::getAllPermission);
  103 + } else if (isTenantAdmin) {
  104 + cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + tenantId;
  105 + Optional<Set<String>> optionalPermission =
  106 + cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
  107 + cachePresent = optionalPermission.isPresent();
  108 + allPermission =
  109 + optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByTenantId(tenantId));
  110 + } else {
  111 + cacheKey = FastIotConstants.CacheConfigKey.USER_PERMISSION_PREFIX + useerId;
  112 + Optional<Set<String>> optionalPermission =
  113 + cacheUtils.get(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey);
  114 + cachePresent = optionalPermission.isPresent();
  115 + allPermission =
  116 + optionalPermission.orElseGet(() -> menuMapper.getAllPermissionsByUserId(useerId));
  117 + }
  118 + if (cachePresent) {
  119 + return allPermission;
  120 + } else {
  121 + allPermission.forEach(
  122 + permission -> permissions.addAll(Sets.newHashSet(permission.split(","))));
  123 + cacheUtils.put(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY, cacheKey, permissions);
  124 + }
  125 + return permissions;
157 126 }
158   - boolean update = StringUtils.isNotBlank(roleReqDTO.getId());
159   - if (update) {
160   - // do update
161   - role =
162   - baseMapper.selectOne(
163   - new QueryWrapper<Role>()
164   - .lambda()
165   - .eq(Role::getId, roleReqDTO.getId())
166   - .eq(!isSysadmin, Role::getTenantId, tenantId));
167   - if (role == null) {
168   - return null;
169   - } else {
170   - role.setRemark(roleReqDTO.getRemark());
171   - role.setName(roleReqDTO.getName());
172   - role.setEnabled(roleReqDTO.getStatus() == 1);
173   - baseMapper.updateById(role);
174   - }
175   - } else {
176   - // do save
177   - role = new Role();
178   - role.setRoleType(roleType);
179   - role.setCode(RandomStringUtils.randomAlphabetic(10));
180   - role.setRemark(roleReqDTO.getRemark());
181   - role.setName(roleReqDTO.getName());
182   - role.setEnabled(roleReqDTO.getStatus() == 1);
183   - role.setTenantId(tenantId);
184   - baseMapper.insert(role);
185   - }
186   - // do update or save menu associate with this roleId
187   - menuService.assignMenuToRole(
188   - roleReqDTO.getMenu().toArray(new String[roleReqDTO.getMenu().size()]), role.getId());
189   - // 如果是租户管理员角色并且是更新,则需要更新租户菜单表
190   - if (role.getRoleType().equals(RoleEnum.TENANT_ADMIN.name()) && update) {
191   - List<String> menus = roleReqDTO.getMenu();
192   - // 先删除以前的租户菜单,再更新新的租户菜单
193   - // 1、查询这个角色有几个租户用户
194   - // 2、删除并更新对应租户的信息
195   - List<TenantRole> tenantRoles =
196   - tenantRoleMapper.selectList(
197   - new QueryWrapper<TenantRole>().lambda().eq(TenantRole::getRoleId, role.getId()));
198   - tenantRoles.forEach(
199   - tenantRole -> {
200   - String updateTenantId = tenantRole.getTenantId();
201   - tenantMenuMapper.delete(
202   - new QueryWrapper<TenantMenu>()
203   - .lambda()
204   - .eq(TenantMenu::getTenantId, updateTenantId));
205   - menus.forEach(
206   - menu -> {
207   - TenantMenu tenantMenu = new TenantMenu();
208   - tenantMenu.setMenuId(menu);
209   - tenantMenu.setTenantId(updateTenantId);
210   - tenantMenuMapper.insert(tenantMenu);
211   - });
212   - });
  127 +
  128 + @Override
  129 + @Transactional
  130 + public void updateRoleStatus(String roleId, int status, boolean isSysadmin, String tenantId) {
  131 + Optional.ofNullable(
  132 + baseMapper.selectOne(
  133 + new QueryWrapper<Role>()
  134 + .lambda()
  135 + .eq(Role::getId, roleId)
  136 + .eq(!isSysadmin, Role::getTenantId, tenantId)))
  137 + .ifPresent(
  138 + role -> {
  139 + role.setEnabled(status == 1);
  140 + baseMapper.updateById(role);
  141 + });
213 142 }
214   - cacheUtils.invalidateCacheName(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY);
215   - return role.getDTO(RoleDTO.class);
216   - }
217 143
218   - @Override
219   - public List<RoleDTO> findRoleInfo(
220   - boolean isTenantAdmin, String tenantId, String userId, RoleDTO roleDTO) {
221   - if (StringUtils.isEmpty(roleDTO.getTenantId())) {
222   - roleDTO.setTenantId(tenantId);
  144 + @Override
  145 + @Transactional
  146 + public RoleDTO saveOrUpdateRoleInfoWithMenu(
  147 + RoleReqDTO roleReqDTO, boolean isSysadmin, boolean isPlatformAdmin, String tenantId) {
  148 + Role role;
  149 + // 默认普通管理员角色,即租户管理员添加的角色
  150 + var roleType = RoleEnum.CUSTOMER_USER.name();
  151 + if (null != roleReqDTO.getRoleType()) {
  152 + roleType = roleReqDTO.getRoleType().name();
  153 + } else {
  154 + if (isSysadmin || isPlatformAdmin) {
  155 + roleType = RoleEnum.PLATFORM_ADMIN.name();
  156 + }
  157 + }
  158 + boolean update = StringUtils.isNotBlank(roleReqDTO.getId());
  159 + if (update) {
  160 + // do update
  161 + role =
  162 + baseMapper.selectOne(
  163 + new QueryWrapper<Role>()
  164 + .lambda()
  165 + .eq(Role::getId, roleReqDTO.getId())
  166 + .eq(!isSysadmin, Role::getTenantId, tenantId));
  167 + if (role == null) {
  168 + return null;
  169 + } else {
  170 + role.setRemark(roleReqDTO.getRemark());
  171 + role.setName(roleReqDTO.getName());
  172 + role.setEnabled(roleReqDTO.getStatus() == 1);
  173 + baseMapper.updateById(role);
  174 + }
  175 + } else {
  176 + // do save
  177 + role = new Role();
  178 + role.setRoleType(roleType);
  179 + role.setCode(RandomStringUtils.randomAlphabetic(10));
  180 + role.setRemark(roleReqDTO.getRemark());
  181 + role.setName(roleReqDTO.getName());
  182 + role.setEnabled(roleReqDTO.getStatus() == 1);
  183 + role.setTenantId(tenantId);
  184 + baseMapper.insert(role);
  185 + }
  186 + // do update or save menu associate with this roleId
  187 + menuService.assignMenuToRole(
  188 + roleReqDTO.getMenu().toArray(new String[roleReqDTO.getMenu().size()]), role.getId());
  189 + // 如果是租户管理员角色并且是更新,则需要更新租户菜单表
  190 + if (role.getRoleType().equals(RoleEnum.TENANT_ADMIN.name()) && update) {
  191 + List<String> menus = roleReqDTO.getMenu();
  192 + // 先删除以前的租户菜单,再更新新的租户菜单
  193 + // 1、查询这个角色有几个租户用户
  194 + // 2、删除并更新对应租户的信息
  195 + List<TenantRole> tenantRoles =
  196 + tenantRoleMapper.selectList(
  197 + new QueryWrapper<TenantRole>().lambda().eq(TenantRole::getRoleId, role.getId()));
  198 + tenantRoles.forEach(
  199 + tenantRole -> {
  200 + String updateTenantId = tenantRole.getTenantId();
  201 + tenantMenuMapper.delete(
  202 + new QueryWrapper<TenantMenu>()
  203 + .lambda()
  204 + .eq(TenantMenu::getTenantId, updateTenantId));
  205 + menus.forEach(
  206 + menu -> {
  207 + TenantMenu tenantMenu = new TenantMenu();
  208 + tenantMenu.setMenuId(menu);
  209 + tenantMenu.setTenantId(updateTenantId);
  210 + tenantMenuMapper.insert(tenantMenu);
  211 + });
  212 + });
  213 + }
  214 + cacheUtils.invalidateCacheName(FastIotConstants.CacheConfigKey.CACHE_CONFIG_KEY);
  215 + return role.getDTO(RoleDTO.class);
223 216 }
224   - if (isTenantAdmin) {
225   - // 租户管理员既要查询自己拥有的角色,也要查询自己创建的角色
226   - List<String> roleIds =
227   - userRoleMapper
228   - .selectList(new QueryWrapper<UserRole>().lambda().eq(UserRole::getUserId, userId))
229   - .stream()
230   - .map(UserRole::getRoleId)
231   - .collect(Collectors.toList());
232   - roleDTO.setRoleIds(roleIds.toArray(new String[roleIds.size()]));
  217 +
  218 + @Override
  219 + public List<RoleDTO> findRoleInfo(
  220 + boolean isTenantAdmin, String tenantId, String userId, RoleDTO roleDTO) {
  221 + if (StringUtils.isEmpty(roleDTO.getTenantId())) {
  222 + roleDTO.setTenantId(tenantId);
  223 + }
  224 + if (isTenantAdmin) {
  225 + // 租户管理员既要查询自己拥有的角色,也要查询自己创建的角色
  226 + List<String> roleIds =
  227 + userRoleMapper
  228 + .selectList(new QueryWrapper<UserRole>().lambda().eq(UserRole::getUserId, userId))
  229 + .stream()
  230 + .map(UserRole::getRoleId)
  231 + .collect(Collectors.toList());
  232 + roleDTO.setRoleIds(roleIds.toArray(new String[roleIds.size()]));
  233 + }
  234 + return baseMapper.findRoleInfo(roleDTO);
233 235 }
234   - return baseMapper.findRoleInfo(roleDTO);
235   - }
236 236 }
... ...