jiangping
2023-10-10 d7d6facdf81c4d666c8c71e44121116079d96700
server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
@@ -1,19 +1,30 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.Constants;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.RefundMapper;
import com.doumee.dao.business.join.RefundJoinMapper;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Refund;
import com.doumee.dao.business.model.RefundPlatExportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.RefundService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.sql.Ref;
import java.util.ArrayList;
import java.util.List;
/**
@@ -26,6 +37,8 @@
    @Autowired
    private RefundMapper refundMapper;
    @Autowired
    private RefundJoinMapper refundJoinMapper;
    @Override
    public String create(Refund refund) {
@@ -85,75 +98,73 @@
    }
  
    @Override
    public PageData<Refund> findPage(PageWrap<Refund> pageWrap) {
        IPage<Refund> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Refund> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(Refund::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(Refund::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(Refund::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(Refund::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(Refund::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(Refund::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(Refund::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(Refund::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getInfo() != null) {
            queryWrapper.lambda().eq(Refund::getInfo, pageWrap.getModel().getInfo());
        }
        if (pageWrap.getModel().getCode() != null) {
            queryWrapper.lambda().eq(Refund::getCode, pageWrap.getModel().getCode());
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(Refund::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getMoney() != null) {
            queryWrapper.lambda().eq(Refund::getMoney, pageWrap.getModel().getMoney());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(Refund::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getPreOrderid() != null) {
            queryWrapper.lambda().eq(Refund::getPreOrderid, pageWrap.getModel().getPreOrderid());
        }
        if (pageWrap.getModel().getOnlineOrderid() != null) {
            queryWrapper.lambda().eq(Refund::getOnlineOrderid, pageWrap.getModel().getOnlineOrderid());
        }
        if (pageWrap.getModel().getPayWay() != null) {
            queryWrapper.lambda().eq(Refund::getPayWay, pageWrap.getModel().getPayWay());
        }
        if (pageWrap.getModel().getDoneDate() != null) {
            queryWrapper.lambda().ge(Refund::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getDoneDate()));
            queryWrapper.lambda().le(Refund::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getDoneDate()));
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(Refund::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getObjId() != null) {
            queryWrapper.lambda().eq(Refund::getObjId, pageWrap.getModel().getObjId());
        }
        if (pageWrap.getModel().getReason() != null) {
            queryWrapper.lambda().eq(Refund::getReason, pageWrap.getModel().getReason());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
    public PageData<Refund>  findPlatPage(PageWrap<Refund> pageWrap) {
        pageWrap.getModel().setTypeList(new ArrayList<>());
        //强制结算退款 和 结算后退款
        pageWrap.getModel().getTypeList().add(Constants.REFUND_TYPE.PLAT_FORCE.getKey());
        pageWrap.getModel().getTypeList().add(Constants.REFUND_TYPE.BACK.getKey());
        pageWrap.getModel().setStatus(Constants.TWO);
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap.getModel());
        return PageData.from(refundJoinMapper.selectJoinPage(page, Refund.class,queryWrapper));
    }
    @Override
    public List<RefundPlatExportVO>  findPlatExportPage( Refund pageWrap) {
        pageWrap.setTypeList(new ArrayList<>());
        //强制结算退款 和 结算后退款
        pageWrap.getTypeList().add(Constants.REFUND_TYPE.PLAT_FORCE.getKey());
        pageWrap.getTypeList().add(Constants.REFUND_TYPE.BACK.getKey());
        pageWrap.setStatus(Constants.TWO);
        MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap);
        List<Refund> list = refundJoinMapper.selectJoinList(  Refund.class,queryWrapper);
        List<RefundPlatExportVO> result = new ArrayList<>();
        if(list!=null){
            for(Refund order : list){
                RefundPlatExportVO vo = new RefundPlatExportVO();
                vo.setId(order.getId());
                vo.setOpenid(order.getOpenid());
                vo.setDoneDate(order.getDoneDate());
                vo.setMoney(Constants.formatDecimalNum(order.getMoney()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP));
                vo.setCanBanlance(Constants.formatDecimalNum(order.getCanBanlance()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP));
                vo.setOnlineOrderid(order.getOnlineOrderid());
                vo.setPayOnlineOrderid(order.getPayOnlineOrderid());
                vo.setCreatorName(order.getCreatorName());
                vo.setReason(order.getReason());
                result.add(vo);
            }
        }
        return PageData.from(refundMapper.selectPage(page, queryWrapper));
        return  result;
    }
    private MPJLambdaWrapper<Refund> initQueryParamByModel(Refund model) {
        MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(model);
        //只查询支付成功的
        queryWrapper.selectAll(Refund.class);
        queryWrapper.selectAs(SystemUser::getRealname, Refund::getCreatorName);
        queryWrapper.selectAs(Member::getOpenid, Refund::getOpenid);
        queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId  ,Refund::getObjId);
        queryWrapper.leftJoin(Member.class, Member::getId  ,Goodsorder::getMemberId);
        queryWrapper.leftJoin(SystemUser.class, SystemUser::getId  ,Refund::getCreator);
        //时间段筛选
        queryWrapper.ge(model.getStartDate()!=null, Refund::getDoneDate, model.getStartDate());
        queryWrapper.le(model.getEndDate()!=null, Refund::getDoneDate, model.getEndDate());
        queryWrapper.eq(model.getCreator() !=null,Refund::getCreator,model.getCreator());
        queryWrapper.eq(model.getStatus() !=null,Refund::getStatus,model.getStatus());
        queryWrapper.like(model.getPayOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getPayOnlineOrderid());
        queryWrapper.like(model.getOnlineOrderid() !=null,Refund::getOnlineOrderid,model.getOnlineOrderid());
        queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid());
        queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
        queryWrapper.orderByDesc(Refund::getDoneDate);
        return  queryWrapper;
    }
    @Override
    public PageData<Refund> findPage(PageWrap<Refund> pageWrap) {
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap.getModel());
        return PageData.from(refundJoinMapper.selectJoinPage(page, Refund.class,queryWrapper));
    }
    @Override