feat:(feature/REQ-2899) 解决通过页面code或者name模糊查询bug

This commit is contained in:
lilong 2024-09-14 14:32:53 +08:00
parent cc8e6c723b
commit 92d0a627d2
2 changed files with 72 additions and 13 deletions

View File

@ -1,11 +1,12 @@
package cn.axzo.tyr.client.model.req;
import cn.axzo.framework.domain.page.PageResp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import java.util.Collections;
import java.util.List;
/**
@ -57,4 +58,13 @@ public class PageQueryElementV2Req {
*/
@Builder.Default
private Long pageSize = 20L;
public PageResp toEmpty() {
return PageResp.builder()
.page(this.getPage())
.pageSize(this.getPageSize())
.list(Collections.emptyList())
.totalCount(0L)
.build();
}
}

View File

@ -13,9 +13,32 @@ import cn.axzo.foundation.exception.BusinessException;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.*;
import cn.axzo.tyr.client.model.req.*;
import cn.axzo.tyr.client.model.res.*;
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.common.enums.PageElementAppTypeEnum;
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
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.IdentityAuthReq;
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
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.PageSaasFeatureResourceReq;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementReq;
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
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.client.model.res.SaasFeatureResourceResp;
import cn.axzo.tyr.server.config.MqProducer;
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindElementDO;
@ -23,7 +46,11 @@ import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementCategoryDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
import cn.axzo.tyr.server.repository.entity.*;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
import cn.axzo.tyr.server.repository.mapper.SaasPageElementMapper;
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
import cn.axzo.tyr.server.service.SaasPageElementFeatureResourceRelationService;
@ -36,6 +63,7 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Strings;
@ -56,7 +84,13 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.function.Function;
@ -504,19 +538,34 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
@Override
public PageResp<PageElementResp> pageV2(PageQueryElementV2Req request) {
IPage<SaasPageElement> page = saasPageElementDao.lambdaQuery()
LambdaQueryChainWrapper<SaasPageElement> wrapper = saasPageElementDao.lambdaQuery()
.eq(Objects.nonNull(request.getId()), SaasPageElement::getId, request.getId())
.eq(StringUtils.isNotBlank(request.getTerminal()), SaasPageElement::getTerminal, request.getTerminal())
.eq(StringUtils.isNotBlank(request.getItemCode()), SaasPageElement::getItemCode, request.getItemCode())
.in(CollectionUtils.isNotEmpty(request.getElementTypes()), SaasPageElement::getType, request.getElementTypes())
.and(StringUtils.isNotBlank(request.getPageElementCodeOrName()), w -> w.like(SaasPageElement::getCode, request.getPageElementCodeOrName())
.or().like(SaasPageElement::getName, request.getPageElementCodeOrName()))
.eq(StringUtils.isNotBlank(request.getPageElementGroupCodeOrName()), SaasPageElement::getType, PageElementTypeEnum.PAGE.getCode())
.and(StringUtils.isNotBlank(request.getPageElementGroupCodeOrName()),
w -> w.like(SaasPageElement::getGroupCode, request.getPageElementGroupCodeOrName())
.or().like(SaasPageElement::getName, request.getPageElementGroupCodeOrName()))
.orderByDesc(BaseEntity::getId)
.or().like(SaasPageElement::getName, request.getPageElementCodeOrName()));
// 待切换写法收口pagepageV2查询
// 因为页面名字没有每条记录冗余查询条件可能是页面名字或者code所以需要根据入参找到对应的页面code然后作为页面code查询
if (StringUtils.isNotBlank(request.getPageElementGroupCodeOrName())) {
List<SaasPageElement> groupPageElements = saasPageElementDao.lambdaQuery()
.eq(SaasPageElement::getType, PageElementTypeEnum.PAGE.getCode())
.and(w -> w.like(SaasPageElement::getGroupCode, request.getPageElementGroupCodeOrName())
.or()
.like(SaasPageElement::getName, request.getPageElementGroupCodeOrName()))
.list();
if (CollectionUtils.isEmpty(groupPageElements)) {
return request.toEmpty();
}
wrapper.in(SaasPageElement::getGroupCode, groupPageElements.stream().map(SaasPageElement::getGroupCode).collect(Collectors.toSet()));
}
IPage<SaasPageElement> page = wrapper.orderByDesc(BaseEntity::getId)
.page(new Page<>(request.getPage(), request.getPageSize()));
List<PageElementResp> list = BeanMapper.copyList(page.getRecords(), PageElementResp.class);
// 补充元素组名
fillGroupName(list);