feat:(REQ-3282) 恢复历史代码使用以前的项目权限查询接口
This commit is contained in:
parent
50350b8cd7
commit
346837150b
@ -20,6 +20,15 @@ public interface WorkspaceProductService {
|
||||
*/
|
||||
void storeWorkspaceProduct(StoreWorkspaceProductParam param);
|
||||
|
||||
/**
|
||||
* 从缓存中查询项目的产品及产品的权限
|
||||
* 没有切到:listWorkspacePermissionCached,后续有测试机会的时候切到listWorkspacePermissionCached
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
List<WorkspaceProductPermission> listWorkspaceProductPermissionCached(ListWorkspaceProductPermissionCacheParam param);
|
||||
|
||||
/**
|
||||
* 从缓存中查询项目的权限
|
||||
* @param param
|
||||
@ -49,6 +58,35 @@ public interface WorkspaceProductService {
|
||||
private Set<String> uniCodes;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
class ListWorkspaceProductPermissionCacheParam {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Set<Long> workspaceIds;
|
||||
|
||||
private Set<String> featureCodes;
|
||||
|
||||
/**
|
||||
* 端信息
|
||||
*/
|
||||
private String terminal;
|
||||
|
||||
/**
|
||||
* app类型(APP:原生,H5:h5页面)
|
||||
*/
|
||||
private String appType;
|
||||
|
||||
/**
|
||||
* 项目code(H5会拉取项目下所有的元素)
|
||||
* APP上每个应用的code,数据库叫itemCode,保持一致
|
||||
*/
|
||||
private String itemCode;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -469,14 +469,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
// 查询的featureCodes有可能已经被删除,但是saas_feature_code效率比较低,两个表的id不会重复,所以解析成id去过滤权限
|
||||
Set<Long> featureIds = checkFeatureCodes(param);
|
||||
|
||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listWorkspacePermissionCacheParam = WorkspaceProductService.ListWorkspacePermissionCacheParam
|
||||
.builder()
|
||||
.workspacePermissions(Lists.newArrayList(WorkspaceProductService.WorkspacePermission.builder()
|
||||
.workspaceId(param.getWorkspaceId())
|
||||
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listWorkspaceProductPermissionCacheParam = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(param.getWorkspaceId()))
|
||||
.featureCodes(param.getFeatureCodes())
|
||||
.build()))
|
||||
.build();
|
||||
List<ProductPermissionCacheService.PermissionDTO> productPermissions = workspaceProductService.listWorkspacePermissionCached(listWorkspacePermissionCacheParam)
|
||||
List<ProductPermissionCacheService.PermissionDTO> productPermissions = workspaceProductService.listWorkspaceProductPermissionCached(listWorkspaceProductPermissionCacheParam)
|
||||
.stream()
|
||||
.map(WorkspaceProductService.WorkspaceProductPermission::getProductPermissions)
|
||||
.filter(e -> !CollectionUtils.isEmpty(e))
|
||||
@ -997,14 +994,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
// find product by workspace
|
||||
Set<Long> workspaceId = filterRoleAuths.stream().map(FilterRoleAuth::getWorkspaceId).collect(Collectors.toSet());
|
||||
|
||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listWorkspacePermissionCacheParam = WorkspaceProductService.ListWorkspacePermissionCacheParam.builder()
|
||||
.workspacePermissions(workspaceId.stream()
|
||||
.map(e -> WorkspaceProductService.WorkspacePermission.builder()
|
||||
.workspaceId(e)
|
||||
.build())
|
||||
.collect(Collectors.toList()))
|
||||
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listWorkspaceProductPermission = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(workspaceId)
|
||||
.build();
|
||||
Map<Long, List<WorkspaceProductService.ProductPermission>> workspaceProductPermissions = workspaceProductService.listWorkspacePermissionCached(listWorkspacePermissionCacheParam)
|
||||
|
||||
Map<Long, List<WorkspaceProductService.ProductPermission>> workspaceProductPermissions = workspaceProductService.listWorkspaceProductPermissionCached(listWorkspaceProductPermission)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
||||
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
@ -1506,15 +1500,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
.map(IdentityAuthReq.WorkspaceOuPair::getWorkspaceId)
|
||||
.collect(Collectors.toSet());
|
||||
// 查询项目的产品权限
|
||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listProductPermisssion = WorkspaceProductService.ListWorkspacePermissionCacheParam.builder()
|
||||
.workspacePermissions(workspaceIds.stream()
|
||||
.map(workspaceId -> WorkspaceProductService.WorkspacePermission.builder()
|
||||
.workspaceId(workspaceId)
|
||||
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listProductPermisssion = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(workspaceIds)
|
||||
.featureCodes(identityAuthReq.getFeatureCode())
|
||||
.build())
|
||||
.collect(Collectors.toList()))
|
||||
.build();
|
||||
return workspaceProductService.listWorkspacePermissionCached(listProductPermisssion).stream()
|
||||
return workspaceProductService.listWorkspaceProductPermissionCached(listProductPermisssion).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
||||
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
}
|
||||
|
||||
@ -159,6 +159,51 @@ public class WorkspaceProductServiceImpl implements WorkspaceProductService {
|
||||
return String.format(WORKSPACE_PRODUCT_KEY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WorkspaceProductPermission> listWorkspaceProductPermissionCached(ListWorkspaceProductPermissionCacheParam param) {
|
||||
Map<Long, Set<Long>> workspaceProducts = listWorkspaceProduct(param.getWorkspaceIds());
|
||||
|
||||
Set<Long> productIds = workspaceProducts.values().stream()
|
||||
.flatMap(Collection::stream)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollectionUtils.isEmpty(productIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
ProductPermissionCacheService.ListProductPermissionParam listProductPermissionParam = ProductPermissionCacheService.ListProductPermissionParam.builder()
|
||||
.productIds(productIds)
|
||||
.featureCodes(param.getFeatureCodes())
|
||||
.appType(param.getAppType())
|
||||
.itemCode(param.getItemCode())
|
||||
.terminal(param.getTerminal())
|
||||
.build();
|
||||
Map<Long, List<ProductPermissionCacheService.PermissionDTO>> productPermissionMap = productPermissionCacheService.list(listProductPermissionParam);
|
||||
|
||||
return workspaceProducts.entrySet().stream()
|
||||
.filter(e -> CollectionUtils.isNotEmpty(e.getValue()))
|
||||
.map(e -> {
|
||||
List<ProductPermission> productPermissions = e.getValue().stream()
|
||||
.map(productId -> {
|
||||
List<ProductPermissionCacheService.PermissionDTO> permissions = productPermissionMap.get(productId);
|
||||
if (CollectionUtils.isEmpty(permissions)) {
|
||||
return null;
|
||||
}
|
||||
return ProductPermission.builder()
|
||||
.productId(productId)
|
||||
.permissions(permissions)
|
||||
.build();
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
return WorkspaceProductPermission.builder()
|
||||
.workspaceId(e.getKey())
|
||||
.productPermissions(productPermissions)
|
||||
.build();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WorkspaceProductPermission> listWorkspacePermissionCached(ListWorkspacePermissionCacheParam param) {
|
||||
if (CollectionUtils.isEmpty(param.getWorkspacePermissions())) {
|
||||
|
||||
@ -20,6 +20,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class WorkspaceProductServiceImplTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
@ -54,6 +56,124 @@ class WorkspaceProductServiceImplTest extends BaseTest {
|
||||
.thenReturn(CommonResponse.success(Lists.newArrayList()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void listWorkspaceProductPermissionCached() {
|
||||
|
||||
// workspace 没有product
|
||||
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(11L))
|
||||
.build();
|
||||
List<WorkspaceProductService.WorkspaceProductPermission> workspaceProductPermissions = workspaceProductService.listWorkspaceProductPermissionCached(param);
|
||||
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(workspaceProductPermissions));
|
||||
// workspace 没有product
|
||||
|
||||
// workspace 有product,featureCode
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L, 4L))
|
||||
.featureCodes(Sets.newHashSet("h5:cmp_user_manage_worker_labor_audit_btn", "h5:cmp_allotted_time_page"))
|
||||
.build();
|
||||
Map<Long, List<WorkspaceProductService.ProductPermission>> workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getProductId(), 2L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getCooperateType(), "1");
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getFeatureId(), 101745L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getFeatureCode(), "h5:cmp_user_manage_worker_labor_audit_btn");
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getFeatureType(), 4);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getTerminal(), "NT_CMP_APP_GENERAL");
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getAppType(), "H5");
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().get(0).getItemCode(), "h5:user_manage_D9B0186");
|
||||
// workspace 有product,featureCode
|
||||
|
||||
// workspace 有product,terminal
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.terminal("NT_CMP_APP_GENERAL")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getProductId(), 2L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().size(), 7);
|
||||
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.terminal("NT_CMP_APP_GENERAL_sdf")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 0);
|
||||
// workspace 有product,terminal
|
||||
|
||||
// workspace 有product,appType
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.appType("H5")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getProductId(), 2L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().size(), 7);
|
||||
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.appType("APP")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 0);
|
||||
// workspace 有product,appType
|
||||
|
||||
// workspace 有product,itemCode
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.itemCode("h5:user_manage_D9B0186")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getProductId(), 2L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().size(), 7);
|
||||
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.itemCode("h5:user_manage_D9B0186_sdf")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 0);
|
||||
// workspace 有product,itemCode
|
||||
|
||||
// workspace 有product,featureCode、terminal、appType、itemCode
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.featureCodes(Sets.newHashSet("h5:cmp_user_manage_worker_labor_audit_btn"))
|
||||
.terminal("NT_CMP_APP_GENERAL")
|
||||
.appType("H5")
|
||||
.itemCode("h5:user_manage_D9B0186")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 1);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getProductId(), 2L);
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).get(0).getPermissions().size(), 1);
|
||||
|
||||
param = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||
.workspaceIds(Sets.newHashSet(3L))
|
||||
.featureCodes(Sets.newHashSet("h5:cmp_user_manage_worker_labor_audit_btn"))
|
||||
.terminal("NT_CMP_APP_GENERAL")
|
||||
.appType("APP")
|
||||
.itemCode("h5:user_manage_D9B0186_sdf")
|
||||
.build();
|
||||
workspacePermissions = workspaceProductService.listWorkspaceProductPermissionCached(param).stream()
|
||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId, WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||
Assertions.assertEquals(workspacePermissions.get(3L).size(), 0);
|
||||
// workspace 有product,featureCode、terminal、appType、itemCode
|
||||
}
|
||||
|
||||
@Test
|
||||
void listWorkspacePermissionCached() {
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user