Commit c334f3025b27b9cc388999fe24670102927c00c0

Authored by 云中非
1 parent ea9f767c

refactor: 格式化

@@ -38,199 +38,199 @@ import java.util.stream.Collectors; @@ -38,199 +38,199 @@ import java.util.stream.Collectors;
38 @RequiredArgsConstructor 38 @RequiredArgsConstructor
39 public class RoleServiceImpl extends AbstractBaseService<RoleMapper, Role> implements RoleService { 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 }