From e8fd8d49d26404733dffdc41a24f38b51dd3cae4 Mon Sep 17 00:00:00 2001 From: YiFei Kuang Date: Sun, 16 Feb 2025 19:20:51 +0800 Subject: [PATCH] fix bug --- .../web/controller/order/OrderController.java | 6 ++++++ .../order/OrderMasterController.java | 2 ++ .../ghy/web/pojo/vo/OrderListResponse.java | 2 ++ .../ghy/web/pojo/vo/OrderStandardDetail.java | 2 ++ .../com/ghy/order/domain/OrderDetail.java | 5 +++++ .../ghy/order/mapper/OrderDetailMapper.java | 2 ++ .../ghy/order/service/OrderDetailService.java | 2 ++ .../impl/AfterServiceRecordServiceImpl.java | 4 ++++ .../service/impl/OrderDetailServiceImpl.java | 5 +++++ .../mapper/order/OrderDetailMapper.xml | 14 +++++++++++-- .../quartz/service/impl/OrderServiceImpl.java | 21 +++++++++++++++++-- 11 files changed, 61 insertions(+), 4 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index e431eddb..d903f18f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -1085,7 +1085,11 @@ public class OrderController extends BaseController { break; } } + long count = detailAfterListOfMasters.stream().filter(x->(x.getAfterTimeout()!=null && x.getAfterTimeout() == 1)).count(); if (isKeep) { + if(count > 0){ + master.setAfterTimeout(1); + } filteredMasterList.add(master); } } @@ -1367,6 +1371,7 @@ public class OrderController extends BaseController { orderListResponse.setCustomerRemark(orderMaster.getRemark()); orderListResponse.setOrderType(detail.getOrderType()); orderListResponse.setTimeout(detail.getTimeout()); + orderListResponse.setAfterTimeout(detail.getAfterTimeout()); orderListResponse.setAfterServiceRecordList(detailRecordMap.get(detail.getId())); orderListResponse.setChangeMoney(changeMoney); orderListResponse.setDrawCashStatus(detail.getDrawCashStatus()); @@ -1660,6 +1665,7 @@ public class OrderController extends BaseController { orderListResponse.setOrderType(detail.getOrderType()); orderListResponse.setTimeout(detail.getTimeout()); orderListResponse.setTimeoutFineTimes(detail.getTimeoutFineTimes()); + orderListResponse.setAfterTimeout(detail.getAfterTimeout()); orderListResponse.setChangeMoney(changeMoney); orderListResponse.setCreateTime(detail.getCreateTime()); orderListResponse.setUpdateTime(detail.getUpdateTime()); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index f33c2c3b..718add64 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -1150,6 +1150,8 @@ public class OrderMasterController extends BaseController { orderStandardDetail.setDrawCashStatus(orderDetail.getDrawCashStatus()); orderStandardDetail.setDrawCashTime(orderDetail.getDrawCashTime()); + orderStandardDetail.setAfterTimeout(orderDetail.getAfterTimeout()); + orderStandardDetails.add(orderStandardDetail); } diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java index a77d45d3..84d716df 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java @@ -163,6 +163,8 @@ public class OrderListResponse { */ private Integer timeoutFineTimes; + private Integer afterTimeout; + private String orderMode; /*是否合约订单*/ diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java index 7569d0d6..57b447a6 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java @@ -80,4 +80,6 @@ public class OrderStandardDetail { */ private Integer timeoutFineTimes; + private Integer afterTimeout; + } diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java index fc4f76b1..429d5020 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java @@ -172,6 +172,11 @@ public class OrderDetail extends BaseEntity { */ private Integer timeout; + /** + * 售后是否超时 1=是 0=否 + * */ + private Integer afterTimeout; + /** * 超时扣款次数 */ diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java index 26c08cd0..7cace753 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java @@ -87,6 +87,8 @@ public interface OrderDetailMapper { */ int updateTimeout(@Param("id") Long id, @Param("timeout") int timeout, @Param("timeoutFineTimes") int timeoutFineTimes); + int updateAfterTimeout(@Param("id") Long id, @Param("timeout") int timeout, @Param("timeoutFineTimes") int timeoutFineTimes); + /** * 通过主订单ID批量更新子订单 * 可更新字段: orderStatus diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java index 6348df36..0b88286d 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -175,6 +175,8 @@ public interface OrderDetailService { */ int updateTimeout(Long id, int timeout, int timeoutFineTimes); + int updateAfterTimeout(Long id, int timeout, int timeoutFineTimes); + int deleteByMaster(Long masterId); /** diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 77164e53..313a3924 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -160,7 +160,11 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService } else { agreeRefund(afterServiceRecord); } + // 更新为售后未超时 + orderDetailService.updateAfterTimeout(afterServiceRecord.getOrderDetailId(), 0, 0); } else if (one.equals(afterServiceRecord.getWorkerFeedbackResult()) && param.getCustomerFinalCheck() == null) { + // 更新为售后未超时 + orderDetailService.updateAfterTimeout(afterServiceRecord.getOrderDetailId(), 0, 0); // 师傅同意 且 客户未处理 afterServiceRecordMapper.updateAfterServiceRecord(param); return drawCash ? AjaxResult.error("本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,需同意退款的同意后您线下与客户另行操作,系统无法提供原路返回退款!") : AjaxResult.success(); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index df6bc2b6..4063efbb 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -1105,6 +1105,11 @@ public class OrderDetailServiceImpl implements OrderDetailService { return orderDetailMapper.updateTimeout(id, timeout, timeoutFineTimes); } + @Override + public int updateAfterTimeout(Long id, int timeout, int timeoutFineTimes) { + return orderDetailMapper.updateAfterTimeout(id, timeout, timeoutFineTimes); + } + @Override public int deleteByMaster(Long masterId) { return orderDetailMapper.deleteByMaster(masterId); diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index b308e01c..655f6d91 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -31,6 +31,7 @@ + @@ -60,7 +61,8 @@ update_time, remark, timeout_, - timeout_fine_times + timeout_fine_times, + after_timeout FROM order_detail @@ -91,7 +93,8 @@ od.remark, od.draw_cash_status, od.timeout_, - od.timeout_fine_times + od.timeout_fine_times, + od.after_timeout FROM order_detail od LEFT JOIN order_master om ON om.id = od.order_master_id LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id @@ -373,6 +376,13 @@ WHERE id = #{id} + + UPDATE order_detail + SET after_timeout = #{timeout}, + timeout_fine_times = #{timeoutFineTimes} + WHERE id = #{id} + + UPDATE order_detail 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 052ee9d9..40d54ee8 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 @@ -1,8 +1,11 @@ package com.ghy.quartz.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.ghy.common.enums.OrderStatus; +import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderMaster; +import com.ghy.order.service.IAfterServiceRecordService; import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderMasterService; import com.ghy.payment.domain.FinancialDetail; @@ -42,7 +45,7 @@ public class OrderServiceImpl implements OrderService { * * @see OrderStatus */ - @Value("${order.timeout.status:-4,-3,-2,0,2,1,3}") + @Value("${order.timeout.status:-4,-3,-2,-1,0,2,1,3}") private List timeoutOrderStatus; private static final List orderMasterTimeoutStatus = Arrays.asList(0, 1); @@ -60,6 +63,8 @@ public class OrderServiceImpl implements OrderService { private FinancialMasterService financialMasterService; @Resource private ISysDeptConfigService sysDeptConfigService; + @Resource + private IAfterServiceRecordService afterServiceRecordService; @Override public void overTimeOrder(String orderStatus) { @@ -187,6 +192,18 @@ public class OrderServiceImpl implements OrderService { boolean timeout = ONE.equals(order.getTimeout()); // 超时扣款次数 Integer times = order.getTimeoutFineTimes(); + // 判断是否是售后订单 + AfterServiceRecord afterParam = new AfterServiceRecord(); + afterParam.setOrderDetailId(order.getId()); + List afterServiceRecord = afterServiceRecordService.selectAfterServiceRecordList(afterParam); + if(CollectionUtil.isNotEmpty(afterServiceRecord) && (afterServiceRecord.get(0).getCustomerFinalCheck() == null || afterServiceRecord.get(0).getCustomerFinalCheck() != 1L)){ + // 查询一下售后单时间 + Date afterTime = getOverTime(afterServiceRecord.get(0).getUpdateTime(), 30 * 60 * 1000); + if (afterTime.before(now)) { + log.info("售后订单[{}]超时30分钟", order.getId()); + orderDetailService.updateAfterTimeout(order.getId(), 1, 0); + } + } if (!timeout) { log.info("单号:{},状态:{},创建时间:{},更新时间:{}", order.getCode(), order.getOrderStatus(), order.getCreateTime(), order.getUpdateTime()); // 待上门超时 @@ -205,7 +222,7 @@ public class OrderServiceImpl implements OrderService { // 未超时的单 else if (order.getOrderStatus().equals(OrderStatus.SERVER.code())) { // 服务中状态要按预计上门时间计算4h超时 - Date overTime = DateUtils.addMilliseconds(order.getExpectTimeStart(), 4 * 60 * 60 * 1000); + Date overTime = DateUtils.addMilliseconds(order.getUpdateTime(), 4 * 60 * 60 * 1000); if (overTime.before(now)) { log.info("订单[{}]服务中状态超时4小时 扣款", order.getId()); OrderTimeoutRecord record = new OrderTimeoutRecord(order.getId(), order.getWorkerId(), order.getDeptId(), order.getOrderStatus());