From a5f274652f67af19da8d0ee1739e072f77a1a347 Mon Sep 17 00:00:00 2001 From: HH Date: Fri, 3 Feb 2023 01:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=90=E8=AE=A2=E5=8D=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=86=E8=B4=A6/=E6=8F=90=E7=8E=B0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ghy/order/domain/OrderDetail.java | 13 +++++ .../service/impl/OrderDetailServiceImpl.java | 29 +++++----- .../mapper/order/OrderDetailMapper.xml | 53 +++++++++++-------- .../com/ghy/quartz/service/OrderService.java | 3 ++ .../quartz/service/impl/OrderServiceImpl.java | 25 +++++++++ .../java/com/ghy/quartz/task/OrderTask.java | 25 ++++++--- 6 files changed, 106 insertions(+), 42 deletions(-) diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java index 08b2841e..ff472854 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java @@ -77,4 +77,17 @@ public class OrderDetail extends BaseEntity { private Integer shelveStatus; private Integer ledgerAccountStatus; + + /** + * draw_cash_status + * 0 未分账 + * 1 已分账 + * 2 已到账 + */ + private Integer drawCashStatus; + + /** + * 发起提现时间 draw_cash_date + */ + private Date drawCashDate; } 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 14b2f686..fd494f85 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 @@ -44,10 +44,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; @@ -359,13 +356,18 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 找到 type=平台抽成 的子财务单 用来承担手续费 List details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, FinancialDetailType.PLATFORM_FEE.getCode()); FinancialDetail platformFeeFD = details.get(0); - FinancialDetail update = new FinancialDetail(); - update.setId(platformFeeFD.getId()); - update.setPayMoney(platformFeeFD.getPayMoney()); + FinancialDetail fdUpdate = new FinancialDetail(); + fdUpdate.setId(platformFeeFD.getId()); + fdUpdate.setPayMoney(platformFeeFD.getPayMoney()); logger.debug("子订单[code={}]的完单流程开始", odCode); - // 更新订单状态 - orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code()); + // 修改订单状态 + OrderDetail odUpdate = new OrderDetail(); + odUpdate.setId(orderDetailId); + odUpdate.setOrderStatus(OrderStatus.FINISH.code()); + odUpdate.setDrawCashDate(new Date()); + odUpdate.setDrawCashStatus(1); + orderDetailMapper.updateOrderDetail(odUpdate); // 加价单手续费补偿成功与否 boolean compensate = false; @@ -404,8 +406,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { if (feeAmt.compareTo(platformFeeFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) { // 当 0.00<改价单的手续费<=平台抽成金额 时 // 用平台抽成来补偿改价单的手续费 修改平台抽成子财务单金额 - update.setPayMoney(update.getPayMoney().subtract(feeAmt)); - int i = financialDetailService.updateFinancialDetail(update); + fdUpdate.setPayMoney(fdUpdate.getPayMoney().subtract(feeAmt)); + int i = financialDetailService.updateFinancialDetail(fdUpdate); compensate = i > 0; } else { logger.warn("主订单[code={}]的平台抽成金额不足以承担子订单[code={}]的[改价单]的手续费", @@ -469,9 +471,10 @@ public class OrderDetailServiceImpl implements OrderDetailService { Assert.isTrue(status, response.getString("error_msg")); // 待提现金额里加入子财务单金额 dtx = dtx.add(fdPayMoney); + // 修改平台抽成子财务单金额 - update.setPayMoney(update.getPayMoney().subtract(fee)); - financialDetailService.updateFinancialDetail(update); + fdUpdate.setPayMoney(fdUpdate.getPayMoney().subtract(fee)); + financialDetailService.updateFinancialDetail(fdUpdate); } // --------------------- 子财务单分账部分 end --------------------- diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index 3097a069..dc8ac571 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -5,27 +5,29 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -42,6 +44,8 @@ expect_time_end, work_begin_time, work_finish_time, + draw_cash_date, + draw_cash_status, clock_in_location, ledger_account_status, shelve_status, @@ -66,6 +70,8 @@ od.expect_time_end, od.work_begin_time, od.work_finish_time, + od.draw_cash_date, + od.draw_cash_status, od.clock_in_location, od.ledger_account_status, od.shelve_status, @@ -124,6 +130,9 @@ AND od.shelve_status = 0 + + AND od.draw_cash_status = ${drawCashStatus} + order by od.create_time @@ -223,6 +232,8 @@ expect_time_end = null, work_begin_time = #{workBeginTime}, work_finish_time = #{workFinishTime}, + draw_cash_date = #{drawCashDate}, + draw_cash_status = #{drawCashStatus}, clock_in_location = #{clockInLocation}, remark = #{remark}, update_by = #{updateBy}, diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderService.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderService.java index 61ff8cd8..50cbed6e 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderService.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderService.java @@ -8,4 +8,7 @@ public interface OrderService { // 自动完成和分账 void autoFinishOrder(); + // 自动修改提现状态 + void autoChangeDrawCashStatus(); + } 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 a1a9a0a1..1f4cfc48 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 @@ -21,6 +21,8 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.DayOfWeek; +import java.time.LocalDate; import java.util.Collections; import java.util.Date; import java.util.List; @@ -177,4 +179,27 @@ public class OrderServiceImpl implements OrderService { } } } + + @Override + public void autoChangeDrawCashStatus() { + LocalDate now = LocalDate.now(); + DayOfWeek dayOfWeek = now.getDayOfWeek(); + if (dayOfWeek.getValue() > 5) { + return; + } + OrderDetail orderDetail = new OrderDetail(); + orderDetail.setDrawCashStatus(1); + List orderDetails = orderDetailService.selectOrderDetailList(orderDetail); + long before24h = System.currentTimeMillis() - (24 * 60 * 60 * 1000); + for (OrderDetail od : orderDetails) { + if (od.getDrawCashDate().getTime() < before24h) { + OrderDetail update = new OrderDetail(); + update.setId(od.getId()); + update.setOrderStatus(2); + orderDetailService.updateOrderDetail(update); + logger.info("订单[{}]自动提现成功", od.getCode()); + } + } + } + } diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderTask.java b/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderTask.java index b2e6a0ca..ed7094c8 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderTask.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderTask.java @@ -15,25 +15,34 @@ public class OrderTask { /** * 超时状态刷新 - * */ - public void overTimeOrder(String orderStatus){ + */ + public void overTimeOrder(String orderStatus) { try { orderService.overTimeOrder(orderStatus); - }catch (Exception e){ + } catch (Exception e) { log.error("over time order task error is {}", ExceptionUtil.getExceptionMessage(e)); - e.printStackTrace(); } } /** * 自动确认完成订单 - * */ - public void finishOrder(){ + */ + public void finishOrder() { try { orderService.autoFinishOrder(); - }catch (Exception e){ + } catch (Exception e) { log.error("auto finish order task error is {}", ExceptionUtil.getExceptionMessage(e)); - e.printStackTrace(); + } + } + + /** + * 自动修改提现状态 + */ + public void autoChangeDrawCashStatus() { + try { + orderService.autoChangeDrawCashStatus(); + } catch (Exception e) { + log.error(e.getMessage(), e); } }