jiangping
2025-03-18 34d668bf654e861b2c8b3eb8d1faa09e1ae6246a
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -9,6 +9,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.core.wx.WxPayProperties;
import com.doumee.dao.business.GoodsorderMapper;
import com.doumee.dao.business.WxBillDetailMapper;
import com.doumee.dao.business.WxBillMapper;
import com.doumee.dao.business.model.Goodsorder;
@@ -46,6 +47,8 @@
    @Autowired
    private WxBillMapper wxBillMapper;
    @Autowired
    private GoodsorderMapper goodsorderMapper;
    @Autowired
    private WxBillDetailMapper wxBillDetailMapper;
    @Override
@@ -262,6 +265,11 @@
        bill.setSumRefundCmmsAmt(new BigDecimal(0.00));
        bill.setTotal(new BigDecimal(0.00));
        bill.setBikeFee(new BigDecimal(0.00));
        bill.setDiscountFee(new BigDecimal(0.00));
        bill.setBikeRefundFee(new BigDecimal(0.00));
        bill.setDiscountRefundFee(new BigDecimal(0.00));
        bill.setDiscountRefundCmmsAmt(new BigDecimal(0.00));
        bill.setBikeRefundCmmsAmt(new BigDecimal(0.00));
        return bill;
    }
    @Override
@@ -427,15 +435,34 @@
                detail.setRefundApplyDate(DateUtil.getDateFromString2(info.getRefundTime())); //申请退款时间
                //计算自行车收入,匹配来自自行车小程序的所有支付成功和退款成功的金额,作为自行车收入(累计收款金额-累计退款成功金额)
                if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayV2Service.getConfig().getSubAppId())){
                    //自行车收入累计收款金额(支付成功总金额-退款总金额)
                    if(StringUtils.equals(info.getTradeState(),"SUCCESS")){
                        //如果是交易(包含手续费)
                        bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee()));
                    Goodsorder order = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda()
                            .eq(Goodsorder::getId,info.getOutTradeNo()));
                    if(Constants.equalsInteger(order.getType(),Constants.ZERO)){
                        //自行车收入累计收款金额(支付成功总金额-退款总金额)
                        if(StringUtils.equals(info.getTradeState(),"SUCCESS")){
                            //如果是交易(包含手续费)
                            bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee()));
//                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
                    }else  if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){
                        //如果退款成功,扣除退款金额(包含手续费)
                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) );
                        }else  if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){
                            //如果退款成功,扣除退款金额(包含手续费)
                            bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) );
                            bill.setBikeRefundFee(bill.getBikeRefundFee().add(detail.getRefundFee()) );
                            bill.setBikeRefundCmmsAmt(bill.getBikeRefundCmmsAmt().add(detail.getCmmsAmt()) );
//                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
                        }
                    }else{
                        //自行车收入累计收款金额(支付成功总金额-退款总金额)
                        if(StringUtils.equals(info.getTradeState(),"SUCCESS")){
                            //如果是交易(包含手续费)
                            bill.setDiscountFee(bill.getDiscountFee().add(detail.getSettlementTotalFee()));
//                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
                        }else  if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){
                            //如果退款成功,扣除退款金额(包含手续费)
                            bill.setDiscountFee(bill.getDiscountFee().subtract(detail.getRefundFee()) );
                            bill.setDiscountRefundFee(bill.getDiscountRefundFee().add(detail.getRefundFee()) );
                            bill.setDiscountRefundCmmsAmt(bill.getDiscountRefundCmmsAmt().add(detail.getCmmsAmt()) );
//                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
                        }
                    }
                }
                detailList.add(detail);