修改子订单完成的逻辑

This commit is contained in:
HH 2022-12-14 02:12:28 +08:00
parent 5e5ad630f6
commit 5606c8fdbc
2 changed files with 24 additions and 14 deletions

View File

@ -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<OrderDetail> orderDetails = orderDetailMapper.selectByOrderMasterId(orderDetail.getOrderMasterId());
Set<Integer> 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<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(String.valueOf(orderDetailId));
if (financialChangeRecords.size() == 0) {
logger.debug("子订单[code={}]没有改价单", odCode);
} else if (financialChangeRecords.size() == 1) {
if (!CollectionUtils.isEmpty(financialChangeRecords)) {
ArrayList<DivMember> 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<DivMember> divMembers = new ArrayList<>();
// 子单的金额
BigDecimal fdPayMoney = financialDetail.getPayMoney();
// 实际要分账的金额(子单的金额 + 平台补偿改价单手续费)
// 子单的实际金额
BigDecimal fdPayMoney = financialDetail.getPayMoney().subtract(addPrice);
// 实际要分账的金额(子单的实际金额 + 平台补偿改价单手续费)
BigDecimal payMoney;
if (compensate) {
// 平台补偿改价单手续费

View File

@ -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<OrderDetail> 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()) {