feat:(REQ-3282) 恢复历史代码使用以前的项目权限查询接口
This commit is contained in:
parent
50350b8cd7
commit
346837150b
@ -20,6 +20,15 @@ public interface WorkspaceProductService {
|
|||||||
*/
|
*/
|
||||||
void storeWorkspaceProduct(StoreWorkspaceProductParam param);
|
void storeWorkspaceProduct(StoreWorkspaceProductParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从缓存中查询项目的产品及产品的权限
|
||||||
|
* 没有切到:listWorkspacePermissionCached,后续有测试机会的时候切到listWorkspacePermissionCached
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
List<WorkspaceProductPermission> listWorkspaceProductPermissionCached(ListWorkspaceProductPermissionCacheParam param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从缓存中查询项目的权限
|
* 从缓存中查询项目的权限
|
||||||
* @param param
|
* @param param
|
||||||
@ -49,6 +58,35 @@ public interface WorkspaceProductService {
|
|||||||
private Set<String> uniCodes;
|
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
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|||||||
@ -469,14 +469,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
// 查询的featureCodes有可能已经被删除,但是saas_feature_code效率比较低,两个表的id不会重复,所以解析成id去过滤权限
|
// 查询的featureCodes有可能已经被删除,但是saas_feature_code效率比较低,两个表的id不会重复,所以解析成id去过滤权限
|
||||||
Set<Long> featureIds = checkFeatureCodes(param);
|
Set<Long> featureIds = checkFeatureCodes(param);
|
||||||
|
|
||||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listWorkspacePermissionCacheParam = WorkspaceProductService.ListWorkspacePermissionCacheParam
|
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listWorkspaceProductPermissionCacheParam = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||||
.builder()
|
.workspaceIds(Sets.newHashSet(param.getWorkspaceId()))
|
||||||
.workspacePermissions(Lists.newArrayList(WorkspaceProductService.WorkspacePermission.builder()
|
.featureCodes(param.getFeatureCodes())
|
||||||
.workspaceId(param.getWorkspaceId())
|
|
||||||
.featureCodes(param.getFeatureCodes())
|
|
||||||
.build()))
|
|
||||||
.build();
|
.build();
|
||||||
List<ProductPermissionCacheService.PermissionDTO> productPermissions = workspaceProductService.listWorkspacePermissionCached(listWorkspacePermissionCacheParam)
|
List<ProductPermissionCacheService.PermissionDTO> productPermissions = workspaceProductService.listWorkspaceProductPermissionCached(listWorkspaceProductPermissionCacheParam)
|
||||||
.stream()
|
.stream()
|
||||||
.map(WorkspaceProductService.WorkspaceProductPermission::getProductPermissions)
|
.map(WorkspaceProductService.WorkspaceProductPermission::getProductPermissions)
|
||||||
.filter(e -> !CollectionUtils.isEmpty(e))
|
.filter(e -> !CollectionUtils.isEmpty(e))
|
||||||
@ -997,14 +994,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
// find product by workspace
|
// find product by workspace
|
||||||
Set<Long> workspaceId = filterRoleAuths.stream().map(FilterRoleAuth::getWorkspaceId).collect(Collectors.toSet());
|
Set<Long> workspaceId = filterRoleAuths.stream().map(FilterRoleAuth::getWorkspaceId).collect(Collectors.toSet());
|
||||||
|
|
||||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listWorkspacePermissionCacheParam = WorkspaceProductService.ListWorkspacePermissionCacheParam.builder()
|
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listWorkspaceProductPermission = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||||
.workspacePermissions(workspaceId.stream()
|
.workspaceIds(workspaceId)
|
||||||
.map(e -> WorkspaceProductService.WorkspacePermission.builder()
|
|
||||||
.workspaceId(e)
|
|
||||||
.build())
|
|
||||||
.collect(Collectors.toList()))
|
|
||||||
.build();
|
.build();
|
||||||
Map<Long, List<WorkspaceProductService.ProductPermission>> workspaceProductPermissions = workspaceProductService.listWorkspacePermissionCached(listWorkspacePermissionCacheParam)
|
|
||||||
|
Map<Long, List<WorkspaceProductService.ProductPermission>> workspaceProductPermissions = workspaceProductService.listWorkspaceProductPermissionCached(listWorkspaceProductPermission)
|
||||||
.stream()
|
.stream()
|
||||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
||||||
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||||
@ -1506,15 +1500,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
.map(IdentityAuthReq.WorkspaceOuPair::getWorkspaceId)
|
.map(IdentityAuthReq.WorkspaceOuPair::getWorkspaceId)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
// 查询项目的产品权限
|
// 查询项目的产品权限
|
||||||
WorkspaceProductService.ListWorkspacePermissionCacheParam listProductPermisssion = WorkspaceProductService.ListWorkspacePermissionCacheParam.builder()
|
WorkspaceProductService.ListWorkspaceProductPermissionCacheParam listProductPermisssion = WorkspaceProductService.ListWorkspaceProductPermissionCacheParam.builder()
|
||||||
.workspacePermissions(workspaceIds.stream()
|
.workspaceIds(workspaceIds)
|
||||||
.map(workspaceId -> WorkspaceProductService.WorkspacePermission.builder()
|
.featureCodes(identityAuthReq.getFeatureCode())
|
||||||
.workspaceId(workspaceId)
|
|
||||||
.featureCodes(identityAuthReq.getFeatureCode())
|
|
||||||
.build())
|
|
||||||
.collect(Collectors.toList()))
|
|
||||||
.build();
|
.build();
|
||||||
return workspaceProductService.listWorkspacePermissionCached(listProductPermisssion).stream()
|
return workspaceProductService.listWorkspaceProductPermissionCached(listProductPermisssion).stream()
|
||||||
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
.collect(Collectors.toMap(WorkspaceProductService.WorkspaceProductPermission::getWorkspaceId,
|
||||||
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
WorkspaceProductService.WorkspaceProductPermission::getProductPermissions));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,6 +159,51 @@ public class WorkspaceProductServiceImpl implements WorkspaceProductService {
|
|||||||
return String.format(WORKSPACE_PRODUCT_KEY);
|
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
|
@Override
|
||||||
public List<WorkspaceProductPermission> listWorkspacePermissionCached(ListWorkspacePermissionCacheParam param) {
|
public List<WorkspaceProductPermission> listWorkspacePermissionCached(ListWorkspacePermissionCacheParam param) {
|
||||||
if (CollectionUtils.isEmpty(param.getWorkspacePermissions())) {
|
if (CollectionUtils.isEmpty(param.getWorkspacePermissions())) {
|
||||||
|
|||||||
@ -20,6 +20,8 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
class WorkspaceProductServiceImplTest extends BaseTest {
|
class WorkspaceProductServiceImplTest extends BaseTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -54,6 +56,124 @@ class WorkspaceProductServiceImplTest extends BaseTest {
|
|||||||
.thenReturn(CommonResponse.success(Lists.newArrayList()));
|
.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
|
@Test
|
||||||
void listWorkspacePermissionCached() {
|
void listWorkspacePermissionCached() {
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user