增加确认中倒计时的暂停以及开始
This commit is contained in:
parent
f12121c457
commit
190d2a2bed
|
|
@ -1099,7 +1099,7 @@ public class OrderMasterController extends BaseController {
|
|||
BigDecimal totalChangeMoney = new BigDecimal(0);
|
||||
BigDecimal paymentMoney = BigDecimal.ZERO;
|
||||
if (financialMaster.getPayStatus() == 1) {
|
||||
paymentMoney = paymentMoney.add(financialMaster.getTotalMoney());
|
||||
paymentMoney = paymentMoney.add(financialMaster.getPayMoney());
|
||||
}
|
||||
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByMasterId(master.getId());
|
||||
BigDecimal changePaymentMoney = financialChangeRecords.stream()
|
||||
|
|
|
|||
|
|
@ -82,6 +82,11 @@ public class OrderDetail extends BaseEntity {
|
|||
@Excel(name = "进入确认中时间", cellType = Excel.ColumnType.STRING)
|
||||
private Date confirmStartTime;
|
||||
|
||||
/**
|
||||
* 确认中倒计时剩余时间(毫秒)- 售后暂停时记录
|
||||
*/
|
||||
private Long confirmTimeoutRemainingTime;
|
||||
|
||||
// 商品归属师傅
|
||||
private Worker goodsWorker;
|
||||
// 接单师傅
|
||||
|
|
|
|||
|
|
@ -125,6 +125,9 @@ public class AfterServiceTimeoutTask {
|
|||
// 更新记录
|
||||
afterServiceRecordService.updateAfterServiceRecord(record);
|
||||
|
||||
// 恢复确认中倒计时
|
||||
afterServiceRecordService.resumeConfirmTimeout(record.getOrderDetailId());
|
||||
|
||||
log.info("客户确认超时自动处理完成,售后记录ID:{}", record.getId());
|
||||
} catch (Exception e) {
|
||||
log.error("处理客户确认超时异常,售后记录ID:{}", record.getId(), e);
|
||||
|
|
|
|||
|
|
@ -87,6 +87,12 @@ public interface IAfterServiceRecordService {
|
|||
*/
|
||||
void executeRefundLogic(AfterServiceRecord afterServiceRecord);
|
||||
|
||||
/**
|
||||
* 恢复确认中倒计时
|
||||
* @param orderDetailId 子单ID
|
||||
*/
|
||||
void resumeConfirmTimeout(Long orderDetailId);
|
||||
|
||||
/**
|
||||
* 师傅重发/补发操作
|
||||
* 师傅端点击重发补发按钮,保存重发/补发方案
|
||||
|
|
|
|||
|
|
@ -121,6 +121,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
throw new BaseException("存在未完成的售后记录,请勿重复申请!");
|
||||
}
|
||||
int result = afterServiceRecordMapper.insertAfterServiceRecord(afterServiceRecord);
|
||||
|
||||
// 暂停确认中倒计时
|
||||
pauseConfirmTimeout(afterServiceRecord.getOrderDetailId());
|
||||
// 发一起一次售后发起通知
|
||||
// 通知师傅新订单
|
||||
try {
|
||||
|
|
@ -241,6 +244,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
// }
|
||||
|
||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||
|
||||
// 恢复确认中倒计时
|
||||
resumeConfirmTimeout(afterServiceRecord.getOrderDetailId());
|
||||
|
||||
return AjaxResult.success("订单完成结束");
|
||||
} else {
|
||||
// 客户不同意重做结果,按之前的逻辑走(可能需要退款)
|
||||
|
|
@ -393,7 +400,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
afterServiceRecord.setOriginalRefund(refundMoney);
|
||||
financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
|
||||
financialMaster.setServerMoney(financialMaster.getServerMoney().subtract(refundMoney));
|
||||
financialMaster.setDiscountMoney(refundMoney);
|
||||
// financialMaster.setDiscountMoney(financialMaster.getDiscountMoney().add(refundMoney));
|
||||
financialMasterService.updateFinancialMaster(financialMaster);
|
||||
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
||||
// 发起支付撤销
|
||||
|
|
@ -684,4 +691,77 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 暂停确认中倒计时
|
||||
* @param orderDetailId 子单ID
|
||||
*/
|
||||
private void pauseConfirmTimeout(Long orderDetailId) {
|
||||
try {
|
||||
OrderDetail orderDetail = orderDetailService.selectById(orderDetailId);
|
||||
if (orderDetail != null && orderDetail.getOrderStatus() == OrderStatus.FINISH_CHECK.code()) {
|
||||
// 计算剩余倒计时时间
|
||||
long remainingTime = calculateConfirmTimeoutRemainingTime(orderDetail);
|
||||
|
||||
// 记录剩余时间
|
||||
OrderDetail updateDetail = new OrderDetail();
|
||||
updateDetail.setId(orderDetailId);
|
||||
updateDetail.setConfirmTimeoutRemainingTime(remainingTime);
|
||||
orderDetailService.updateOrderDetail(updateDetail);
|
||||
|
||||
log.info("暂停确认中倒计时,子单ID:{},剩余时间:{}毫秒", orderDetailId, remainingTime);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("暂停确认中倒计时失败,子单ID:{}", orderDetailId, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复确认中倒计时
|
||||
* @param orderDetailId 子单ID
|
||||
*/
|
||||
@Override
|
||||
public void resumeConfirmTimeout(Long orderDetailId) {
|
||||
try {
|
||||
OrderDetail orderDetail = orderDetailService.selectById(orderDetailId);
|
||||
if (orderDetail != null && orderDetail.getOrderStatus() == OrderStatus.FINISH_CHECK.code()) {
|
||||
Long remainingTime = orderDetail.getConfirmTimeoutRemainingTime();
|
||||
if (remainingTime != null && remainingTime > 0) {
|
||||
// 设置新的确认中开始时间 = 当前时间 - 剩余时间
|
||||
Date newConfirmStartTime = new Date(System.currentTimeMillis() + remainingTime);
|
||||
|
||||
OrderDetail updateDetail = new OrderDetail();
|
||||
updateDetail.setId(orderDetailId);
|
||||
updateDetail.setConfirmStartTime(newConfirmStartTime);
|
||||
updateDetail.setConfirmTimeoutRemainingTime(null); // 清空剩余时间
|
||||
orderDetailService.updateOrderDetail(updateDetail);
|
||||
|
||||
log.info("恢复确认中倒计时,子单ID:{},新确认开始时间:{},剩余时间:{}毫秒",
|
||||
orderDetailId, newConfirmStartTime, remainingTime);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("恢复确认中倒计时失败,子单ID:{}", orderDetailId, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算确认中倒计时的剩余时间
|
||||
* @param orderDetail 子单信息
|
||||
* @return 剩余时间(毫秒)
|
||||
*/
|
||||
private long calculateConfirmTimeoutRemainingTime(OrderDetail orderDetail) {
|
||||
if (orderDetail.getConfirmStartTime() == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
long confirmStartTime = orderDetail.getConfirmStartTime().getTime();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
// long timeoutDuration = 60 * 60 * 1000L; // 10分钟(测试环境),生产环境应该是60分钟
|
||||
|
||||
long elapsedTime = confirmStartTime-currentTime
|
||||
// long remainingTime = timeoutDuration - elapsedTime;
|
||||
|
||||
return Math.max(0, elapsedTime); // 确保不为负数
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
<result property="handoverImages" column="handover_images"/>
|
||||
<result property="handoverRemark" column="handover_remark"/>
|
||||
<result property="confirmStartTime" column="confirm_start_time"/>
|
||||
<result property="confirmTimeoutRemainingTime" column="confirm_timeout_remaining_time"/>
|
||||
<result property="timeout" column="timeout_"/>
|
||||
<result property="afterTimeout" column="after_timeout"/>
|
||||
<result property="timeoutFineTimes" column="timeout_fine_times"/>
|
||||
|
|
|
|||
|
|
@ -1412,11 +1412,15 @@ public class OrderServiceImpl implements OrderService {
|
|||
for (OrderDetail orderDetail : orderDetails) {
|
||||
try {
|
||||
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
|
||||
|
||||
|
||||
if (orderMaster == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
AfterServiceRecord unfinished = afterServiceRecordService.unfinished(orderDetail.getId());
|
||||
if (unfinished != null) {
|
||||
log.debug("子订单[id={}, code={}]存在售后记录,跳过自动完成", orderDetail.getId(), orderDetail.getCode());
|
||||
continue;
|
||||
}
|
||||
Date targetTime;
|
||||
String logType = "已设置";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue