From eb268d35b330eab1b74d776e54be847ac7f5477b Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 31 Oct 2025 21:58:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=AE=A2=E5=8D=95=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/common/constant/CommonConstant.java | 7 +++ .../listener/RedisKeyExpiredListener.java | 1 + .../order/service/ShopOrderBaseService.java | 9 +++ .../service/ShopOrderBookingService.java | 11 +--- .../impl/ShopOrderBaseServiceImpl.java | 57 ++++++++++++++++++- .../impl/ShopOrderBookingServiceImpl.java | 47 +++++++-------- .../impl/ShopOrderInfoServiceImpl.java | 15 ++--- 7 files changed, 99 insertions(+), 48 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java index 88e641ce..be4ba04b 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java +++ b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java @@ -125,4 +125,11 @@ public class CommonConstant { public static final Integer Order_Booking_State_LJ = 1; public static final Integer Order_Booking_State_YY = 2; + // 预约下单从当前时间延迟的最小分钟数(单位分钟),不能低于35分钟 + public final static Integer MIN_DELAY_MINUTES_FOR_BOOKING_ORDER = 46; + + // 预约订单创建提前分钟数(用于提前创建顺丰订单) +// public final static Integer MIN_DELAY_MINUTES_FOR_SF_EXPRESS_ORDER = 35; + + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/RedisKeyExpiredListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/RedisKeyExpiredListener.java index b21fa126..a6ed7962 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/RedisKeyExpiredListener.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/RedisKeyExpiredListener.java @@ -96,6 +96,7 @@ public class RedisKeyExpiredListener implements MessageListener { // orderId String orderId = expiredKey.replace(RedisConstant.Order_Booking_Task_Key, ""); + log.info("[预约订单顺丰同城下单Redis过期监听] 处理预约订单顺丰同城下单超时消息. 订单号: {}", orderId); if (StrUtil.isBlank(orderId)) { log.error("[预约订单顺丰同城下单Redis过期监听] 键: {} 不符合预期格式,无法解析订单号", expiredKey); return; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java index d3b7965d..e0212547 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java @@ -607,4 +607,13 @@ public interface ShopOrderBaseService extends IBaseService { * @return */ Long sameCityOrderExpireSeconds(Long defaultValue); + + /** + * 更新订单下单时间 + * + * @param orderId + * @param orderTime + * @return + */ + Boolean updateOrderTime(String orderId, Date orderTime); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBookingService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBookingService.java index 8fa70126..1443c4e0 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBookingService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBookingService.java @@ -8,7 +8,6 @@ package com.suisung.mall.shop.order.service; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.suisung.mall.common.modules.order.ShopOrderBooking; import com.suisung.mall.core.web.service.IBaseService; @@ -40,15 +39,7 @@ public interface ShopOrderBookingService extends IBaseService * @return 分页结果 */ Page findValidBookingList(Integer pageNum, Integer pageSize); - - /** - * 更新预约订单任务 - * - * @param updateWrapper 更新条件包装器 - * @return 是否更新成功 - */ - Boolean update(UpdateWrapper updateWrapper); - + /** * 更改预约订单任务下单完成状态(同时删除 redis 的定时任务) * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index 78991b42..765b6420 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -6675,15 +6675,22 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("order_id", orderId) + .set("order_time", orderTime); + + // 3. 执行更新操作 + boolean result = update(updateWrapper); + + if (result) { + log.info("[更新订单时间] 订单时间更新成功, orderId={}, orderTime={}", orderId, orderTime); + } else { + log.warn("[更新订单时间] 订单时间更新失败, 可能订单不存在, orderId={}", orderId); + } + + return result; + } catch (Exception e) { + // 4. 异常处理 + log.error("[更新订单时间] 更新订单时间时发生异常, orderId={}, orderTime={}", orderId, orderTime, e); + return false; + } + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBookingServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBookingServiceImpl.java index 67a7ff14..f801672c 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBookingServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBookingServiceImpl.java @@ -21,6 +21,7 @@ import com.suisung.mall.common.utils.CheckUtil; import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.order.mapper.ShopOrderBookingMapper; +import com.suisung.mall.shop.order.service.ShopOrderBaseService; import com.suisung.mall.shop.order.service.ShopOrderBookingService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -30,17 +31,18 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; -import java.util.concurrent.TimeUnit; @Slf4j @Service public class ShopOrderBookingServiceImpl extends BaseServiceImpl implements ShopOrderBookingService { - private static final Long MINUTES_BEFORE_BOOKING = 35L; - @Resource private ShopOrderBookingMapper shopOrderBookingMapper; + @Lazy + @Resource + private ShopOrderBaseService shopOrderBaseService; + @Lazy @Autowired private RedisService redisService; @@ -64,7 +66,8 @@ public class ShopOrderBookingServiceImpl extends BaseServiceImpl 0) { - redisService.set(redisKey, Convert.toStr(shopOrderBooking.getRun_at()), runAt); + if (remainingSeconds > 0) { + redisService.set(redisKey, Convert.toStr(shopOrderBooking.getRun_at()), remainingSeconds); log.debug("Redis键设置成功: key={}, bookingAt={}, runAt={}", redisKey, bookingAt, runAt); } else { log.warn("过期时间无效,未设置Redis键: key={}, bookingAt={}, runAt={}", redisKey, bookingAt, runAt); @@ -111,7 +115,7 @@ public class ShopOrderBookingServiceImpl extends BaseServiceImpl updateWrapper) { - log.debug("更新预约订单任务"); - if (updateWrapper == null) { - log.warn("更新条件不能为空"); - return false; - } - - try { - return this.update(updateWrapper); - } catch (Exception e) { - log.error("更新预约订单任务时发生异常", e); - return false; - } - } - /** * 更改预约订单任务下单完成状态(同时删除 redis 的定时任务) * @@ -205,7 +193,7 @@ public class ShopOrderBookingServiceImpl extends BaseServiceImpl 0) { + redisService.set(redisKey, Convert.toStr(shopOrderBooking.getRun_at()), remainingSeconds); + count++; + } } return count; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java index 5b86dfd9..f7e63ebc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java @@ -119,27 +119,21 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl sfResult = sfExpressApiService.innerCreateSfExpressOrder(orderId, 0L); if (sfResult == null) { @@ -1161,7 +1154,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl