feat(REQ-2699): 刷新cmp资源路由接口

This commit is contained in:
李昆鹏 2024-08-09 14:18:22 +08:00
parent fc0f60e467
commit 836090d129

View File

@ -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<SaasPageElement> 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<SaasPageElementFeatureResourceRelation> 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<SaasFeatureResource> 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<Long> ids;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class RefreshFeatureResourceLinkUrlParam {
@Builder.Default
private Integer pageSize = 10;
}
}