From 6436dffee09854539f394fcc174534675d1095a6 Mon Sep 17 00:00:00 2001 From: Hawking Date: Wed, 10 May 2023 20:47:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E8=AE=A2=E5=8D=95=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E7=BD=9A=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/service/impl/OrderServiceImpl.java | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) 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 a009fd57..56b93942 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 @@ -6,9 +6,11 @@ import com.ghy.order.domain.OrderMaster; import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderMasterService; import com.ghy.payment.domain.FinancialDetail; +import com.ghy.payment.domain.FinancialMaster; import com.ghy.payment.domain.OrderTimeoutRecord; import com.ghy.payment.mapper.OrderFineRecordMapper; import com.ghy.payment.service.FinancialDetailService; +import com.ghy.payment.service.FinancialMasterService; import com.ghy.quartz.service.OrderService; import com.ghy.system.domain.SysDeptConfig; import com.ghy.system.service.ISysDeptConfigService; @@ -55,6 +57,8 @@ public class OrderServiceImpl implements OrderService { @Resource private FinancialDetailService financialDetailService; @Resource + private FinancialMasterService financialMasterService; + @Resource private ISysDeptConfigService sysDeptConfigService; @Override @@ -98,7 +102,7 @@ public class OrderServiceImpl implements OrderService { } } if (timeout) { - if (overTime1h.before(now)) { + if (overTime1h.before(now) && order.getWorkerId() != null) { log.info("主订单[{}]超时60分钟", order.getId()); // 已超时 60min后取消超时状态 清空workerId orderMasterService.updateTimeout(order.getId(), 0); @@ -129,15 +133,23 @@ public class OrderServiceImpl implements OrderService { if (timeout) { if (overTime4h.before(now) && ZERO.equals(fineTimes)) { log.info("主订单[{}]超时4小时", order.getId()); - // TODO 扣款 orderMasterService.updateTimeout(order.getId(), 1, 1); + // insert 罚金记录 + OrderTimeoutRecord record = new OrderTimeoutRecord(order.getId(), order.getWorkerId(), order.getDeptId(), order.getOrderStatus()); + record.setPayMoney(getFineMoney(order)); + record.setFineStatus(0); + orderFineRecordMapper.insert(record); fineTimes = ONE; } if (overTime6h.before(now) && ONE.equals(fineTimes)) { log.info("主订单[{}]超时6小时", order.getId()); - // TODO 扣款 orderMasterService.updateTimeout(order.getId(), 1, 2); + // insert 罚金记录 + OrderTimeoutRecord record = new OrderTimeoutRecord(order.getId(), order.getWorkerId(), order.getDeptId(), order.getOrderStatus()); + record.setPayMoney(getFineMoney(order)); + record.setFineStatus(0); + orderFineRecordMapper.insert(record); } } } @@ -234,6 +246,26 @@ public class OrderServiceImpl implements OrderService { return fineMoney.add(rateMoney); } + /** + * 计算订单罚金(固定罚金+比例罚金) + */ + private BigDecimal getFineMoney(OrderMaster orderMaster) { + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); + SysDeptConfig deptConfig = sysDeptConfigService.selectByDeptId(orderMaster.getDeptId()); + BigDecimal fineMoney = deptConfig.getGoingOutTime(); + // 如果扣款额为null或<0 + if (fineMoney == null || BigDecimal.ZERO.compareTo(fineMoney) > -1) { + fineMoney = BigDecimal.ZERO; + } + BigDecimal timeoutRate = deptConfig.getGoingOutTimeRate(); + // 如果扣款比例 为null 或 <0 或 >1.00 + if (timeoutRate == null || BigDecimal.ZERO.compareTo(timeoutRate) > 0 || BigDecimal.ONE.compareTo(timeoutRate) < 0) { + return fineMoney; + } + BigDecimal rateMoney = financialMaster.getPayMoney().multiply(timeoutRate); + return fineMoney.add(rateMoney); + } + /** * 计算超时时间 *