| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public WxBill findOne(WxBill wxBill) { |
| | | QueryWrapper<WxBill> wrapper = new QueryWrapper<>(wxBill); |
| | | return wxBillMapper.selectOne(wrapper); |
| | | return wxBillMapper.selectOne(wrapper.last(" limit 1")); |
| | | } |
| | | |
| | | @Override |
| | |
| | | for(WxBillDetail detail : detailList){ |
| | | if(StringUtils.equals(detail.getBillStatus(), "SUCCESS")){ |
| | | //实收数据 |
| | | bill4.setSumBill(detail.getSumBill());//交易笔数 |
| | | bill4.setSumBill( detail.getSumBill());//交易笔数 |
| | | bill4.setSumSuccessFee(Constants.formatDecimalNum(detail.getSettlementTotalFee()));//交易金额 |
| | | bill4.setSumCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//交易手续费 |
| | | } else if(StringUtils.equals(detail.getBillStatus(), "REFUND")){ |
| | | } else if(StringUtils.equals(detail.getBillStatus(), "REFUND") || StringUtils.equals(detail.getBillStatus(), "REVOKED")){ |
| | | //退款数据 |
| | | bill4.setSumRefundBill(detail.getSumBill());//退款笔数 |
| | | bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//退款手续费 |
| | | bill4.setSumRefundBill(Constants.formatIntegerNum(bill4.getSumRefundBill())+detail.getSumBill());//退款笔数 |
| | | bill4.setSumRefundFee(Constants.formatDecimalNum(bill4.getSumRefundFee()).add(Constants.formatDecimalNum(detail.getRefundFee()))); |
| | | bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(bill4.getSumRefundCmmsAmt()).add(Constants.formatDecimalNum(Constants.formatDecimalNum(detail.getCmmsAmt()))));//退款手续费 |
| | | } |
| | | } |
| | | //结算金额 |
| | |
| | | bill.setSumTotalFee(formatStringToDecimal(response.getTotalAmount())); |
| | | //应结订单总金额 |
| | | bill.setSumSuccessFee(formatStringToDecimal(response.getTotalFee())); |
| | | //退款总金额 |
| | | bill.setSumRefundFee(formatStringToDecimal(response.getTotalFee())); |
| | | //退款总金额 |
| | | bill.setSumApplyRefundFee(formatStringToDecimal(response.getTotalAppliedRefundFee())); |
| | | //交易总手续费金额 |
| | | bill.setSumCmmsAmt(formatStringToDecimal(response.getTotalPoundageFee())); |
| | | detailList.addAll(getDetialModelByInfo(bill,response.getBillInfoList())); |
| | |
| | | //退款单总数累计进入 |
| | | // bill.setSumBill(bill.getSumBill()+(Integer.parseInt(response.getTotalRecord())); |
| | | bill.setSumRefundBill(Integer.parseInt(responseRefund.getTotalRecord()));//退款的订单数 |
| | | //退款总金额 |
| | | bill.setSumRefundFee(formatStringToDecimal(responseRefund.getTotalRefundFee())); |
| | | //退款总金额 |
| | | bill.setSumApplyRefundFee(formatStringToDecimal(responseRefund.getTotalAppliedRefundFee())); |
| | | bill.setSumRefundCmmsAmt(formatStringToDecimal(responseRefund.getTotalPoundageFee()));//退款总手续费 |
| | | bill.setSumCouponRefundFee(formatStringToDecimal(responseRefund.getTotalCouponFee()));//退款总手续费 |
| | | bill.setSumCouponRefundFee(formatStringToDecimal(responseRefund.getTotalCouponFee()));//退款总金额 |
| | | detailList.addAll(getDetialModelByInfo(bill,responseRefund.getBillInfoList())); |
| | | } |
| | | wxBillMapper.delete(new UpdateWrapper<WxBill>().lambda().eq( WxBill::getId, bill.getId())); |
| | |
| | | //只能同步昨天10之前的数据 |
| | | Calendar caln = Calendar.getInstance(); |
| | | caln.setTime(ydate); |
| | | if(caln.get(Calendar.HOUR_OF_DAY) <= 9){ |
| | | if(caln.get(Calendar.HOUR_OF_DAY) > 10){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,最近同步时间只能截止到昨天10点前!"); |
| | | } |
| | | } |
| | |
| | | if(billInfoList!=null){ |
| | | for (int i = 0; i <billInfoList.size(); i++) { |
| | | WxPayBillInfo info =billInfoList.get(i); |
| | | if(StringUtils.equals(info.getTradeType(),"REFUND" ) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){ |
| | | if((StringUtils.equals(info.getTradeType(),"REFUND" )||StringUtils.equals(info.getTradeType(),"REVOKED" )) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){ |
| | | //如果是非成功的退款数据,不进行同步 |
| | | continue; |
| | | } |
| | |
| | | detail.setRefundApplyDate(DateUtil.getDateFromString2(info.getRefundTime())); //申请退款时间 |
| | | //计算自行车收入,匹配来自自行车小程序的所有支付成功和退款成功的金额,作为自行车收入(累计收款金额-累计退款成功金额) |
| | | if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayService.getConfig().getAppId())){ |
| | | //自行车收入累计收款金额 |
| | | bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee())); |
| | | if(StringUtils.equals(detail.getRefundSuccessStatus(),"SUCCESS")){ |
| | | //自行车收入累计收款金额(支付成功总金额-退款总金额) |
| | | 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.getApplyRefundFee())); |
| | | bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) ); |
| | | bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); |
| | | } |
| | | } |
| | | |