diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index 870fb45b..91eb7371 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -254,12 +254,14 @@ public class OrderMasterServiceImpl implements OrderMasterService { } } + // 大师傅的MemberId + String masterWorkerMemberId = AdapayUtils.getWorkerMemberId(orderMaster.getWorkerId(), orderMaster.getDeptId()); // 罚金分给平台账户 memberMap.merge("0", fineMoney, BigDecimal::add); // 大师傅服务金额减去罚金后剩下的钱 如果小于等于0元 就不用分账给大师傅了 BigDecimal bigWorkerAmtSubtractFine = bigWorkerAmt.subtract(fineMoney); if (BigDecimal.ZERO.compareTo(bigWorkerAmtSubtractFine) < 0) { - memberMap.put(AdapayUtils.getWorkerMemberId(orderMaster.getWorkerId(), orderMaster.getDeptId()), bigWorkerAmtSubtractFine); + memberMap.put(masterWorkerMemberId, bigWorkerAmtSubtractFine); } confirmAmt = confirmAmt.add(bigWorkerAmt); @@ -309,13 +311,21 @@ public class OrderMasterServiceImpl implements OrderMasterService { try { String drawCashId = drawCash(orderMaster.getDeptId(), memberId, amount); - if (drawCashId != null) { - // 给大师傅的子单设置提现状态和提现时间 2023/5/18 - for (OrderDetail orderDetail : orderDetails) { - if (orderMaster.getWorkerId().equals(orderDetail.getWorkerId())) { - orderDetailService.updateDrawCashStatus(drawCashId, 1, new Date(), null); + // 判断是否为大师傅的提现 + if (masterWorkerMemberId.equals(memberId)) { + // 给大师傅的子单设置提现状态和提现时间 丢到线程池里执行 避免影响原业务逻辑 2023/5/18 + executor.execute(() -> { + for (OrderDetail orderDetail : orderDetails) { + if (orderMaster.getWorkerId().equals(orderDetail.getWorkerId())) { + OrderDetail odUpdate = new OrderDetail(); + odUpdate.setId(orderDetail.getId()); + odUpdate.setDrawCashTime(new Date()); + odUpdate.setDrawCashStatus(1); + odUpdate.setDrawCashId(drawCashId); + orderDetailService.updateOrderDetail(odUpdate); + } } - } + }); } } catch (BaseAdaPayException e) { logger.error("自动发起提现失败: orderMasterId={}, memberId={}, cashAmt={}", orderMasterId, memberId, amount, e);