feat: (feature/REQ-3167) 修改同步前端资源的问题
This commit is contained in:
parent
6e4a26f839
commit
00657cac9c
@ -0,0 +1,34 @@
|
|||||||
|
package cn.axzo.tyr.client.model.req;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||||
|
import cn.axzo.foundation.page.IPageReq;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PageElementCategoryV2Req implements IPageReq {
|
||||||
|
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
Integer page;
|
||||||
|
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
Integer pageSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序:使用示例,createTime__DESC
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
List<String> sort;
|
||||||
|
|
||||||
|
@CriteriaField(field = "itemCode", operator = Operator.IN)
|
||||||
|
private Set<String> itemCodes;
|
||||||
|
}
|
||||||
@ -41,4 +41,16 @@ public class PageElementFeatureResourceRelationReq implements IPageReq {
|
|||||||
|
|
||||||
@CriteriaField(ignore = true)
|
@CriteriaField(ignore = true)
|
||||||
private Set<PageElementFeatureResourceRelationTypeEnum> types;
|
private Set<PageElementFeatureResourceRelationTypeEnum> types;
|
||||||
|
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needPageElement;
|
||||||
|
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needFeatureResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 需要跟needPageElement一起使用
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needPageElementCategory;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,4 +50,10 @@ public class PageElementReq implements IPageReq {
|
|||||||
|
|
||||||
@CriteriaField(ignore = true)
|
@CriteriaField(ignore = true)
|
||||||
private Boolean needPageElementCategory;
|
private Boolean needPageElementCategory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 现在只有组件的父节点是页面
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needAncestor;
|
||||||
}
|
}
|
||||||
@ -92,6 +92,18 @@ public class PageSaasFeatureResourceReq implements IPageReq {
|
|||||||
@CriteriaField(ignore = true)
|
@CriteriaField(ignore = true)
|
||||||
private Set<PageElementFeatureResourceRelationTypeEnum> pageElementTypes;
|
private Set<PageElementFeatureResourceRelationTypeEnum> pageElementTypes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否需要所有子节点
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needChildren;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否需要所有父节点
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean needAncestor;
|
||||||
|
|
||||||
public PageResp toEmpty() {
|
public PageResp toEmpty() {
|
||||||
return PageResp.builder()
|
return PageResp.builder()
|
||||||
.current(this.getPage())
|
.current(this.getPage())
|
||||||
|
|||||||
@ -0,0 +1,54 @@
|
|||||||
|
package cn.axzo.tyr.client.model.res;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PageElementFeatureResourceRelationResp {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private Date createAt;
|
||||||
|
|
||||||
|
private Date updateAt;
|
||||||
|
|
||||||
|
private Long isDelete;
|
||||||
|
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
private Long createBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新人
|
||||||
|
*/
|
||||||
|
private Long updateBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面元素code
|
||||||
|
*/
|
||||||
|
private String pageElementCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜单组件code
|
||||||
|
*/
|
||||||
|
private String featureResourceUniCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属端
|
||||||
|
*/
|
||||||
|
private String terminal;
|
||||||
|
|
||||||
|
private PageElementResp pageElement;
|
||||||
|
|
||||||
|
private SaasFeatureResourceResp saasFeatureResource;
|
||||||
|
}
|
||||||
@ -132,6 +132,8 @@ public class PageElementResp {
|
|||||||
*/
|
*/
|
||||||
private PageElementCategoryResp pageElementCategory;
|
private PageElementCategoryResp pageElementCategory;
|
||||||
|
|
||||||
|
private PageElementResp ancestor;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|||||||
@ -155,6 +155,16 @@ public class SaasFeatureResourceResp {
|
|||||||
*/
|
*/
|
||||||
private List<PageElementResp> saasPageElements;
|
private List<PageElementResp> saasPageElements;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有父节点
|
||||||
|
*/
|
||||||
|
private List<SaasFeatureResourceResp> ancestors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有子节点
|
||||||
|
*/
|
||||||
|
private List<SaasFeatureResourceResp> children;
|
||||||
|
|
||||||
public Set<Long> resolvePath() {
|
public Set<Long> resolvePath() {
|
||||||
return Optional.ofNullable(this.getPath())
|
return Optional.ofNullable(this.getPath())
|
||||||
.map(e -> Arrays.stream(e.split(",")).map(Long::valueOf).collect(Collectors.toSet()))
|
.map(e -> Arrays.stream(e.split(",")).map(Long::valueOf).collect(Collectors.toSet()))
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import java.util.List;
|
|||||||
* @author: ZhanSiHu
|
* @author: ZhanSiHu
|
||||||
* @date: 2024/4/3 10:25
|
* @date: 2024/4/3 10:25
|
||||||
*/
|
*/
|
||||||
@FeignClient(name = "tyr", url = "${axzo.service.base.tyr:https://pre-api.axzo.cn/tyr}")
|
@FeignClient(name = "tyr", url = "${axzo.service.base.tyr:https://test-api.axzo.cn/tyr}")
|
||||||
public interface BaseFeatureResourceApi {
|
public interface BaseFeatureResourceApi {
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -37,30 +37,40 @@ public interface SaasFeatureResourceService extends IService<SaasFeatureResource
|
|||||||
void updateFeatureAuthType(Long featureId, Integer authType);
|
void updateFeatureAuthType(Long featureId, Integer authType);
|
||||||
|
|
||||||
/**递归的**/
|
/**递归的**/
|
||||||
|
@Deprecated
|
||||||
List<SaasFeatureResource> batchListDescendant(List<Long> featureIds);
|
List<SaasFeatureResource> batchListDescendant(List<Long> featureIds);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
SaasFeatureResource featureResourceById(Long featureId);
|
SaasFeatureResource featureResourceById(Long featureId);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
FeatureResourceTreeNode getTreeFeatureDescendant(DetailFeatureResourceReq param);
|
FeatureResourceTreeNode getTreeFeatureDescendant(DetailFeatureResourceReq param);
|
||||||
|
|
||||||
/**菜单重排序**/
|
/**菜单重排序**/
|
||||||
void reorderMenuFeature(Long featureId, Integer offset);
|
void reorderMenuFeature(Long featureId, Integer offset);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
/** 根据ID查询导航菜单页面信息 仅可显示 - 限制查询字段 **/
|
/** 根据ID查询导航菜单页面信息 仅可显示 - 限制查询字段 **/
|
||||||
List<SaasFeatureResource> listNavByIds(List<Long> featureIds, List<Integer> featureTypes);
|
List<SaasFeatureResource> listNavByIds(List<Long> featureIds, List<Integer> featureTypes);
|
||||||
|
|
||||||
/** 资源权限通用查询 **/
|
/** 资源权限通用查询 **/
|
||||||
|
@Deprecated
|
||||||
List<ResourcePermission> permissionQuery(ResourcePermissionQueryDTO param);
|
List<ResourcePermission> permissionQuery(ResourcePermissionQueryDTO param);
|
||||||
|
|
||||||
/** 查询资源树 **/
|
/** 查询资源树 **/
|
||||||
|
@Deprecated
|
||||||
List<FeatureResourceTreeNode> getTree(GetFeatureResourceTreeReq req);
|
List<FeatureResourceTreeNode> getTree(GetFeatureResourceTreeReq req);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
SaasFeatureResource getByCode(String featureCode);
|
SaasFeatureResource getByCode(String featureCode);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
Set<Long> listAuthFree();
|
Set<Long> listAuthFree();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
List<SaasFeatureResource> listByParentIdAndTerminalAndIds(Long parentId, String terminal, List<Long> featureIds);
|
List<SaasFeatureResource> listByParentIdAndTerminalAndIds(Long parentId, String terminal, List<Long> featureIds);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
List<SaasFeatureResource> listByParentIdAndBlurTerminalAndIds(Long parentId, String terminal, List<Long> featureIds);
|
List<SaasFeatureResource> listByParentIdAndBlurTerminalAndIds(Long parentId, String terminal, List<Long> featureIds);
|
||||||
|
|
||||||
List<SaasFeatureResourceResp> list(PageSaasFeatureResourceReq param);
|
List<SaasFeatureResourceResp> list(PageSaasFeatureResourceReq param);
|
||||||
@ -73,6 +83,7 @@ public interface SaasFeatureResourceService extends IService<SaasFeatureResource
|
|||||||
|
|
||||||
void refreshCache(RefreshFeatureResourceCacheParam param);
|
void refreshCache(RefreshFeatureResourceCacheParam param);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
List<SaasFeatureBO> listAllFeatureByTerminal(String terminal);
|
List<SaasFeatureBO> listAllFeatureByTerminal(String terminal);
|
||||||
|
|
||||||
void clone(CloneTerminalReq req);
|
void clone(CloneTerminalReq req);
|
||||||
|
|||||||
@ -4,9 +4,13 @@ import cn.axzo.foundation.page.PageResp;
|
|||||||
import cn.axzo.tyr.client.model.req.BatchUpsertPageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.BatchUpsertPageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageElementCategoryV2Req;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementCategoryResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
@ -19,6 +23,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface SaasPageElementCategoryService extends IService<SaasPageElementCategory> {
|
public interface SaasPageElementCategoryService extends IService<SaasPageElementCategory> {
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
List<ListPageElementCategoryResp> listGroupByTerminal(PageElementCategoryReq req);
|
List<ListPageElementCategoryResp> listGroupByTerminal(PageElementCategoryReq req);
|
||||||
|
|
||||||
Long saveOrUpdate(SaveOrUpdatePageElementCategoryReq req);
|
Long saveOrUpdate(SaveOrUpdatePageElementCategoryReq req);
|
||||||
@ -26,4 +31,8 @@ public interface SaasPageElementCategoryService extends IService<SaasPageElement
|
|||||||
void delete(DeletePageElementCategoryReq req);
|
void delete(DeletePageElementCategoryReq req);
|
||||||
|
|
||||||
void batchUpsert(BatchUpsertPageElementCategoryReq req);
|
void batchUpsert(BatchUpsertPageElementCategoryReq req);
|
||||||
|
|
||||||
|
List<PageElementCategoryResp> list(PageElementCategoryV2Req param);
|
||||||
|
|
||||||
|
PageResp<PageElementCategoryResp> page(PageElementCategoryV2Req param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package cn.axzo.tyr.server.service;
|
|||||||
|
|
||||||
import cn.axzo.foundation.page.PageResp;
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementFeatureResourceRelationResp;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
@ -9,7 +10,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface SaasPageElementFeatureResourceRelationService extends IService<SaasPageElementFeatureResourceRelation> {
|
public interface SaasPageElementFeatureResourceRelationService extends IService<SaasPageElementFeatureResourceRelation> {
|
||||||
|
|
||||||
List<SaasPageElementFeatureResourceRelation> list(PageElementFeatureResourceRelationReq param);
|
List<PageElementFeatureResourceRelationResp> list(PageElementFeatureResourceRelationReq param);
|
||||||
|
|
||||||
PageResp<SaasPageElementFeatureResourceRelation> page(PageElementFeatureResourceRelationReq param);
|
PageResp<PageElementFeatureResourceRelationResp> page(PageElementFeatureResourceRelationReq param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,8 +11,10 @@ import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
|||||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||||
import cn.axzo.tyr.client.model.enums.RolePermissionTagEnum;
|
import cn.axzo.tyr.client.model.enums.RolePermissionTagEnum;
|
||||||
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
import cn.axzo.tyr.client.model.req.ResourceSyncReq;
|
import cn.axzo.tyr.client.model.req.ResourceSyncReq;
|
||||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||||
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.server.config.MqProducer;
|
import cn.axzo.tyr.server.config.MqProducer;
|
||||||
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
||||||
import cn.axzo.tyr.server.event.payload.SaasFeatureResourceUpsertPayload;
|
import cn.axzo.tyr.server.event.payload.SaasFeatureResourceUpsertPayload;
|
||||||
@ -30,6 +32,7 @@ import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateL
|
|||||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||||
import cn.axzo.tyr.server.service.FeatureResourceSyncService;
|
import cn.axzo.tyr.server.service.FeatureResourceSyncService;
|
||||||
|
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||||
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
||||||
import cn.azxo.framework.common.constatns.Constants;
|
import cn.azxo.framework.common.constatns.Constants;
|
||||||
@ -95,6 +98,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
|||||||
|
|
||||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||||
private final UserProfileServiceApi userProfileServiceApi;
|
private final UserProfileServiceApi userProfileServiceApi;
|
||||||
|
private final SaasFeatureResourceService saasFeatureResourceService;
|
||||||
|
|
||||||
@Qualifier("asyncExecutor")
|
@Qualifier("asyncExecutor")
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -456,37 +460,26 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
|||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map<Long, SaasRole> roleMap = roles.stream()
|
||||||
|
.filter(e -> StringUtils.isNotBlank(e.getRoleCode()))
|
||||||
|
.collect(Collectors.toMap(SaasRole::getId, Function.identity()));
|
||||||
|
|
||||||
Map<Long, List<Long>> groupIdToRoleIdsMap = roleRelations.stream()
|
Map<Long, List<SaasRole>> groupRoleMap = roleRelations.stream()
|
||||||
.collect(Collectors.groupingBy(SaasPgroupRoleRelation::getGroupId,
|
.collect(Collectors.groupingBy(SaasPgroupRoleRelation::getGroupId,
|
||||||
Collectors.mapping(SaasPgroupRoleRelation::getRoleId, Collectors.toList())));
|
Collectors.mapping(e -> roleMap.get(e.getRoleId()), Collectors.toList())));
|
||||||
|
|
||||||
Map<Long, String> roleIdToRoleCodeMap = Maps.newHashMap();
|
|
||||||
for (SaasRole role : roles) {
|
|
||||||
if (StringUtils.isNotBlank(role.getRoleCode())) {
|
|
||||||
roleIdToRoleCodeMap.put(role.getId(), role.getRoleCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return permissionRelations.stream()
|
return permissionRelations.stream()
|
||||||
.map(e -> {
|
.map(e -> {
|
||||||
List<Long> roleIds = groupIdToRoleIdsMap.get(e.getGroupId());
|
List<SaasRole> saasRoles = groupRoleMap.get(e.getGroupId());
|
||||||
if (CollectionUtils.isEmpty(roleIds)) {
|
if (CollectionUtils.isEmpty(saasRoles)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return roleIds.stream()
|
return saasRoles.stream()
|
||||||
.map(roleId -> {
|
.map(role -> PermissionGroupRoleWrapper.builder()
|
||||||
String roleCode = roleIdToRoleCodeMap.get(roleId);
|
|
||||||
if (StringUtils.isBlank(roleCode)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return PermissionGroupRoleWrapper.builder()
|
|
||||||
.featureId(e.getFeatureId())
|
.featureId(e.getFeatureId())
|
||||||
.roleCode(roleCode)
|
.roleCode(role.getRoleCode())
|
||||||
.tags(e.getTags())
|
.tags(e.getTags())
|
||||||
.build();
|
.build())
|
||||||
|
|
||||||
})
|
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
})
|
})
|
||||||
|
|||||||
@ -26,12 +26,12 @@ import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
|||||||
import cn.axzo.tyr.client.model.req.ListRoleReq;
|
import cn.axzo.tyr.client.model.req.ListRoleReq;
|
||||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
|
||||||
import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq;
|
import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
|
import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
|
||||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementFeatureResourceRelationResp;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
||||||
@ -45,7 +45,6 @@ import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
|||||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao;
|
import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||||
import cn.axzo.tyr.server.repository.mapper.SaasFeatureResourceMapper;
|
import cn.axzo.tyr.server.repository.mapper.SaasFeatureResourceMapper;
|
||||||
@ -403,19 +402,11 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
|||||||
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
||||||
.featureResourceUniCodes(Sets.newHashSet(featureResourceTreeNode.getUniCode()))
|
.featureResourceUniCodes(Sets.newHashSet(featureResourceTreeNode.getUniCode()))
|
||||||
.types(Sets.newHashSet(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE))
|
.types(Sets.newHashSet(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE))
|
||||||
|
.needPageElement(true)
|
||||||
.build();
|
.build();
|
||||||
List<SaasPageElementFeatureResourceRelation> pageElementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
Optional<PageElementResp> pageElementOptional = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq)
|
||||||
|
.stream()
|
||||||
if (CollectionUtils.isEmpty(pageElementFeatureResourceRelations)) {
|
.map(PageElementFeatureResourceRelationResp::getPageElement)
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PageElementReq pageElementReq = PageElementReq.builder()
|
|
||||||
.codes(pageElementFeatureResourceRelations.stream()
|
|
||||||
.map(SaasPageElementFeatureResourceRelation::getPageElementCode)
|
|
||||||
.collect(Collectors.toSet()))
|
|
||||||
.build();
|
|
||||||
Optional<PageElementResp> pageElementOptional = saasPageElementService.list(pageElementReq).stream()
|
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if (!pageElementOptional.isPresent()) {
|
if (!pageElementOptional.isPresent()) {
|
||||||
@ -821,20 +812,84 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
|||||||
|
|
||||||
Map<String, List<PageElementResp>> pageElements = listPageElements(param, page.getRecords());
|
Map<String, List<PageElementResp>> pageElements = listPageElements(param, page.getRecords());
|
||||||
|
|
||||||
|
Map<Long, List<SaasFeatureResourceResp>> children = listChildren(param, page.getRecords());
|
||||||
|
|
||||||
|
Map<Long, List<SaasFeatureResourceResp>> ancestors = listAncestor(param, page.getRecords());
|
||||||
|
|
||||||
return PageConverter.toResp(page, e -> from(e,
|
return PageConverter.toResp(page, e -> from(e,
|
||||||
uniCodeFeatureCodeMap,
|
uniCodeFeatureCodeMap,
|
||||||
pageElements));
|
pageElements,
|
||||||
|
ancestors,
|
||||||
|
children));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<Long, List<SaasFeatureResourceResp>> listAncestor(PageSaasFeatureResourceReq param,
|
||||||
|
List<SaasFeatureResource> saasFeatureResources) {
|
||||||
|
if (CollectionUtils.isEmpty(saasFeatureResources) || BooleanUtils.isNotTrue(param.getNeedAncestor())) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Long> parentIds = saasFeatureResources.stream()
|
||||||
|
.map(SaasFeatureResource::splitPath)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<Long, SaasFeatureResourceResp> parents = this.list(PageSaasFeatureResourceReq.builder()
|
||||||
|
.ids(parentIds)
|
||||||
|
.build())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity()));
|
||||||
|
|
||||||
|
return saasFeatureResources.stream()
|
||||||
|
.collect(Collectors.toMap(SaasFeatureResource::getId,
|
||||||
|
e -> e.splitPath().stream()
|
||||||
|
.filter(parentId -> !Objects.equals(parentId, e.getId()))
|
||||||
|
.map(parents::get)
|
||||||
|
.collect(Collectors.toList())));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<Long, List<SaasFeatureResourceResp>> listChildren(PageSaasFeatureResourceReq param,
|
||||||
|
List<SaasFeatureResource> saasFeatureResources) {
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(saasFeatureResources) || BooleanUtils.isNotTrue(param.getNeedChildren())) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> paths = saasFeatureResources.stream()
|
||||||
|
.map(SaasFeatureResource::getPath)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
List<SaasFeatureResourceResp> children = this.list(PageSaasFeatureResourceReq.builder()
|
||||||
|
.paths(paths)
|
||||||
|
.build());
|
||||||
|
if (CollectionUtils.isEmpty(children)) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
return saasFeatureResources.stream()
|
||||||
|
.collect(Collectors.toMap(SaasFeatureResource::getId,
|
||||||
|
e -> children.stream()
|
||||||
|
.filter(c -> c.getPath().startsWith(e.getPath()) && !Objects.equals(e.getPath(), c.getPath()))
|
||||||
|
.collect(Collectors.toList())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SaasFeatureResourceResp from(SaasFeatureResource featureResource,
|
private SaasFeatureResourceResp from(SaasFeatureResource featureResource,
|
||||||
Map<String, Set<String>> uniCodeFeatureCodeMap,
|
Map<String, Set<String>> uniCodeFeatureCodeMap,
|
||||||
Map<String, List<PageElementResp>> pageElements) {
|
Map<String, List<PageElementResp>> pageElements,
|
||||||
|
Map<Long, List<SaasFeatureResourceResp>> children,
|
||||||
|
Map<Long, List<SaasFeatureResourceResp>> ancestors) {
|
||||||
SaasFeatureResourceResp saasFeatureResourceResp = SaasFeatureResourceResp.builder().build();
|
SaasFeatureResourceResp saasFeatureResourceResp = SaasFeatureResourceResp.builder().build();
|
||||||
BeanUtils.copyProperties(featureResource, saasFeatureResourceResp);
|
BeanUtils.copyProperties(featureResource, saasFeatureResourceResp);
|
||||||
|
|
||||||
saasFeatureResourceResp.setFeatureCodes(uniCodeFeatureCodeMap.get(featureResource.getUniCode()));
|
saasFeatureResourceResp.setFeatureCodes(uniCodeFeatureCodeMap.get(featureResource.getUniCode()));
|
||||||
|
|
||||||
saasFeatureResourceResp.setSaasPageElements(pageElements.get(saasFeatureResourceResp.getUniCode()));
|
saasFeatureResourceResp.setSaasPageElements(pageElements.get(saasFeatureResourceResp.getUniCode()));
|
||||||
|
|
||||||
|
saasFeatureResourceResp.setChildren(children.get(saasFeatureResourceResp.getId()));
|
||||||
|
|
||||||
|
saasFeatureResourceResp.setAncestors(ancestors.get(saasFeatureResourceResp.getId()));
|
||||||
|
|
||||||
return saasFeatureResourceResp;
|
return saasFeatureResourceResp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -853,12 +908,12 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
|||||||
.build();
|
.build();
|
||||||
return saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq)
|
return saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq)
|
||||||
.stream()
|
.stream()
|
||||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode,
|
.collect(Collectors.groupingBy(PageElementFeatureResourceRelationResp::getFeatureResourceUniCode,
|
||||||
Collectors.mapping(SaasPageElementFeatureResourceRelation::getPageElementCode, Collectors.toSet())));
|
Collectors.mapping(PageElementFeatureResourceRelationResp::getPageElementCode, Collectors.toSet())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, List<PageElementResp>> listPageElements(PageSaasFeatureResourceReq param,
|
private Map<String, List<PageElementResp>> listPageElements(PageSaasFeatureResourceReq param,
|
||||||
List<SaasFeatureResource> saasFeatureResources) {
|
List<SaasFeatureResource> saasFeatureResources) {
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(saasFeatureResources) || BooleanUtils.isNotTrue(param.getNeedPageElement())) {
|
if (CollectionUtils.isEmpty(saasFeatureResources) || BooleanUtils.isNotTrue(param.getNeedPageElement())) {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
@ -872,26 +927,12 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
|||||||
.types(param.getPageElementTypes())
|
.types(param.getPageElementTypes())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
List<SaasPageElementFeatureResourceRelation> pageElementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
List<PageElementFeatureResourceRelationResp> pageElementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(pageElementFeatureResourceRelations)) {
|
|
||||||
return Collections.emptyMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
Set<String> elementCodes = pageElementFeatureResourceRelations.stream()
|
|
||||||
.map(SaasPageElementFeatureResourceRelation::getPageElementCode)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
|
|
||||||
PageElementReq pageElementReq = PageElementReq.builder()
|
|
||||||
.codes(elementCodes)
|
|
||||||
.build();
|
|
||||||
Map<String, PageElementResp> elementMap = saasPageElementService.list(pageElementReq).stream()
|
|
||||||
.collect(Collectors.toMap(PageElementResp::getCode, Function.identity()));
|
|
||||||
|
|
||||||
return pageElementFeatureResourceRelations.stream()
|
return pageElementFeatureResourceRelations.stream()
|
||||||
.filter(e -> elementMap.get(e.getPageElementCode()) != null)
|
.filter(e -> e.getPageElement() != null)
|
||||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode,
|
.collect(Collectors.groupingBy(PageElementFeatureResourceRelationResp::getFeatureResourceUniCode,
|
||||||
Collectors.mapping(e -> elementMap.get(e.getPageElementCode()), Collectors.toList())));
|
Collectors.mapping(PageElementFeatureResourceRelationResp::getPageElement, Collectors.toList())));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,10 @@ package cn.axzo.tyr.server.service.impl;
|
|||||||
|
|
||||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||||
import cn.axzo.basics.common.util.AssertUtil;
|
import cn.axzo.basics.common.util.AssertUtil;
|
||||||
|
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
||||||
|
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||||
import cn.axzo.foundation.exception.Axssert;
|
import cn.axzo.foundation.exception.Axssert;
|
||||||
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.framework.rocketmq.Event;
|
import cn.axzo.framework.rocketmq.Event;
|
||||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||||
@ -10,10 +13,12 @@ import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
|||||||
import cn.axzo.tyr.client.model.req.BatchUpsertPageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.BatchUpsertPageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageElementCategoryV2Req;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||||
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
|
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
|
||||||
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
||||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementCategoryResp;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import cn.axzo.tyr.server.config.MqProducer;
|
import cn.axzo.tyr.server.config.MqProducer;
|
||||||
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
@ -27,12 +32,15 @@ import cn.axzo.tyr.server.service.SaasPageElementCategoryService;
|
|||||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||||
import com.alibaba.nacos.common.utils.UuidUtils;
|
import com.alibaba.nacos.common.utils.UuidUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.BooleanUtils;
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -398,4 +406,28 @@ public class SaasPageElementCategoryServiceImpl extends ServiceImpl<SaasPageElem
|
|||||||
.operateData(baseCategory)
|
.operateData(baseCategory)
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PageElementCategoryResp> list(PageElementCategoryV2Req param) {
|
||||||
|
return PageConverter.drainAll(pageNumber -> {
|
||||||
|
param.setPage(pageNumber);
|
||||||
|
param.setPageSize(1000);
|
||||||
|
return page(param);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResp<PageElementCategoryResp> page(PageElementCategoryV2Req param) {
|
||||||
|
QueryWrapper<SaasPageElementCategory> wrapper = QueryWrapperHelper.fromBean(param, SaasPageElementCategory.class);
|
||||||
|
wrapper.eq("is_delete", 0);
|
||||||
|
|
||||||
|
IPage<SaasPageElementCategory> page = this.page(PageConverter.toMybatis(param, SaasPageElementCategory.class), wrapper);
|
||||||
|
return PageConverter.toResp(page, this::from);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PageElementCategoryResp from(SaasPageElementCategory saasPageElementCategory) {
|
||||||
|
PageElementCategoryResp result = PageElementCategoryResp.builder().build();
|
||||||
|
BeanUtils.copyProperties(saasPageElementCategory, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,17 +5,30 @@ import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
|||||||
import cn.axzo.foundation.page.PageResp;
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementFeatureResourceRelationResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementFeatureResourceRelationMapper;
|
import cn.axzo.tyr.server.repository.mapper.SaasPageElementFeatureResourceRelationMapper;
|
||||||
|
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||||
import cn.axzo.tyr.server.service.SaasPageElementFeatureResourceRelationService;
|
import cn.axzo.tyr.server.service.SaasPageElementFeatureResourceRelationService;
|
||||||
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -24,8 +37,13 @@ import java.util.stream.Collectors;
|
|||||||
public class SaasPageElementFeatureResourceRelationServiceImpl extends ServiceImpl<SaasPageElementFeatureResourceRelationMapper, SaasPageElementFeatureResourceRelation>
|
public class SaasPageElementFeatureResourceRelationServiceImpl extends ServiceImpl<SaasPageElementFeatureResourceRelationMapper, SaasPageElementFeatureResourceRelation>
|
||||||
implements SaasPageElementFeatureResourceRelationService {
|
implements SaasPageElementFeatureResourceRelationService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SaasPageElementService saasPageElementService;
|
||||||
|
@Autowired
|
||||||
|
private SaasFeatureResourceService saasFeatureResourceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SaasPageElementFeatureResourceRelation> list(PageElementFeatureResourceRelationReq param) {
|
public List<PageElementFeatureResourceRelationResp> list(PageElementFeatureResourceRelationReq param) {
|
||||||
return PageConverter.drainAll(pageNumber -> {
|
return PageConverter.drainAll(pageNumber -> {
|
||||||
param.setPage(pageNumber);
|
param.setPage(pageNumber);
|
||||||
param.setPageSize(1000);
|
param.setPageSize(1000);
|
||||||
@ -34,7 +52,7 @@ public class SaasPageElementFeatureResourceRelationServiceImpl extends ServiceIm
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResp<SaasPageElementFeatureResourceRelation> page(PageElementFeatureResourceRelationReq param) {
|
public PageResp<PageElementFeatureResourceRelationResp> page(PageElementFeatureResourceRelationReq param) {
|
||||||
|
|
||||||
QueryWrapper<SaasPageElementFeatureResourceRelation> wrapper = QueryWrapperHelper.fromBean(param, SaasPageElementFeatureResourceRelation.class);
|
QueryWrapper<SaasPageElementFeatureResourceRelation> wrapper = QueryWrapperHelper.fromBean(param, SaasPageElementFeatureResourceRelation.class);
|
||||||
wrapper.eq("is_delete", 0);
|
wrapper.eq("is_delete", 0);
|
||||||
@ -45,6 +63,57 @@ public class SaasPageElementFeatureResourceRelationServiceImpl extends ServiceIm
|
|||||||
|
|
||||||
IPage<SaasPageElementFeatureResourceRelation> page = this.page(PageConverter.toMybatis(param, SaasPageElementFeatureResourceRelation.class), wrapper);
|
IPage<SaasPageElementFeatureResourceRelation> page = this.page(PageConverter.toMybatis(param, SaasPageElementFeatureResourceRelation.class), wrapper);
|
||||||
|
|
||||||
return PageConverter.toResp(page, Function.identity());
|
Map<String, PageElementResp> pageElements = listPageElement(page.getRecords(), param);
|
||||||
|
|
||||||
|
Map<String, SaasFeatureResourceResp> saasFeatureResources = listSaasFeatureResource(page.getRecords(), param);
|
||||||
|
|
||||||
|
return PageConverter.toResp(page, e -> from(e, pageElements, saasFeatureResources));
|
||||||
|
}
|
||||||
|
|
||||||
|
private PageElementFeatureResourceRelationResp from(SaasPageElementFeatureResourceRelation saasPageElementFeatureResourceRelation,
|
||||||
|
Map<String, PageElementResp> pageElements,
|
||||||
|
Map<String, SaasFeatureResourceResp> saasFeatureResources) {
|
||||||
|
PageElementFeatureResourceRelationResp result = PageElementFeatureResourceRelationResp.builder().build();
|
||||||
|
BeanUtils.copyProperties(saasPageElementFeatureResourceRelation, result);
|
||||||
|
|
||||||
|
result.setPageElement(pageElements.get(result.getPageElementCode()));
|
||||||
|
|
||||||
|
result.setSaasFeatureResource(saasFeatureResources.get(result.getFeatureResourceUniCode()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, PageElementResp> listPageElement(List<SaasPageElementFeatureResourceRelation> saasPageElementFeatureResourceRelations,
|
||||||
|
PageElementFeatureResourceRelationReq param) {
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(saasPageElementFeatureResourceRelations) || BooleanUtils.isNotTrue(param.getNeedPageElement())) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
return saasPageElementService.list(PageElementReq.builder()
|
||||||
|
.codes(saasPageElementFeatureResourceRelations.stream()
|
||||||
|
.map(SaasPageElementFeatureResourceRelation::getPageElementCode)
|
||||||
|
.collect(Collectors.toSet()))
|
||||||
|
.needPageElementCategory(param.getNeedPageElementCategory())
|
||||||
|
.build())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(PageElementResp::getCode, Function.identity()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, SaasFeatureResourceResp> listSaasFeatureResource(List<SaasPageElementFeatureResourceRelation> saasPageElementFeatureResourceRelations,
|
||||||
|
PageElementFeatureResourceRelationReq param) {
|
||||||
|
if (CollectionUtils.isEmpty(saasPageElementFeatureResourceRelations) || BooleanUtils.isNotTrue(param.getNeedFeatureResource())) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> uniCodes = saasPageElementFeatureResourceRelations.stream()
|
||||||
|
.map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||||
|
.uniCodes(uniCodes)
|
||||||
|
.build();
|
||||||
|
List<SaasFeatureResourceResp> featureResources = saasFeatureResourceService.list(pageSaasFeatureResourceReq);
|
||||||
|
|
||||||
|
return featureResources.stream()
|
||||||
|
.collect(Collectors.toMap(SaasFeatureResourceResp::getUniCode, Function.identity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
|||||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||||
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
|
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
|
||||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageElementCategoryV2Req;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementImportDataReq;
|
import cn.axzo.tyr.client.model.req.PageElementImportDataReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
@ -41,6 +42,7 @@ import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
|||||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementCategoryAndElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementCategoryAndElementResp;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementCategoryResp;
|
import cn.axzo.tyr.client.model.res.PageElementCategoryResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementFeatureResourceRelationResp;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementRelationFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.PageElementRelationFeatureResourceResp;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
@ -881,10 +883,10 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
.builder()
|
.builder()
|
||||||
.pageElementCodes(pageElementCodes)
|
.pageElementCodes(pageElementCodes)
|
||||||
.build();
|
.build();
|
||||||
List<SaasPageElementFeatureResourceRelation> elementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(elementFeatureResourceRelationReq);
|
List<PageElementFeatureResourceRelationResp> elementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(elementFeatureResourceRelationReq);
|
||||||
|
|
||||||
Set<String> uniCodes = elementFeatureResourceRelations.stream()
|
Set<String> uniCodes = elementFeatureResourceRelations.stream()
|
||||||
.map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode)
|
.map(PageElementFeatureResourceRelationResp::getFeatureResourceUniCode)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(uniCodes)) {
|
if (CollectionUtils.isEmpty(uniCodes)) {
|
||||||
@ -899,7 +901,7 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getUniCode, Function.identity()));
|
.collect(Collectors.toMap(SaasFeatureResourceResp::getUniCode, Function.identity()));
|
||||||
|
|
||||||
return elementFeatureResourceRelations.stream()
|
return elementFeatureResourceRelations.stream()
|
||||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getPageElementCode,
|
.collect(Collectors.groupingBy(PageElementFeatureResourceRelationResp::getPageElementCode,
|
||||||
Collectors.mapping(e -> featureResources.get(e.getFeatureResourceUniCode()), Collectors.toList())));
|
Collectors.mapping(e -> featureResources.get(e.getFeatureResourceUniCode()), Collectors.toList())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1037,6 +1039,35 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
.collect(Collectors.groupingBy(PageElementResp::getGroupCode));
|
.collect(Collectors.groupingBy(PageElementResp::getGroupCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目前saas_page_element上提现不出来层级关系,只有通过type来确定,只有type = COMPONENT时,才有父节点的记录
|
||||||
|
* @param pageElements
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Map<String, PageElementResp> listAncestorPageElement(List<SaasPageElement> pageElements,
|
||||||
|
PageElementReq param) {
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(pageElements) || BooleanUtils.isNotTrue(param.getNeedAncestor())) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> codes = pageElements.stream()
|
||||||
|
.map(SaasPageElement::getCode)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
// 因为现在的数据结构,type为PAGE的和type为COMPONENT的groupCode一样,所以要排除type=PAGE的记录
|
||||||
|
// return this.lambdaQuery()
|
||||||
|
// .in(SaasPageElement::getGroupCode, codes)
|
||||||
|
// .ne(SaasPageElement::getType, PageElementTypeEnum.PAGE)
|
||||||
|
// .list()
|
||||||
|
// .stream()
|
||||||
|
// .map(SaasPageElement::to)
|
||||||
|
// .collect(Collectors.groupingBy(PageElementResp::getGroupCode));
|
||||||
|
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, PageElementCategoryResp> listPageElementCategory(List<SaasPageElement> pageElements,
|
private Map<String, PageElementCategoryResp> listPageElementCategory(List<SaasPageElement> pageElements,
|
||||||
PageElementReq param) {
|
PageElementReq param) {
|
||||||
|
|
||||||
@ -1079,11 +1110,10 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, PageElementResp> localDBPageElements = listLocalDBPageElement(prePageElements);
|
|
||||||
|
|
||||||
// upsert pageElementCategory
|
// upsert pageElementCategory
|
||||||
upsertPageElementCategory(prePageElements, localDBPageElements, req);
|
upsertPageElementCategory(prePageElements, req);
|
||||||
|
|
||||||
|
Map<String, PageElementResp> localDBPageElements = listLocalDBPageElement(prePageElements);
|
||||||
|
|
||||||
List<BatchUpsertPageElementReq.UpsertPageElementReq> preUpsertPageElements = prePageElements.stream()
|
List<BatchUpsertPageElementReq.UpsertPageElementReq> preUpsertPageElements = prePageElements.stream()
|
||||||
.flatMap(e -> {
|
.flatMap(e -> {
|
||||||
@ -1118,7 +1148,6 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void upsertPageElementCategory(List<PageElementResp> prePageElements,
|
private void upsertPageElementCategory(List<PageElementResp> prePageElements,
|
||||||
Map<String, PageElementResp> localDBPageElements,
|
|
||||||
SyncPageElementReq req) {
|
SyncPageElementReq req) {
|
||||||
|
|
||||||
List<PageElementCategoryResp> prePageElementCategories = prePageElements.stream()
|
List<PageElementCategoryResp> prePageElementCategories = prePageElements.stream()
|
||||||
@ -1130,17 +1159,21 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
|||||||
log.info("no pageElementCategory need sync");
|
log.info("no pageElementCategory need sync");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Map<String, PageElementCategoryResp> localDBPageElementCategories = saasPageElementCategoryService.list(PageElementCategoryV2Req.builder()
|
||||||
Map<String, PageElementCategoryResp> localDBPageElementCategories = localDBPageElements.values().stream()
|
.itemCodes(prePageElementCategories.stream()
|
||||||
.map(PageElementResp::getPageElementCategory)
|
.map(PageElementCategoryResp::getItemCode)
|
||||||
.filter(Objects::nonNull)
|
.collect(Collectors.toSet()))
|
||||||
.collect(Collectors.toMap(PageElementCategoryResp::getItemCode, Function.identity(), (f, s) -> f));
|
.build())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(PageElementCategoryResp::getItemCode, Function.identity()));
|
||||||
|
|
||||||
List<BatchUpsertPageElementCategoryReq.UpsertPageElementCategory> upsert = prePageElementCategories.stream()
|
List<BatchUpsertPageElementCategoryReq.UpsertPageElementCategory> upsert = prePageElementCategories.stream()
|
||||||
.map(e -> {
|
.map(e -> {
|
||||||
PageElementCategoryResp localDBPageElementCategory = localDBPageElementCategories.get(e.getItemCode());
|
PageElementCategoryResp localDBPageElementCategory = localDBPageElementCategories.get(e.getItemCode());
|
||||||
return BatchUpsertPageElementCategoryReq.UpsertPageElementCategory.builder()
|
return BatchUpsertPageElementCategoryReq.UpsertPageElementCategory.builder()
|
||||||
.id(Objects.nonNull(localDBPageElementCategory) ? localDBPageElementCategory.getId() : null)
|
.id(Optional.ofNullable(localDBPageElementCategory)
|
||||||
|
.map(PageElementCategoryResp::getId)
|
||||||
|
.orElse(null))
|
||||||
.terminal(e.getTerminal())
|
.terminal(e.getTerminal())
|
||||||
.itemCode(e.getItemCode())
|
.itemCode(e.getItemCode())
|
||||||
.itemName(e.getItemName())
|
.itemName(e.getItemName())
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import cn.axzo.tyr.client.model.req.WorkspacePermissionIdentityReq;
|
|||||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||||
import cn.axzo.tyr.client.model.res.ListIdentityFromPermissionResp;
|
import cn.axzo.tyr.client.model.res.ListIdentityFromPermissionResp;
|
||||||
import cn.axzo.tyr.client.model.res.ListPermissionFromRoleGroupResp;
|
import cn.axzo.tyr.client.model.res.ListPermissionFromRoleGroupResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementFeatureResourceRelationResp;
|
||||||
import cn.axzo.tyr.client.model.res.QueryIdentityByPermissionResp;
|
import cn.axzo.tyr.client.model.res.QueryIdentityByPermissionResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
||||||
@ -36,7 +37,6 @@ import cn.axzo.tyr.server.repository.entity.ProductFeatureQuery;
|
|||||||
import cn.axzo.tyr.server.repository.entity.RolePermission;
|
import cn.axzo.tyr.server.repository.entity.RolePermission;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
|
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
|
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
|
||||||
import cn.axzo.tyr.server.repository.mapper.SaasRoleUserRelationMapper;
|
import cn.axzo.tyr.server.repository.mapper.SaasRoleUserRelationMapper;
|
||||||
@ -380,8 +380,9 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
||||||
.pageElementCodes(req.getFeatureCodes())
|
.pageElementCodes(req.getFeatureCodes())
|
||||||
.terminal(req.getTerminal())
|
.terminal(req.getTerminal())
|
||||||
|
.needFeatureResource(true)
|
||||||
.build();
|
.build();
|
||||||
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
List<PageElementFeatureResourceRelationResp> relations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(relations)) {
|
if (CollectionUtils.isEmpty(relations)) {
|
||||||
log.info("not found in SaasPageElementFeatureResourceRelation, featureCodes:{},terminal:{}",
|
log.info("not found in SaasPageElementFeatureResourceRelation, featureCodes:{},terminal:{}",
|
||||||
@ -389,14 +390,13 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<String> uniCodes = relations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toSet());
|
List<SaasFeatureResourceResp> featureResources = relations.stream()
|
||||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
.map(PageElementFeatureResourceRelationResp::getSaasFeatureResource)
|
||||||
.uniCodes(uniCodes)
|
.filter(Objects::nonNull)
|
||||||
.build();
|
.collect(Collectors.toList());
|
||||||
List<SaasFeatureResourceResp> featureResources = saasFeatureResourceService.list(pageSaasFeatureResourceReq);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(featureResources)) {
|
if (CollectionUtils.isEmpty(featureResources)) {
|
||||||
log.info("not found in SaasFeatureResource, unicode:{}", uniCodes);
|
log.info("not found in SaasFeatureResource, pageElementCodes:{}", req.getFeatureCodes());
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
return saasFeatureResourceService.list(PageSaasFeatureResourceReq.builder()
|
return saasFeatureResourceService.list(PageSaasFeatureResourceReq.builder()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user