子订单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
@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<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 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);