diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/PrivateController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/PrivateController.java index ceabd520..42a021de 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/PrivateController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/PrivateController.java @@ -4,16 +4,14 @@ import cn.axzo.basics.common.constant.enums.DeleteEnum; import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; import cn.axzo.basics.common.util.TreeUtil; import cn.axzo.foundation.page.PageResp; +import cn.axzo.framework.auth.domain.TerminalInfo; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.rocketmq.Event; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.tyr.client.common.enums.FeatureResourceType; +import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum; import cn.axzo.tyr.client.model.product.ProductSearchListReq; -import cn.axzo.tyr.client.model.req.CommonDictQueryReq; -import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq; -import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq; -import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq; -import cn.axzo.tyr.client.model.req.PermissionCheckReq; -import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; +import cn.axzo.tyr.client.model.req.*; import cn.axzo.tyr.client.model.res.CommonDictResp; import cn.axzo.tyr.client.model.res.FeatureResourceDTO; import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode; @@ -27,21 +25,8 @@ import cn.axzo.tyr.server.job.CacheProductPermissionJob; import cn.axzo.tyr.server.job.CacheRoleFeatureResourceJob; import cn.axzo.tyr.server.job.CacheRolePermissionJob; import cn.axzo.tyr.server.job.CacheSaasFeatureJob; -import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; -import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao; -import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao; -import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao; -import cn.axzo.tyr.server.repository.dao.SaasRoleDao; -import cn.axzo.tyr.server.repository.dao.SaasRoleGroupDao; -import cn.axzo.tyr.server.repository.dao.SaasRoleGroupRelationDao; -import cn.axzo.tyr.server.repository.entity.SaasFeature; -import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; -import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation; -import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation; -import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation; -import cn.axzo.tyr.server.repository.entity.SaasRole; -import cn.axzo.tyr.server.repository.entity.SaasRoleGroup; -import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation; +import cn.axzo.tyr.server.repository.dao.*; +import cn.axzo.tyr.server.repository.entity.*; import cn.axzo.tyr.server.service.ProductFeatureRelationService; import cn.axzo.tyr.server.service.ProductPermissionCacheService; import cn.axzo.tyr.server.service.RolePermissionCacheService; @@ -54,6 +39,7 @@ import cn.axzo.tyr.server.service.TyrSaasAuthService; import cn.axzo.tyr.server.service.WorkspaceProductService; import cn.axzo.tyr.server.service.impl.SaasFeatureResourceCacheService; import cn.axzo.tyr.server.util.FeatureCodeUtil; +import cn.azxo.framework.common.utils.StringUtils; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.JSON; @@ -145,6 +131,10 @@ public class PrivateController { private SaasFeatureResourceService saasFeatureResourceService; @Autowired private RolePermissionCacheService rolePermissionCacheService; + @Autowired + private SaasPageElementDao saasPageElementDao; + @Autowired + private SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao; /** * 统一层级的roleGroup按照id升序,sort从1递增 @@ -717,6 +707,56 @@ public class PrivateController { return productPermissionCacheService.list(request); } + @PostMapping("/api/private/saasPageElement/refreshCmpFeatureResourceLinkUrl") + public ApiResult refreshCmpFeatureResourceLinkUrl(@RequestBody RefreshFeatureResourceLinkUrlParam request) { + Long startId = 0L; + while (true) { + List saasPageElements = saasPageElementDao.lambdaQuery() + .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) + .eq(SaasPageElement::getTerminal, TerminalInfo.NT_CMP_APP_GENERAL) + .ne(SaasPageElement::getLinkUrl, StringUtils.EMPTY) + .gt(BaseEntity::getId, startId) + .orderByAsc(BaseEntity::getId) + .last("LIMIT " + request.getPageSize()) + .list(); + if (CollectionUtils.isEmpty(saasPageElements)) { + return ApiResult.ok(); + } + + for (SaasPageElement pageElement : saasPageElements) { + if (org.apache.commons.lang3.StringUtils.isBlank(pageElement.getLinkUrl())) { + continue; + } + List relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(pageElement.getCode(), TerminalInfo.NT_CMP_APP_GENERAL, Lists.newArrayList(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE.getValue())); + if (org.apache.commons.collections4.CollectionUtils.isEmpty(relations)) { + continue; + } + List saasFeatureResources = saasFeatureResourceDao.lambdaQuery() + .eq(SaasFeatureResource::getUniCode, relations.get(0).getFeatureResourceUniCode()) + .eq(SaasFeatureResource::getTerminal, TerminalInfo.NT_CMP_APP_GENERAL) + .list(); + if (org.apache.commons.collections4.CollectionUtils.isEmpty(saasFeatureResources)) { + continue; + } + SaasFeatureResource saasFeatureResource = saasFeatureResources.get(0); + if (!FeatureResourceType.APP_ENTRY.getCode().equals(saasFeatureResource.getFeatureType()) + || pageElement.getLinkUrl().equals(saasFeatureResource.getLinkUrl())) { + continue; + } + saasFeatureResourceDao.lambdaUpdate() + .eq(BaseEntity::getId, saasFeatureResource.getId()) + .set(SaasFeatureResource::getLinkUrl, pageElement.getLinkUrl()) + .update(); + log.info("refreshCmpFeatureResourceLinkUrl SaasFeatureResourceId:{}", saasFeatureResource.getId()); + } + + + startId = saasPageElements.get(saasPageElements.size() - 1).getId(); + } + +// return ApiResult.ok(); + } + @Data @Builder @NoArgsConstructor @@ -796,4 +836,13 @@ public class PrivateController { private List ids; } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RefreshFeatureResourceLinkUrlParam { + @Builder.Default + private Integer pageSize = 10; + } }