Browse Source

订单限制逻辑调整

codingliang 1 year atrás
parent
commit
2e21b34bfc

+ 2 - 2
src/main/java/com/sqx/modules/activity/service/impl/ActivityServiceImpl.java

@@ -348,7 +348,7 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
         // 是否仅针对第一次下单
         if (SuitTypeEnum.FIRST_ORDER.getTypeCode().equals(shopActivityBO.getSuitType())) {
             // 查询用户在该店铺消费次数
-            int historyCount = orderService.countByShopIdAndUserId(order.getShopId(), order.getUserId());
+            int historyCount = orderService.countByShopIdAndUserId(order.getShopId(), order.getUserId(), order.getOrderId());
             return historyCount == 0;
         }
 
@@ -357,7 +357,7 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
             // 每天限制的数量
             Integer limitValue = shopActivityBO.getLimitValue();
 
-            int curDateCount = orderService.countByShopIdAndUserIdAndCurDate(order.getShopId(), order.getUserId());
+            int curDateCount = orderService.countByShopIdAndUserIdAndCurDate(order.getShopId(), order.getUserId(), order.getOrderId());
             return limitValue.intValue() >= curDateCount;
         }
 

+ 6 - 2
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -124,19 +124,23 @@ public interface AppOrderService extends IService<TbOrder> {
 
     /**
      * 查询用户在指定店铺的有效订单数量
+     *      (排除当前orderId,如果有的话)
      * @param shopId 店铺id
      * @param userId 用户id
+     * @param orderId 订单id
      * @return 订单数量
      */
-    int countByShopIdAndUserId(Long shopId, Long userId);
+    int countByShopIdAndUserId(Long shopId, Long userId, Long orderId);
 
     /**
      * 查询用户当天在指定店铺的有效订单数量
+     *      (排除当前orderId,如果有的话)
      * @param shopId 店铺id
      * @param userId 用户id
+     * @param orderId 订单id
      * @return 订单数量
      */
-    int countByShopIdAndUserIdAndCurDate(Long shopId, Long userId);
+    int countByShopIdAndUserIdAndCurDate(Long shopId, Long userId, Long orderId);
 
     /**
      * 店铺完成订单

+ 8 - 4
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -591,17 +591,20 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     }
 
     @Override
-    public int countByShopIdAndUserId(Long shopId, Long userId) {
+    public int countByShopIdAndUserId(Long shopId, Long userId, Long orderId) {
         LambdaQueryWrapper<TbOrder> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(TbOrder::getShopId, shopId);
         queryWrapper.eq(TbOrder::getUserId, userId);
-        // 5 订单已取消
-        queryWrapper.ne(TbOrder::getStatus, 5);
+        queryWrapper.ne(ObjectUtil.isNotNull(orderId), TbOrder::getOrderId, orderId);
+        // 订单已支付
+        queryWrapper.eq(TbOrder::getIsPay, 1);
+        // // 5 订单已取消
+        // queryWrapper.ne(TbOrder::getStatus, 5);
         return this.count(queryWrapper);
     }
 
     @Override
-    public int countByShopIdAndUserIdAndCurDate(Long shopId, Long userId) {
+    public int countByShopIdAndUserIdAndCurDate(Long shopId, Long userId, Long orderId) {
         LocalDate now = LocalDate.now();
 
         LambdaQueryWrapper<TbOrder> queryWrapper = Wrappers.lambdaQuery();
@@ -609,6 +612,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         queryWrapper.eq(TbOrder::getUserId, userId);
         queryWrapper.ge(TbOrder::getCreateTime, now + " 00:00:00")
                 .le(TbOrder::getCreateTime, now + " 23:59:59");
+        queryWrapper.ne(ObjectUtil.isNotNull(orderId), TbOrder::getOrderId, orderId);
         // 已支付
         queryWrapper.eq(TbOrder::getIsPay, 1);
         return this.count(queryWrapper);