主订单超时罚金

This commit is contained in:
Hawking 2023-05-10 20:47:05 +08:00
parent f64296dec7
commit 6436dffee0
1 changed files with 35 additions and 3 deletions

View File

@ -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);
}
/**
* 计算超时时间
*