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 e07c18e9..c9806d07 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 @@ -45,10 +45,7 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; @@ -369,6 +366,19 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 更新订单状态 orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code()); + List orderDetails = orderDetailMapper.selectByOrderMasterId(orderDetail.getOrderMasterId()); + Set statusSet = orderDetails.stream().map(OrderDetail::getOrderStatus).collect(Collectors.toSet()); + boolean allFinish = true; + for (Integer integer : statusSet) { + if (integer < 5) { + allFinish = false; + break; + } + } + // 如果已经不存在"已完成"和"已取消"以外的子订单 就把主订单也改为完成 + if (allFinish) { + orderMasterMapper.updateStatus(orderDetail.getOrderMasterId(), OrderStatus.FINISH.code()); + } // 加价单手续费补偿成功与否 boolean compensate = false; @@ -376,18 +386,19 @@ public class OrderDetailServiceImpl implements OrderDetailService { BigDecimal feeAmt = null; // 待提现金额 BigDecimal dtx = BigDecimal.ZERO; + // 加价金额 + BigDecimal addPrice; // 子单收款人的memberId String memberId = AdapayUtils.getWorkerMemberId(financialDetail.getPayeeId(), financialDetail.getDeptId()); // --------------------- 改价单分账部分 start --------------------- // 查询子订单的加价记录 List financialChangeRecords = financialChangeRecordService.selectByDetailIds(String.valueOf(orderDetailId)); - if (financialChangeRecords.size() == 0) { - logger.debug("子订单[code={}]没有改价单", odCode); - } else if (financialChangeRecords.size() == 1) { + if (!CollectionUtils.isEmpty(financialChangeRecords)) { ArrayList divMembers = new ArrayList<>(); // 改价记录只会有一条 直接取出 FinancialChangeRecord fcRecord = financialChangeRecords.get(0); + addPrice = fcRecord.getChangeMoney(); // 待提现金额里加入改价单金额 dtx = dtx.add(fcRecord.getChangeMoney()); // 这里先自己承担手续费 后面再用平台抽成来补偿 @@ -429,7 +440,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { } } } else { - logger.error("financialChangeRecords.size = " + financialChangeRecords.size()); + addPrice = BigDecimal.ZERO; } // --------------------- 改价单分账部分 end --------------------- @@ -437,9 +448,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 分账账户信息 ArrayList divMembers = new ArrayList<>(); - // 子单的金额 - BigDecimal fdPayMoney = financialDetail.getPayMoney(); - // 实际要分账的金额(子单的金额 + 平台补偿改价单手续费) + // 子单的实际金额 + BigDecimal fdPayMoney = financialDetail.getPayMoney().subtract(addPrice); + // 实际要分账的金额(子单的实际金额 + 平台补偿改价单手续费) BigDecimal payMoney; if (compensate) { // 平台补偿改价单手续费 diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java index 18532fe8..badd6c85 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java @@ -3,7 +3,6 @@ package com.ghy.quartz.service.impl; import com.ghy.common.enums.FinancialDetailType; import com.ghy.common.enums.OrderStatus; import com.ghy.order.domain.OrderDetail; -import com.ghy.order.domain.OrderMaster; import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderMasterService; import com.ghy.payment.domain.FinancialDetail; @@ -11,7 +10,6 @@ import com.ghy.payment.domain.OrderTimeoutRecord; import com.ghy.payment.mapper.OrderFineRecordMapper; import com.ghy.payment.service.FinancialDetailService; import com.ghy.quartz.service.OrderService; -import com.huifu.adapay.core.exception.BaseAdaPayException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -137,7 +135,8 @@ public class OrderServiceImpl implements OrderService { // 查询出"待确认"状态的子订单 List orderDetails = orderDetailService.selectByStatus(Collections.singletonList(OrderStatus.FINISH_CHECK.code())); long now = System.currentTimeMillis(); - long day14ago = now - (60 * 60 * 1000L); +// long day14ago = now - (60 * 60 * 1000L); + long day14ago = now - 10000L; for (OrderDetail orderDetail : orderDetails) { // 查询符合自动确认的订单 if (day14ago > orderDetail.getUpdateTime().getTime()) {