瀏覽代碼

修改bug#1195, 优惠券时间检验

ssk 1 月之前
父節點
當前提交
7e0db31145
共有 1 個文件被更改,包括 20 次插入1 次删除
  1. 20 1
      alien-store/src/main/java/shop/alien/store/service/impl/LifeCouponServiceImpl.java

+ 20 - 1
alien-store/src/main/java/shop/alien/store/service/impl/LifeCouponServiceImpl.java

@@ -20,6 +20,7 @@ import shop.alien.mapper.*;
 import shop.alien.store.config.BaseRedisService;
 import shop.alien.store.service.LifeCouponService;
 import shop.alien.store.service.LifeDiscountCouponStoreFriendService;
+import shop.alien.util.common.DateUtils;
 import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.OrderStatusEnum;
 
@@ -450,6 +451,25 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
     public R<String> orderVerify(String orderCode) {
         OrderCouponMiddle orderCouponMiddle = orderCouponMiddleMapper.selectOne(new LambdaQueryWrapper<OrderCouponMiddle>().eq(OrderCouponMiddle::getCouponCode, orderCode));
         if (!StringUtils.isEmpty(orderCouponMiddle) && orderCouponMiddle.getStatus() == 1) {
+            LifeCoupon lifeCoupon = lifeCouponMapper.selectOne(new LambdaQueryWrapper<LifeCoupon>().eq(LifeCoupon::getId, orderCouponMiddle.getCouponId()));
+            //有效期到
+            Date date = DateUtils.calcDays(orderCouponMiddle.getCreatedTime(), lifeCoupon.getExpirationDate());
+            //开始时间段
+            int beginUseTime = Integer.parseInt(lifeCoupon.getBuyUseStartTime());
+            //结束时间段
+            int endUseTime = Integer.parseInt(lifeCoupon.getBuyUseEndTime());
+            if (new Date().after(date)) {
+                return R.fail("该劵已过期");
+            }
+            if (endUseTime < beginUseTime) {
+                if (!(LocalDateTime.now().getHour() >= beginUseTime || LocalDateTime.now().getHour() < endUseTime)) {
+                    return R.fail("该劵未到使用时间");
+                }
+            } else if (endUseTime > beginUseTime) {
+                if (LocalDateTime.now().getHour() < beginUseTime || LocalDateTime.now().getHour() >= endUseTime) {
+                    return R.fail("该劵未到使用时间");
+                }
+            }
             LifeUserOrder lifeUserOrder = lifeUserOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserOrder>().eq(LifeUserOrder::getId, orderCouponMiddle.getOrderId()));
             //类型为:1 代金券订单
             if (lifeUserOrder.getCouponType() == 1) {
@@ -459,7 +479,6 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
             }
         }
         return R.fail("该劵不是待使用状态");
-
     }
 
     public static boolean isCurrentDateInAnyRange(String[] dateRanges) {