增加确认中倒计时的暂停以及开始
This commit is contained in:
parent
f12121c457
commit
190d2a2bed
|
|
@ -1099,7 +1099,7 @@ public class OrderMasterController extends BaseController {
|
||||||
BigDecimal totalChangeMoney = new BigDecimal(0);
|
BigDecimal totalChangeMoney = new BigDecimal(0);
|
||||||
BigDecimal paymentMoney = BigDecimal.ZERO;
|
BigDecimal paymentMoney = BigDecimal.ZERO;
|
||||||
if (financialMaster.getPayStatus() == 1) {
|
if (financialMaster.getPayStatus() == 1) {
|
||||||
paymentMoney = paymentMoney.add(financialMaster.getTotalMoney());
|
paymentMoney = paymentMoney.add(financialMaster.getPayMoney());
|
||||||
}
|
}
|
||||||
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByMasterId(master.getId());
|
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByMasterId(master.getId());
|
||||||
BigDecimal changePaymentMoney = financialChangeRecords.stream()
|
BigDecimal changePaymentMoney = financialChangeRecords.stream()
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,11 @@ public class OrderDetail extends BaseEntity {
|
||||||
@Excel(name = "进入确认中时间", cellType = Excel.ColumnType.STRING)
|
@Excel(name = "进入确认中时间", cellType = Excel.ColumnType.STRING)
|
||||||
private Date confirmStartTime;
|
private Date confirmStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认中倒计时剩余时间(毫秒)- 售后暂停时记录
|
||||||
|
*/
|
||||||
|
private Long confirmTimeoutRemainingTime;
|
||||||
|
|
||||||
// 商品归属师傅
|
// 商品归属师傅
|
||||||
private Worker goodsWorker;
|
private Worker goodsWorker;
|
||||||
// 接单师傅
|
// 接单师傅
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,9 @@ public class AfterServiceTimeoutTask {
|
||||||
// 更新记录
|
// 更新记录
|
||||||
afterServiceRecordService.updateAfterServiceRecord(record);
|
afterServiceRecordService.updateAfterServiceRecord(record);
|
||||||
|
|
||||||
|
// 恢复确认中倒计时
|
||||||
|
afterServiceRecordService.resumeConfirmTimeout(record.getOrderDetailId());
|
||||||
|
|
||||||
log.info("客户确认超时自动处理完成,售后记录ID:{}", record.getId());
|
log.info("客户确认超时自动处理完成,售后记录ID:{}", record.getId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理客户确认超时异常,售后记录ID:{}", record.getId(), e);
|
log.error("处理客户确认超时异常,售后记录ID:{}", record.getId(), e);
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,12 @@ public interface IAfterServiceRecordService {
|
||||||
*/
|
*/
|
||||||
void executeRefundLogic(AfterServiceRecord afterServiceRecord);
|
void executeRefundLogic(AfterServiceRecord afterServiceRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复确认中倒计时
|
||||||
|
* @param orderDetailId 子单ID
|
||||||
|
*/
|
||||||
|
void resumeConfirmTimeout(Long orderDetailId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 师傅重发/补发操作
|
* 师傅重发/补发操作
|
||||||
* 师傅端点击重发补发按钮,保存重发/补发方案
|
* 师傅端点击重发补发按钮,保存重发/补发方案
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
throw new BaseException("存在未完成的售后记录,请勿重复申请!");
|
throw new BaseException("存在未完成的售后记录,请勿重复申请!");
|
||||||
}
|
}
|
||||||
int result = afterServiceRecordMapper.insertAfterServiceRecord(afterServiceRecord);
|
int result = afterServiceRecordMapper.insertAfterServiceRecord(afterServiceRecord);
|
||||||
|
|
||||||
|
// 暂停确认中倒计时
|
||||||
|
pauseConfirmTimeout(afterServiceRecord.getOrderDetailId());
|
||||||
// 发一起一次售后发起通知
|
// 发一起一次售后发起通知
|
||||||
// 通知师傅新订单
|
// 通知师傅新订单
|
||||||
try {
|
try {
|
||||||
|
|
@ -241,6 +244,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
// }
|
// }
|
||||||
|
|
||||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||||
|
|
||||||
|
// 恢复确认中倒计时
|
||||||
|
resumeConfirmTimeout(afterServiceRecord.getOrderDetailId());
|
||||||
|
|
||||||
return AjaxResult.success("订单完成结束");
|
return AjaxResult.success("订单完成结束");
|
||||||
} else {
|
} else {
|
||||||
// 客户不同意重做结果,按之前的逻辑走(可能需要退款)
|
// 客户不同意重做结果,按之前的逻辑走(可能需要退款)
|
||||||
|
|
@ -393,7 +400,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
afterServiceRecord.setOriginalRefund(refundMoney);
|
afterServiceRecord.setOriginalRefund(refundMoney);
|
||||||
financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
|
financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
|
||||||
financialMaster.setServerMoney(financialMaster.getServerMoney().subtract(refundMoney));
|
financialMaster.setServerMoney(financialMaster.getServerMoney().subtract(refundMoney));
|
||||||
financialMaster.setDiscountMoney(refundMoney);
|
// financialMaster.setDiscountMoney(financialMaster.getDiscountMoney().add(refundMoney));
|
||||||
financialMasterService.updateFinancialMaster(financialMaster);
|
financialMasterService.updateFinancialMaster(financialMaster);
|
||||||
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
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="handoverImages" column="handover_images"/>
|
||||||
<result property="handoverRemark" column="handover_remark"/>
|
<result property="handoverRemark" column="handover_remark"/>
|
||||||
<result property="confirmStartTime" column="confirm_start_time"/>
|
<result property="confirmStartTime" column="confirm_start_time"/>
|
||||||
|
<result property="confirmTimeoutRemainingTime" column="confirm_timeout_remaining_time"/>
|
||||||
<result property="timeout" column="timeout_"/>
|
<result property="timeout" column="timeout_"/>
|
||||||
<result property="afterTimeout" column="after_timeout"/>
|
<result property="afterTimeout" column="after_timeout"/>
|
||||||
<result property="timeoutFineTimes" column="timeout_fine_times"/>
|
<result property="timeoutFineTimes" column="timeout_fine_times"/>
|
||||||
|
|
|
||||||
|
|
@ -1416,7 +1416,11 @@ public class OrderServiceImpl implements OrderService {
|
||||||
if (orderMaster == null) {
|
if (orderMaster == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
AfterServiceRecord unfinished = afterServiceRecordService.unfinished(orderDetail.getId());
|
||||||
|
if (unfinished != null) {
|
||||||
|
log.debug("子订单[id={}, code={}]存在售后记录,跳过自动完成", orderDetail.getId(), orderDetail.getCode());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Date targetTime;
|
Date targetTime;
|
||||||
String logType = "已设置";
|
String logType = "已设置";
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue