主订单超时罚金
This commit is contained in:
parent
f64296dec7
commit
6436dffee0
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算超时时间
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue