子订单finish判断调整日志调整

This commit is contained in:
Hawking 2023-06-05 12:27:53 +08:00
parent 49f52d0845
commit ce77b24b47
1 changed files with 16 additions and 13 deletions

View File

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