feat: (feature/REQ-3167) 资源目录列表接口支持查询页面元素

This commit is contained in:
李龙 2024-11-25 10:15:12 +08:00
parent cbc7769418
commit 944c0d099b
8 changed files with 123 additions and 22 deletions

View File

@ -46,7 +46,7 @@ public interface PageElementApi {
/** 查询页面元素类型(按端分组) **/
@PostMapping("/api/pageElementCategory/list")
ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory();
ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory(@RequestBody PageElementCategoryReq req);
/** 新增、编辑页面元素类型 **/
@PostMapping("/api/pageElementCategory/saveOrUpdate")

View File

@ -0,0 +1,18 @@
package cn.axzo.tyr.client.model.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PageElementCategoryReq {
/**
* 是否需要查询分组下的页面元素
*/
private Boolean needPage;
}

View File

@ -3,6 +3,7 @@ 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 cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -34,4 +35,10 @@ public class PageElementReq implements IPageReq {
@CriteriaField(ignore = true)
private Boolean needFeatureSource;
@CriteriaField(field = "itemCode", operator = Operator.IN)
private Set<String> itemCodes;
@CriteriaField(field = "type", operator = Operator.IN)
private Set<PageElementTypeEnum> types;
}

View File

@ -37,5 +37,11 @@ public class ListPageElementCategoryResp {
private String itemName;
/** 端 **/
private String terminal;
/**
* 分组下的页面元素
* 1needPage = true这里只有saas_page_element.type = PAGE的记录
*/
private List<PageElementResp> pageElement;
}
}

View File

