feat: add log

This commit is contained in:
TanJ 2023-10-17 10:37:20 +08:00
parent aae3396474
commit 29c059242e
3 changed files with 27 additions and 15 deletions

View File

@ -13,6 +13,7 @@ import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
import cn.axzo.tyr.server.repository.dao.SaasProductModuleFeatureRelationDao;
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.StopWatch;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -27,6 +28,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -87,16 +89,19 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
public Map<Long, List<ProductFeatureRelationVO>> getByWorkspace(Set<Long> workspaceId) {
StopWatch stopWatch = StopWatch.create(" get product by workspace");
if (CollectionUtil.isEmpty(workspaceId)) {
return new HashMap<>();
}
stopWatch.start(" get service pkg by work space id");
List<ServicePkgDetailRes> servicePkgDetailRes = checkAndGetData(servicePkgClient.getServicePkgDetailBySpaceId(workspaceId));
if (CollectionUtil.isEmpty(servicePkgDetailRes)) {
return new HashMap<>();
}
return servicePkgDetailRes.stream().collect(Collectors.toMap(ServicePkgDetailRes::getSpaceId, servicePkgDetail -> {
stopWatch.stop();
stopWatch.start("get feature list by product");
Map<Long, List<ProductFeatureRelationVO>> result = servicePkgDetailRes.stream().collect(Collectors.toMap(ServicePkgDetailRes::getSpaceId, servicePkgDetail -> {
List<ServicePkgProduct> products = servicePkgDetail.getProducts();
if (CollectionUtil.isEmpty(products)) {
return new ArrayList<>();
@ -110,6 +115,9 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
}
return productFeatureRelationVOS;
}));
stopWatch.stop();
log.info(stopWatch.prettyPrint(TimeUnit.MILLISECONDS));
return result;
}

View File

@ -430,7 +430,7 @@ public class RoleServiceImpl implements RoleService {
.workspaceTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceType().toString()))
.ouTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceJoinType().getValue().toString()))
.build());
initRoleId = roleGroupList.stream().filter(roleGroup -> CollectionUtil.isNotEmpty(roleGroup.getRoleIds())).map(SaasRoleGroupVO::getRoleIds).flatMap(List::stream).collect(Collectors.toSet());
initRoleId = roleGroupList.stream().map(SaasRoleGroupVO::getRoleIds).filter(CollectionUtil::isNotEmpty).flatMap(List::stream).collect(Collectors.toSet());
}
Set<Long> finalInitRoleId = initRoleId;

View File

@ -404,17 +404,18 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
}
// 工作台的菜单产品维度
List<ProductFeatureRelationVO> productFeatureRelationVOS = workspacePermissionPoint.get(workspaceId);
//同单位资质的产品过滤
Set<Long> buttonPermissionPointId = productFeatureRelationVOS.stream().filter(productFeatureRelationVO ->
Objects.equals(productFeatureRelationVO.getDictCode(), workspaceJoinType.getValue().toString())
).map(ProductFeatureRelationVO::getFeatureId).collect(Collectors.toSet());
List<IdentityAuthRes.WorkspacePermission> permissions = result.getPermissions();
Optional<SaasRoleVO> superAdminRole = role.stream().filter(r -> RoleTypeEnum.SUPER_ADMIN.getValue().equals(r.getRoleType())).findFirst();
if (superAdminRole.isPresent()) {
//超管查询工作台对应产品获取权限点 权限点通过单位类型过滤)
workspacePermission.setSuperAdmin(Boolean.TRUE);
//同单位资质的产品过滤
Set<Long> buttonPermissionPointId = productFeatureRelationVOS.stream().filter(productFeatureRelationVO ->
Objects.equals(productFeatureRelationVO.getDictCode(), workspaceJoinType.getValue().toString())
).map(ProductFeatureRelationVO::getFeatureId).collect(Collectors.toSet());
if (CollectionUtil.isEmpty(buttonPermissionPointId)) {
permissions.add(workspacePermission);
return;
@ -438,18 +439,21 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
return;
}
// 非超管
// 获取菜单详情信息
List<PermissionPointTreeNode> productPermissionInfo = permissionPointService.queryList(PermissionPointListQueryRequest.builder()
.ids(productFeatureRelationVOS.stream().map(ProductFeatureRelationVO::getFeatureId).distinct().collect(Collectors.toList()))
// 获取产品所对应的权限点
// List<Long> productFeatureIds = productFeatureRelationVOS.stream().map(ProductFeatureRelationVO::getFeatureId).distinct().collect(Collectors.toList());
// 获取免授权型
List<PermissionPointTreeNode> noNeedPermissionPoint = permissionPointService.queryList(PermissionPointListQueryRequest.builder()
.ids(new ArrayList<>(buttonPermissionPointId))
.delegatedType(DelegatedType.NO_NEED.getCode())
.build());
Set<Long> buttonPermissionPointIds = roleService.filterPermissionPoint(role, userRoleInfoMap);
//获取免授权型
Set<Long> noNeedPermissionPoint = productPermissionInfo.stream().filter(permission -> Objects.equals(permission.getDelegatedType(), DelegatedType.NO_NEED.getCode())).mapToLong(PermissionPointTreeNode::getPermissionPointId).boxed().collect(Collectors.toSet());
buttonPermissionPointIds.addAll(noNeedPermissionPoint);
// Set<Long> noNeedPermissionPoint = productPermissionInfo.stream().filter(permission -> Objects.equals(permission.getDelegatedType(), DelegatedType.NO_NEED.getCode())).mapToLong(PermissionPointTreeNode::getPermissionPointId).boxed().collect(Collectors.toSet());
buttonPermissionPointIds.addAll(noNeedPermissionPoint.stream().map(PermissionPointTreeNode::getPermissionPointId).collect(Collectors.toSet()));
// 产品对应权限点权限点的授权类型为免授权型+角色对应权限点 产品对应权限点 取交集
Collection<Long> resultHashAuthPointId = CollectionUtil.intersection(buttonPermissionPointIds, productPermissionInfo.stream().mapToLong(PermissionPointTreeNode::getPermissionPointId).boxed().collect(Collectors.toList()));
Collection<Long> resultHashAuthPointId = CollectionUtil.intersection(buttonPermissionPointIds, buttonPermissionPointId);
if (CollectionUtil.isEmpty(resultHashAuthPointId)) {
permissions.add(workspacePermission);
return;