diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index 70cd084b..5fe6027a 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -407,6 +407,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { @Override @Transactional(rollbackFor = Exception.class) public synchronized void finish(Long orderDetailId) throws BaseAdaPayException { + logger.debug("子订单[{}]finish......", orderDetailId); // 校验订单 OrderDetail orderDetail = selectById(orderDetailId); if (orderDetail == null) { @@ -432,17 +433,23 @@ public class OrderDetailServiceImpl implements OrderDetailService { throw new BaseException("订单不是“已支付”状态"); } - // 修改子订单状态为完成 - updateStatus(orderDetailId, OrderStatus.FINISH.code()); - Long financialMasterId = financialDetail.getFinancialMasterId(); // 找到 type=平台抽成 的子财务单 用来承担手续费 List details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, FinancialDetailType.PLATFORM_FEE.getCode()); + if (CollectionUtils.isEmpty(details)) { + logger.error("找不到平台抽成的子财务单 orderDetailId={}", orderDetailId); + return; + } + + // 修改子订单状态为完成 + updateStatus(orderDetailId, OrderStatus.FINISH.code()); + + // 平台抽成的子财务单 FinancialDetail platformFeeFD = details.get(0); FinancialDetail fdUpdate = new FinancialDetail(); fdUpdate.setId(platformFeeFD.getId()); fdUpdate.setPayMoney(platformFeeFD.getPayMoney()); - logger.debug("子订单[code={}]的完单流程开始", odCode); + logger.debug("子订单[{}]的完单流程开始", orderDetailId); // 加价单手续费补偿成功与否 boolean compensate = false; @@ -451,7 +458,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 待提现金额 BigDecimal dtx = BigDecimal.ZERO; // 加价金额 - BigDecimal addPrice; + BigDecimal addPrice = BigDecimal.ZERO; // 子单收款人的memberId String memberId = AdapayUtils.getWorkerMemberId(financialDetail.getPayeeId(), financialDetail.getDeptId()); @@ -534,8 +541,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 这是被扣掉的手续费 按理说这里应该大于0 String fee_amt = response.getString("fee_amt"); feeAmt = new BigDecimal(fee_amt); - if (feeAmt.compareTo(platformFeeFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) { - // 当 0.00<改价单的手续费<=平台抽成金额 时 + // 当 0.00 < 改价单的手续费 < 平台抽成金额 时 + if (MoneyUtil.gt0(feeAmt) && MoneyUtil.gt(fdUpdate.getPayMoney(), feeAmt)) { // 用平台抽成来补偿改价单的手续费 修改平台抽成子财务单金额 fdUpdate.setPayMoney(fdUpdate.getPayMoney().subtract(feeAmt)); int i = financialDetailService.updateFinancialDetail(fdUpdate); @@ -561,11 +568,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { throw new IllegalArgumentException(response.getString("error_msg")); } } - } else { - addPrice = BigDecimal.ZERO; } - } else { - addPrice = BigDecimal.ZERO; } // --------------------- 改价单分账部分 end --------------------- @@ -584,7 +587,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 平台不补偿改价单手续费 payMoney = fdPayMoney; } - if (BigDecimal.ZERO.compareTo(payMoney) > -1) { + if (MoneyUtil.lte0(payMoney)) { logger.info("子财务单[{}] 应支付金额={} 不需要分账", financialDetail.getId(), payMoney); } else { // 查询师傅的超时扣款记录 @@ -613,7 +616,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { DivMember divMember = new DivMember(memberId, payMoneyS, false); divMembers.add(divMember); // 是否有罚金 - boolean haveFine = BigDecimal.ZERO.compareTo(fineMoney) < 0; + boolean haveFine = MoneyUtil.gt0(fineMoney); if (haveFine) { // 有罚金 从罚金里扣除手续费 // 平台的分账信息 用来承担罚金 DivMember fineDivMember = new DivMember("0", AdapayUtils.bigDecimalToString(fineMoney), true);