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); + } + } } }