From d2289f2d125f6f859fea92e98a6e014b3f12085b Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 7 Nov 2025 00:35:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A0=8D=E4=BB=B7=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/store/ShopStoreActivityBase.java | 4 +- .../impl/ShopOrderInfoServiceImpl.java | 158 +++++++++--------- .../impl/ShopStoreBaseServiceImpl.java | 16 +- 3 files changed, 96 insertions(+), 82 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreActivityBase.java b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreActivityBase.java index a68a8786..03baa06c 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreActivityBase.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreActivityBase.java @@ -132,7 +132,7 @@ public class ShopStoreActivityBase implements Serializable { @ApiModelProperty(value = "在活动时间范围内,用户砍价允许的天数") private Integer cut_days; - @ApiModelProperty(value = "活动商品的总数量") - private Integer product_cont; + @ApiModelProperty(value = "参与活动商品的总数量") + private Integer product_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 5f2334bd..7b211ee7 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 @@ -852,84 +852,6 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl checkBookingOrderArgs(Integer storeId, Integer bookingState, String bookingBeginTimeStr, String bookingEndTimeStr) { - // 1. 必填参数检查 - if (CheckUtil.isEmpty(storeId) || CheckUtil.isEmpty(bookingState)) { - return Pair.of(false, "[预约单校验] 缺少必要参数"); - } - - // 2. 预约状态检查 - if (!CommonConstant.Order_Booking_State_YY.equals(bookingState)) { - return Pair.of(true, "[预约单校验] 非预订单,跳过验证"); - } - - // 3. 时间格式检查 - if (StrUtil.isBlank(bookingBeginTimeStr)) { - return Pair.of(false, "[预约单校验] 预约时间不能为空"); - } - - Date bookingBeginTime = DateTimeUtils.tryParseDateTimeToDate(bookingBeginTimeStr); - Date bookingEndTime = DateTimeUtils.tryParseDateTimeToDate(bookingEndTimeStr); - if (bookingBeginTime == null) { - return Pair.of(false, "[预约单校验] 预约时间格式有误"); - } - - // 4. 时间逻辑检查 - 开始时间不能晚于结束时间 - if (bookingEndTime != null && bookingBeginTime.after(bookingEndTime)) { - return Pair.of(false, "[预约单校验] 开始时间不能晚于截止时间"); - } - - // 5. 店铺信息检查 - ShopStoreInfo shopStoreInfo = shopStoreInfoService.getShopStoreInfoByStoreId(storeId); - if (shopStoreInfo == null) { - return Pair.of(false, "[预约单校验] 店铺信息有误"); - } - - if (StrUtil.isBlank(shopStoreInfo.getStore_opening_hours()) || StrUtil.isBlank(shopStoreInfo.getStore_close_hours())) { - shopStoreInfo.setStore_opening_hours("09:00"); - shopStoreInfo.setStore_close_hours("06:00"); - logger.warn("[预约单校验] 店铺营业时间未设置,请联系商家,默认指定 {}-{}", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours()); - } - - // 6. 店铺营业时间检查 - if (DateTimeUtils.isTimeInRange(shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours(), bookingBeginTime) != 0) { - String message = StrUtil.format("[预约单校验] 请在 {}-{} 店铺营业时间内预约下单", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours()); - return Pair.of(false, message); - } - - // 7. 预约时间范围检查 - 仅能预约50分钟后的订单(防止用户在下单页面停留太长,45分钟也是可以通过的) - Date fortyFiveMinutesLater = DateUtil.offsetMinute(new Date(), CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER - 5); - if (bookingBeginTime.before(fortyFiveMinutesLater)) { - return Pair.of(false, String.format("[预约单校验] 请预约%d分后的订单", CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER)); - } - - return Pair.of(true, "[预约单校验] 成功"); - } - - /** - * 判断订单是否为预约订单 - * - * @param orderInfo 订单信息 - * @return 是否为预约订单 - */ - @Override - public Boolean isBookingOrder(ShopOrderInfo orderInfo) { - return orderInfo != null - && CommonConstant.Order_Booking_State_YY.equals(orderInfo.getBooking_state()) - && !CheckUtil.isEmpty(orderInfo.getBooking_at()) - && orderInfo.getBooking_at().longValue() >= System.currentTimeMillis() / 1000; - } - /** * 执行预约订单到点后向顺丰同城订单任务 * @@ -1008,6 +930,86 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl checkBookingOrderArgs(Integer storeId, Integer bookingState, String bookingBeginTimeStr, String bookingEndTimeStr) { + // 1. 必填参数检查 + if (CheckUtil.isEmpty(storeId) || CheckUtil.isEmpty(bookingState)) { + return Pair.of(false, "[预约单校验] 缺少必要参数"); + } + + // 2. 预约状态检查 + if (!CommonConstant.Order_Booking_State_YY.equals(bookingState)) { + return Pair.of(true, "[预约单校验] 非预订单,跳过验证"); + } + + // 3. 时间格式检查 + if (StrUtil.isBlank(bookingBeginTimeStr)) { + return Pair.of(false, "[预约单校验] 预约时间不能为空"); + } + + Date bookingBeginTime = DateTimeUtils.tryParseDateTimeToDate(bookingBeginTimeStr); + Date bookingEndTime = DateTimeUtils.tryParseDateTimeToDate(bookingEndTimeStr); + if (bookingBeginTime == null) { + return Pair.of(false, "[预约单校验] 预约时间格式有误"); + } + + // 4. 时间逻辑检查 - 开始时间不能晚于结束时间 + if (bookingEndTime != null && bookingBeginTime.after(bookingEndTime)) { + return Pair.of(false, "[预约单校验] 开始时间不能晚于截止时间"); + } + + // 5. 店铺信息检查 + ShopStoreInfo shopStoreInfo = shopStoreInfoService.getShopStoreInfoByStoreId(storeId); + if (shopStoreInfo == null) { + return Pair.of(false, "[预约单校验] 店铺信息有误"); + } + + if (StrUtil.isBlank(shopStoreInfo.getStore_opening_hours()) || StrUtil.isBlank(shopStoreInfo.getStore_close_hours())) { + shopStoreInfo.setStore_opening_hours("00:00"); + shopStoreInfo.setStore_close_hours("23:59"); + logger.warn("[预约单校验] 店铺营业时间未设置,请联系商家,默认指定 {}-{}", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours()); + return Pair.of(false, "[预约单校验] 店铺营业时间未设置,请联系商家"); + } + + // 6. 店铺营业时间检查 + if (DateTimeUtils.isTimeInRange(shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours(), bookingBeginTime) != 0) { + String message = StrUtil.format("[预约单校验] 请在 {}-{} 营业时间内预约下单", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours()); + return Pair.of(false, message); + } + + // 7. 预约时间范围检查 - 仅能预约50分钟后的订单(防止用户在下单页面停留太长,45分钟也是可以通过的) + Date fortyFiveMinutesLater = DateUtil.offsetMinute(new Date(), CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER - 5); + if (bookingBeginTime.before(fortyFiveMinutesLater)) { + return Pair.of(false, String.format("[预约单校验] 请预约%d分钟后下单", CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER)); + } + + return Pair.of(true, "[预约单校验] 成功"); + } + + /** + * 判断订单是否为预约订单 + * + * @param orderInfo 订单信息 + * @return 是否为预约订单 + */ + @Override + public Boolean isBookingOrder(ShopOrderInfo orderInfo) { + return orderInfo != null + && CommonConstant.Order_Booking_State_YY.equals(orderInfo.getBooking_state()) + && !CheckUtil.isEmpty(orderInfo.getBooking_at()) + && orderInfo.getBooking_at().longValue() >= System.currentTimeMillis() / 1000; + } + + /** * 根据店铺的营业时间范围生成可预约下单的参数 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java index 31b92843..cf07fc55 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java @@ -2370,9 +2370,15 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl= 1) { + if (storeBizState != null && storeBizState <= 3 && storeBizState >= 1) { base.setStore_biz_state(storeBizState); + + Date storeBizOpeningDate = Convert.toDate(getParameter("store_biz_opening_date")); + if (storeBizState == 3 && storeBizOpeningDate == null) { + return CommonResult.failed("店铺如果开业(活动)筹备中,请输入开业日期:yyyy-MM-dd"); + } } // 打包费 @@ -2535,9 +2541,15 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl= 1) { + if (storeBizState != null && storeBizState <= 3 && storeBizState >= 1) { base.setStore_biz_state(storeBizState); + + Date storeBizOpeningDate = Convert.toDate(getParameter("store_biz_opening_date")); + if (storeBizState == 3 && storeBizOpeningDate == null) { + return CommonResult.failed("店铺如果开业(活动)筹备中,请输入开业日期:yyyy-MM-dd"); + } } ShopStoreCompany company = null;