feat(REQ-2545): 分页查询页面元素接口
This commit is contained in:
parent
6b10eacdd7
commit
25c39c86ba
@ -1,9 +1,11 @@
|
||||
package cn.axzo.tyr.client.feign;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -30,7 +32,11 @@ public interface PageElementApi {
|
||||
@PostMapping("/api/pageElement/getPageElement")
|
||||
ApiResult<List<PageElementResp>> getPageElement(@RequestBody @Valid GetPageElementReq req);
|
||||
|
||||
/** 查询页面资源 **/
|
||||
/** 编辑页面、页面组件的元素 **/
|
||||
@PostMapping("/api/pageElement/modifyPageElementRelation")
|
||||
ApiResult<Void> modifyPageElementRelation(@RequestBody @Valid ModifyPageElementRelationDTO req);
|
||||
|
||||
/** 分页查询页面资源 **/
|
||||
@PostMapping("/api/pageElement/page")
|
||||
ApiPageResult<PageElementResp> page(@RequestBody @Valid PageQueryElementReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/6/14
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PageQueryElementReq {
|
||||
|
||||
/**
|
||||
* 端
|
||||
*/
|
||||
@NotBlank(message = "端不能为空")
|
||||
private String terminal;
|
||||
|
||||
/**
|
||||
* 页面元素组件类型
|
||||
*/
|
||||
private List<String> elementTypes;
|
||||
|
||||
/**
|
||||
* 搜索条件
|
||||
*/
|
||||
private String searchKey;
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*/
|
||||
@Builder.Default
|
||||
private Long page = 1L;
|
||||
|
||||
/**
|
||||
* 每页大小
|
||||
*/
|
||||
@Builder.Default
|
||||
private Long pageSize = 100L;
|
||||
}
|
||||
@ -23,6 +23,11 @@ public class PageElementResp {
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 元素的组编码
|
||||
*/
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 元素编码
|
||||
*/
|
||||
@ -38,6 +43,11 @@ public class PageElementResp {
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 页面路由地址
|
||||
*/
|
||||
private String linkUr;
|
||||
|
||||
/**
|
||||
* 是否已勾选
|
||||
*/
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
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.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -41,4 +43,9 @@ public class PageElementController implements PageElementApi {
|
||||
saasPageElementService.modifyPageElementRelation(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiPageResult<PageElementResp> page(PageQueryElementReq req) {
|
||||
return ApiPageResult.ok(saasPageElementService.page(req));
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,10 +33,11 @@ public class SaasPageElementDao extends ServiceImpl<SaasPageElementMapper, SaasP
|
||||
.list();
|
||||
}
|
||||
|
||||
public List<SaasPageElement> listByGroupCodesAndExcludeIds(List<String> groupCodes, List<Long> excludeIds, String terminal) {
|
||||
public List<SaasPageElement> listByGroupCodesAndExcludeIds(List<String> groupCodes, List<Long> excludeIds, String terminal, List<String> types) {
|
||||
return lambdaQuery()
|
||||
.eq(SaasPageElement::getTerminal, terminal)
|
||||
.in(SaasPageElement::getGroupCode, groupCodes)
|
||||
.in(CollectionUtils.isNotEmpty(types), SaasPageElement::getType, types)
|
||||
.notIn(CollectionUtils.isNotEmpty(excludeIds), SaasPageElement::getId, excludeIds)
|
||||
.list();
|
||||
}
|
||||
|
||||
@ -17,10 +17,11 @@ import java.util.Objects;
|
||||
@Repository
|
||||
public class SaasPageElementFeatureResourceRelationDao extends ServiceImpl<SaasPageElementFeatureResourceRelationMapper, SaasPageElementFeatureResourceRelation> {
|
||||
|
||||
public List<SaasPageElementFeatureResourceRelation> listByPageElementCode(String pageElementCode) {
|
||||
public List<SaasPageElementFeatureResourceRelation> listByPageElementCode(String pageElementCode, String terminal) {
|
||||
return lambdaQuery()
|
||||
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElementCode)
|
||||
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
||||
.list();
|
||||
}
|
||||
public List<SaasPageElementFeatureResourceRelation> listByUniCodeAndTerminal(String featureResourceUniCode, String terminal) {
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
|
||||
@ -54,4 +56,12 @@ public interface SaasPageElementService {
|
||||
* @param operatorId 操作人
|
||||
*/
|
||||
void deleteRelationByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId);
|
||||
|
||||
/**
|
||||
* 分页查询页面元素接口
|
||||
*
|
||||
* @param request 查询条件
|
||||
* @return
|
||||
*/
|
||||
PageResp<PageElementResp> page(PageQueryElementReq request);
|
||||
}
|
||||
|
||||
@ -1,13 +1,16 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.basics.common.util.StopWatchUtil;
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
||||
@ -17,7 +20,10 @@ import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@ -91,7 +97,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
// 如果查询不仅仅是已勾选的,需要把已勾选的页面下未选择的组件也返回
|
||||
if (!Boolean.TRUE.equals(request.getQuerySelectedOnly())) {
|
||||
List<String> pageTypeCodes = selectedPageElements.stream().filter(e -> PageElementTypeEnum.PAGE.getCode().equals(e.getType())).map(SaasPageElement::getGroupCode).collect(Collectors.toList());
|
||||
List<SaasPageElement> notSelectedComponents = saasPageElementDao.listByGroupCodesAndExcludeIds(pageTypeCodes, selectedIds, saasFeatureResource.getTerminal());
|
||||
List<SaasPageElement> notSelectedComponents = saasPageElementDao.listByGroupCodesAndExcludeIds(pageTypeCodes, selectedIds, saasFeatureResource.getTerminal(), null);
|
||||
if (CollectionUtils.isNotEmpty(notSelectedComponents)) {
|
||||
selectedPageElements.addAll(notSelectedComponents);
|
||||
}
|
||||
@ -141,6 +147,20 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(terminal, featureResourceUniCodes, operatorId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResp<PageElementResp> page(PageQueryElementReq request) {
|
||||
IPage<SaasPageElement> page = saasPageElementDao.lambdaQuery()
|
||||
.eq(SaasPageElement::getTerminal, request.getTerminal())
|
||||
.in(CollectionUtils.isNotEmpty(request.getElementTypes()), SaasPageElement::getType, request.getElementTypes())
|
||||
.and(StringUtils.isNotBlank(request.getSearchKey()), w -> w.eq(BaseEntity::getId, request.getSearchKey())
|
||||
.or().like(SaasPageElement::getName, request.getSearchKey())
|
||||
.or().like(SaasPageElement::getLinkUr, request.getSearchKey()))
|
||||
.page(new Page<>(request.getPage(), request.getPageSize()));
|
||||
List<PageElementResp> list = BeanMapper.copyList(page.getRecords(), PageElementResp.class);
|
||||
addComponentElement2Page(request.getTerminal(), list);
|
||||
return PageResp.list(page.getCurrent(), page.getSize(), page.getTotal(), list);
|
||||
}
|
||||
|
||||
private List<SaasPageElement> processParam2Entities(PageElementReportReq request) {
|
||||
List<SaasPageElement> saasPageElements = Lists.newArrayList();
|
||||
|
||||
@ -172,7 +192,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
if (StringUtils.isBlank(pageElement.getLinkUrl())) {
|
||||
continue;
|
||||
}
|
||||
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(pageElement.getCode());
|
||||
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(pageElement.getCode(), request.getTerminal());
|
||||
if (CollectionUtils.isEmpty(relations)) {
|
||||
continue;
|
||||
}
|
||||
@ -226,4 +246,39 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
|
||||
return pageTypeElements;
|
||||
}
|
||||
|
||||
private void addComponentElement2Page(String terminal, List<PageElementResp> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
List<String> pageTypeCodes = Lists.newArrayList();
|
||||
List<Long> excludeIds = Lists.newArrayList();
|
||||
Map<String, PageElementResp> pageTypeCodeMap = Maps.newHashMap();
|
||||
for (PageElementResp element : list) {
|
||||
if (PageElementTypeEnum.PAGE.getCode().equals(element.getType())) {
|
||||
pageTypeCodes.add(element.getGroupCode());
|
||||
pageTypeCodeMap.put(element.getCode(), element);
|
||||
}
|
||||
excludeIds.add(element.getId());
|
||||
element.setChildren(Lists.newArrayList());
|
||||
}
|
||||
|
||||
List<SaasPageElement> componentElements = saasPageElementDao.listByGroupCodesAndExcludeIds(pageTypeCodes, excludeIds, terminal, Lists.newArrayList(PageElementTypeEnum.COMPONENT.getCode()));
|
||||
if (CollectionUtils.isEmpty(componentElements)) {
|
||||
return;
|
||||
}
|
||||
|
||||
componentElements.forEach(e -> {
|
||||
PageElementResp pageTypeElement = pageTypeCodeMap.get(e.getGroupCode());
|
||||
if (Objects.nonNull(pageTypeElement)) {
|
||||
pageTypeElement.getChildren().add(PageElementResp.builder()
|
||||
.id(e.getId())
|
||||
.groupCode(e.getGroupCode())
|
||||
.code(e.getCode())
|
||||
.name(e.getName())
|
||||
.type(e.getType())
|
||||
.build());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user