老大指导的一段代码,记录一下

    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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值