@ -3,8 +3,25 @@ package cn.axzo.tyr.server.controller.permission;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.PageElementApi;
import cn.axzo.tyr.client.model.req.*;
import cn.axzo.tyr.client.model.res.*;
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
import cn.axzo.tyr.client.model.req.DeletePageElementReq;
import cn.axzo.tyr.client.model.req.GetPageElementReq;
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
import cn.axzo.tyr.client.model.req.IdReq;
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
import cn.axzo.tyr.client.model.req.PageElementImportDataReq;
import cn.axzo.tyr.client.model.req.PageElementReportReq;
import cn.axzo.tyr.client.model.req.PageElementReq;
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
import cn.axzo.tyr.client.model.req.PageQueryElementV2Req;
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementReq;
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
import cn.axzo.tyr.client.model.res.PageElementCategoryAndElementResp;
import cn.axzo.tyr.client.model.res.PageElementRelationFeatureResourceResp;
import cn.axzo.tyr.client.model.res.PageElementResp;
import cn.axzo.tyr.server.service.SaasPageElementCategoryService;
import cn.axzo.tyr.server.service.SaasPageElementService;
import lombok.RequiredArgsConstructor;
@ -59,8 +76,8 @@ public class PageElementController implements PageElementApi {
}
@Override
public ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory() {
return ApiResult.ok(saasPageElementCategoryService.listGroupByTerminal());
public ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory(PageElementCategoryReq req) {
return ApiResult.ok(saasPageElementCategoryService.listGroupByTerminal(req));
}
@Override

View File

@ -1,6 +1,7 @@
package cn.axzo.tyr.server.service;
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
@ -13,7 +14,7 @@ import java.util.List;
*/
public interface SaasPageElementCategoryService {
List<ListPageElementCategoryResp> listGroupByTerminal();
List<ListPageElementCategoryResp> listGroupByTerminal(PageElementCategoryReq req);
Long saveOrUpdate(SaveOrUpdatePageElementCategoryReq req);

View File

@ -20,6 +20,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
*
* @param request 上报元素列表
*/
@Deprecated
void report(PageElementReportReq request);
/**
@ -28,6 +29,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
* @param request
* @return
*/
@Deprecated
List<PageElementResp> getPageElement(GetPageElementReq request);
/**
@ -37,6 +39,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
* @param featureResourceUniCodes 组件code
* @return
*/
@Deprecated
List<PageElementBasicDTO> getByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes);
/**
@ -44,6 +47,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
*
* @param modifyPageElementRelation 关系对象
*/
@Deprecated
void modifyPageElementRelation(ModifyPageElementRelationDTO modifyPageElementRelation);
/**
@ -53,6 +57,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
* @param featureResourceUniCodes 组件code
* @param operatorId 操作人
*/
@Deprecated
void deleteRelationByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId);
/**
@ -61,6 +66,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
* @param request 查询条件
* @return
*/
@Deprecated
PageResp<PageElementCategoryAndElementResp> page(PageQueryElementReq request);
/**
@ -76,6 +82,7 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
cn.axzo.foundation.page.PageResp<PageElementResp> page(PageElementReq param);
@Deprecated
PageResp<PageElementResp> pageV2(PageQueryElementV2Req req);
Long saveOrUpdate(SaveOrUpdatePageElementReq req);

View File

@ -4,11 +4,15 @@ import cn.axzo.basics.common.constant.enums.DeleteEnum;
import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
import cn.axzo.tyr.client.model.req.PageElementCategoryReq;
import cn.axzo.tyr.client.model.req.PageElementReq;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
import cn.axzo.tyr.client.model.res.PageElementResp;
import cn.axzo.tyr.server.config.MqProducer;
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
import cn.axzo.tyr.server.repository.dao.SaasPageElementCategoryDao;
@ -17,17 +21,21 @@ import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationD
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
import cn.axzo.tyr.server.service.SaasPageElementCategoryService;
import cn.axzo.tyr.server.service.SaasPageElementService;
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.axzo.tyr.server.event.inner.EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT;
@ -50,28 +58,65 @@ public class SaasPageElementCategoryServiceImpl implements SaasPageElementCatego
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
private final MqProducer mqProducer;
private final SaasPageElementService saasPageElementService;
@Override
public List<ListPageElementCategoryResp> listGroupByTerminal() {
List<ListPageElementCategoryResp> categoryResps = Lists.newArrayList();
public List<ListPageElementCategoryResp> listGroupByTerminal(PageElementCategoryReq req) {
List<SaasPageElementCategory> categories = saasPageElementCategoryDao.lambdaQuery()
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.value)
.list();
if (CollectionUtils.isEmpty(categories)) {
return categoryResps;
return Collections.emptyList();
}
Map<String, List<SaasPageElementCategory>> categoryMap = categories.stream().collect(Collectors.groupingBy(SaasPageElementCategory::getTerminal));
categoryMap.forEach((key, value) -> {
categoryResps.add(ListPageElementCategoryResp.builder().terminal(key)
.pageElementCategories(value.stream().map(c -> ListPageElementCategoryResp.PageElementCategoryDTO
.builder()
.id(c.getId())
.itemCode(c.getItemCode())
.itemName(c.getItemName())
.terminal(c.getTerminal())
.build()).collect(Collectors.toList())).build());
});
return categoryResps;
Map<String, List<PageElementResp>> pageElementMap = listPageElement(categories, req);
return categories.stream()
.collect(Collectors.groupingBy(SaasPageElementCategory::getTerminal))
.entrySet()
.stream()
.map(e -> from(e, pageElementMap))
.collect(Collectors.toList());
}
private ListPageElementCategoryResp from(Map.Entry<String, List<SaasPageElementCategory>> entry,
Map<String, List<PageElementResp>> pageElementMap) {
return ListPageElementCategoryResp.builder()
.terminal(entry.getKey())
.pageElementCategories(entry.getValue().stream()
.map(c -> ListPageElementCategoryResp.PageElementCategoryDTO
.builder()
.id(c.getId())
.itemCode(c.getItemCode())
.itemName(c.getItemName())
.terminal(c.getTerminal())
.pageElement(pageElementMap.get(c.getItemCode()))
.build())
.collect(Collectors.toList()))
.build();
}
private Map<String, List<PageElementResp>> listPageElement(List<SaasPageElementCategory> categories,
PageElementCategoryReq req) {
if (CollectionUtils.isEmpty(categories) || BooleanUtils.isNotTrue(req.getNeedPage())) {
return Collections.emptyMap();
}
Set<String> itemCodes = categories.stream()
.map(SaasPageElementCategory::getItemCode)
.collect(Collectors.toSet());
if (CollectionUtils.isEmpty(itemCodes)) {
return Collections.emptyMap();
}
return saasPageElementService.list(PageElementReq.builder()
.itemCodes(itemCodes)
.types(Sets.newHashSet(PageElementTypeEnum.PAGE))
.build())
.stream()
.collect(Collectors.groupingBy(PageElementResp::getItemCode));
}
@Override