diff --git a/ghy-admin/src/main/resources/logback.xml b/ghy-admin/src/main/resources/logback.xml
index 2e47b5e4..8daba945 100644
--- a/ghy-admin/src/main/resources/logback.xml
+++ b/ghy-admin/src/main/resources/logback.xml
@@ -25,16 +25,16 @@
${log.pattern}
-
-
- INFO
-
- ACCEPT
-
- DENY
-
+
+
+
+
+
+
+
+
-
+
${log.path}/sys-error.log
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 6ebfc8f1..c5eb87cc 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
@@ -9,6 +9,7 @@ import com.ghy.common.adapay.model.PaymentDTO;
import com.ghy.common.constant.UserConstants;
import com.ghy.common.core.text.Convert;
import com.ghy.common.enums.AdapayOrderType;
+import com.ghy.common.enums.FinancialDetailType;
import com.ghy.common.enums.OrderStatus;
import com.ghy.common.enums.PayStatus;
import com.ghy.common.exception.base.BaseException;
@@ -33,7 +34,6 @@ import com.huifu.adapay.core.exception.BaseAdaPayException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
@@ -45,7 +45,10 @@ import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
@@ -63,8 +66,6 @@ public class OrderDetailServiceImpl implements OrderDetailService {
.appendValue(DAY_OF_MONTH, 2).appendValue(HOUR_OF_DAY, 2)
.appendValue(MINUTE_OF_HOUR, 2).appendValue(SECOND_OF_MINUTE, 2).toFormatter();
- @Resource
- private ThreadPoolTaskExecutor executor;
@Resource
private OrderDetailMapper orderDetailMapper;
@Resource
@@ -357,10 +358,10 @@ public class OrderDetailServiceImpl implements OrderDetailService {
}
Long financialMasterId = financialDetail.getFinancialMasterId();
// 找到 type=平台抽成 的子财务单 用来承担手续费
- List details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, 3);
- FinancialDetail platformFD = details.get(0);
+ List details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, FinancialDetailType.PLATFORM_FEE.getCode());
+ FinancialDetail platformFeeFD = details.get(0);
FinancialDetail update = new FinancialDetail();
- update.setId(platformFD.getId());
+ update.setId(platformFeeFD.getId());
logger.debug("子订单[code={}]的完单流程开始", odCode);
@@ -401,9 +402,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 这是被扣掉的手续费
String fee_amt = response.getString("fee_amt");
feeAmt = new BigDecimal(fee_amt);
- if (feeAmt.compareTo(platformFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) {
+ if (feeAmt.compareTo(platformFeeFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) {
// 用平台抽成来补偿改价单的手续费 修改平台抽成子财务单金额
- update.setPayMoney(platformFD.getPayMoney().subtract(feeAmt));
+ update.setPayMoney(platformFeeFD.getPayMoney().subtract(feeAmt));
int i = financialDetailService.updateFinancialDetail(update);
compensate = i > 0;
} else {
@@ -468,9 +469,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 如果确认支付失败 这里抛出异常 回滚订单状态
Assert.isTrue(status, response.getString("error_msg"));
// 待提现金额里加入子财务单金额
- dtx = dtx.add(payMoney);
+ dtx = dtx.add(fdPayMoney);
// 修改平台抽成子财务单金额
- update.setPayMoney(platformFD.getPayMoney().subtract(fee));
+ update.setPayMoney(platformFeeFD.getPayMoney().subtract(fee));
financialDetailService.updateFinancialDetail(update);
}
// --------------------- 子财务单分账部分 end ---------------------
@@ -501,25 +502,6 @@ public class OrderDetailServiceImpl implements OrderDetailService {
logger.error("自动发起提现失败: 子订单code={}, deptId={}, memberId={}", odCode, financialDetail.getDeptId(), memberId, e);
}
// --------------------- 自动提现流程 end ---------------------
-
- // --------------------- 触发主订单完单流程 start ---------------------
- try {
- 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) {
- orderMasterService.finish(orderDetail.getOrderMasterId());
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
}
@Override
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 badd6c85..a74b2526 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,6 +3,7 @@ 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;
@@ -23,6 +24,8 @@ import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
@Service
public class OrderServiceImpl implements OrderService {
@@ -149,5 +152,27 @@ public class OrderServiceImpl implements OrderService {
}
}
}
+
+ List orderMasters = orderMasterService.selectUnfinished();
+ for (OrderMaster om : orderMasters) {
+ try {
+ List ods = orderDetailService.selectByOrderMasterId(om.getId());
+ Set statusSet = ods.stream().map(OrderDetail::getOrderStatus).collect(Collectors.toSet());
+ boolean allFinish = true;
+ for (Integer integer : statusSet) {
+ if (integer < 5) {
+ allFinish = false;
+ break;
+ }
+ }
+ // 如果已经不存在"已完成"和"已取消"以外的子订单 就把主订单也改为完成
+ if (allFinish) {
+ logger.info("主订单可以完成了[id={} code={}]", om.getId(), om.getCode());
+ orderMasterService.finish(om.getId());
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
}
}