jiangping
2023-10-09 c2b44a985d16842ba73c1b6e213a653013a7157a
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -23,6 +23,7 @@
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRides;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.response.*;
import com.doumee.dao.business.join.MemberRidesJoinMapper;
import com.doumee.dao.business.model.*;
@@ -222,8 +223,8 @@
        }
        return homeResponse;
    }
    @Autowired
    private TransactionsMapper transactionsMapper;
    @Override
@@ -341,7 +342,59 @@
        }
    }
    @Override
    public GoodsorderTotalDataVO getTotalData(Goodsorder param){
            GoodsorderTotalDataVO model = new GoodsorderTotalDataVO();
            model.setPayMoney(new BigDecimal(0.00));
            model.setRefundMoney(new BigDecimal(0.00));
            model.setClosedMoney(new BigDecimal(0.00));
            model.setUnClosedMoney(new BigDecimal(0.00));
            model.setClosedNum(0);
            model.setUnClosedNum(0);
            model.setPayNum(0);
            model.setRefundNum(0);
            QueryWrapper<Goodsorder> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().ge(param.getStartDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getStartDate()));
            queryWrapper.lambda().le(param.getEndDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getEndDate()));
            queryWrapper.lambda().eq(Goodsorder::getPayStatus, Constants.ONE);//已支付
            queryWrapper.lambda().eq(Goodsorder::getIsdeleted, Constants.ZERO);
            queryWrapper.lambda().groupBy(Goodsorder::getStatus);
            queryWrapper.select( "count(id) as count_num"
                    ,"sum(money) as money" );
            //按订单状态分组统计
            List<Goodsorder> detailList = goodsorderMapper.selectList(queryWrapper);
            for(Goodsorder goodsorder : detailList){
                if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.CLOSE.getKey()){
                    //已结算
                    model.setClosedNum(model.getClosedNum()+goodsorder.getCountNum());
                    model.setClosedMoney(model.getClosedMoney().add(Constants.formatDecimalNum(goodsorder.getCloseMoney())));
                    model.setPayNum(model.getPayNum()+goodsorder.getCountNum());
                    model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                }else  if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){
                    //已支付未结算
                    model.setUnClosedNum(model.getUnClosedNum()+goodsorder.getCountNum());
                    model.setUnClosedMoney(model.getUnClosedMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                    model.setPayNum(model.getPayNum()+goodsorder.getCountNum());
                    model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                }
            }
        QueryWrapper<Refund> queryWrapper2 = new QueryWrapper<>();
        queryWrapper2.lambda().ge(param.getStartDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getStartDate()));
        queryWrapper2.lambda().le(param.getEndDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getEndDate()));
        queryWrapper2.lambda().eq(Refund::getIsdeleted, Constants.ZERO);
        queryWrapper2.select( "count(id) as count_num"
                ,"sum(money) as money" );
        //统计退款数据
        Refund  refund = refundMapper.selectOne(queryWrapper2.last("limit 1"));
        if(refund !=null){
            model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum()));
            model.setRefundMoney( Constants.formatDecimalNum(refund.getMoney()));
        }
        return  model;
    }
    @Override
    public RidesDetailResponse getRidesDetailResponse(String id) {
@@ -350,11 +403,6 @@
                .eq(MemberRides::getOrdreId,id);
        List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper);
        if (!CollectionUtils.isEmpty(memberRides)){
            boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus()));
            if (exitUnBack){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前订单有未完成的骑行,无法强制结算");
            }
            PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides);
            RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
            List<MemberRidesResponse> collect = memberRides.stream().map(s -> {
@@ -445,6 +493,23 @@
        goodsorder.setPayDate(new Date());
        goodsorder.setEditDate(new Date());
        goodsorderMapper.updateById(goodsorder);
        //存储交易流水表
        Transactions transactions = new Transactions();
        transactions.setMemberId(goodsorder.getMemberId());
        transactions.setCreateDate(new Date());
        transactions.setIsdeleted(Constants.ZERO);
        transactions.setOrderId(goodsorder.getId());
        transactions.setMoney(goodsorder.getMoney());
        transactions.setType(Constants.transactionsType.deposit);
        transactions.setPreOrderid(goodsorder.getPreOrderid());
        transactions.setOnlineOrderid(goodsorder.getOnlineOrderid());
        transactions.setDoneDate(new Date());
        transactions.setTitle("支付");
        transactions.setContent("押金支付");
        transactions.setBalance(goodsorder.getMoney());
        transactions.setObjId(goodsorder.getId());
        transactions.setObjType(Constants.ZERO);
        transactionsMapper.insert(transactions);
        return WxPayNotifyResponse.success("处理成功!");
    }