public PageResponse<ProductCombinationEntity> pageProductCombination(ProductCombinationPageReq pageReq) {
Condition condition = DSL.trueCondition();
if (Objects.nonNull(pageReq.getSubProductId())) {
condition = condition.and(table.SUB_PRODUCT_ID.eq(pageReq.getSubProductId()));
} else if (StringUtil.isNotBlank(pageReq.getSubProductTitle())) {
condition = condition.and(table.SUB_PRODUCT_TITLE.contains(pageReq.getSubProductTitle()));
}
ProductCombinationMajor tProductCombinationMajor = ProductCombinationMajor.T_PRODUCT_COMBINATION_MAJOR;
Product tProduct = Product.T_PRODUCT;
boolean joinMajor=false;
boolean joinProduct=false;
if (Objects.nonNull(pageReq.getMajorProductId())) {
condition = condition.and(tProductCombinationMajor.MAJOR_PRODUCT_ID.eq(pageReq.getMajorProductId()));
joinMajor=true;
} else if (StringUtil.isNotBlank(pageReq.getMajorProductTitle())) {
condition = condition.and(tProduct.TITLE.contains(pageReq.getMajorProductTitle()));
joinProduct=true;
joinMajor=true;
}
if (Objects.nonNull(pageReq.getStartTime())) {
condition = condition.and(table.START_TIME.ge(pageReq.getStartTime()));
}
if (Objects.nonNull(pageReq.getEndTime())) {
condition = condition.and(table.END_TIME.le(pageReq.getEndTime()));
}
SelectJoinStep<Record1<Integer>> countSelect = dsl.selectCount().from(table);
SelectJoinStep<Record> baseSelect = dsl.select(table.asterisk()).from(table);
if(joinMajor){
countSelect=countSelect.join(tProductCombinationMajor).on(tProductCombinationMajor.PRODUCT_COMBINATION_ID.eq(table.ID));
baseSelect= baseSelect.join(tProductCombinationMajor).on(tProductCombinationMajor.PRODUCT_COMBINATION_ID.eq(table.ID));
if(joinProduct){
countSelect=countSelect.join(tProduct).on(tProduct.ID.eq(tProductCombinationMajor.MAJOR_PRODUCT_ID));
baseSelect= baseSelect.join(tProduct).on(tProduct.ID.eq(tProductCombinationMajor.MAJOR_PRODUCT_ID));
}
}
Integer total = countSelect.where(condition).fetchOneInto(Integer.class);
PageResponse<ProductCombinationEntity> pageResponse=PageResponse.of(pageReq.getPageSize(), pageReq.getPageIndex());
pageResponse.setTotalCount(total);
if(total<pageReq.getOffset()+1){
return pageResponse;
}
List<ProductCombinationEntity> productCombinationEntities = baseSelect.where(condition).offset(pageReq.getOffset()).limit(pageReq.getPageSize()).fetchInto(type);
pageResponse.setData(productCombinationEntities);
return pageResponse;
}
老大指导的一段代码,记录一下
最新推荐文章于 2024-10-20 17:09:42 发布