Ver Fonte

Merge remote-tracking branch 'origin/saas' into saas

zouxuan há 3 anos atrás
pai
commit
97a9ff4b1e

+ 12 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java

@@ -113,19 +113,21 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 
         Date now = new Date();
         //如果优惠券不存在,或者已停用,或者不在领取有效期内,或者已消耗完,则此优惠券无效
-        boolean invalid = Objects.isNull(sysCoupon) || 0 == sysCoupon.getStatus() || now.compareTo(sysCoupon.getStartDate()) < 0 || now.compareTo(sysCoupon.getEndDate()) > 0;
-        invalid = invalid || sysCoupon.getStockCount() != -1 && sysCoupon.getConsumeNum() >= sysCoupon.getStockCount() && (sysCoupon.getStockCount() - sysCoupon.getConsumeNum() < exchangeNum);
-        if (invalid) {
-            throw new BizException("无效优惠券");
-        }
+        Optional<SysCoupon> optional = Optional.ofNullable(sysCoupon);
+        optional.orElseThrow(() -> new BizException("未查询到优惠券信息!"));
+        optional.filter(c -> 1 == c.getStatus()).orElseThrow(() -> new BizException("优惠券已被停用,请刷新!"));
+        optional.filter(c -> now.compareTo(c.getStartDate()) > -1).orElseThrow(() -> new BizException("未到领取时间!"));
+        optional.filter(c -> now.compareTo(c.getEndDate()) < 0).orElseThrow(() -> new BizException("优惠券已过期!"));
+        optional.filter(c -> c.getStockCount() == -1
+                        || (c.getStockCount() > -1 && c.getStockCount() >= c.getConsumeNum() + exchangeNum))
+                .orElseThrow(() -> new BizException("优惠券库存不足!"));
         //校验兑换的最大次数
         if (sysCoupon.getLimitExchangeNum() != -1) {
             int userUserNum = sysCouponCodeDao.countWithUserAndCoupon(userId, couponId);
-            invalid = (userUserNum + exchangeNum) > sysCoupon.getLimitExchangeNum();
-        }
-        //如果用户使用数量超过优惠券限制则领取无效
-        if (invalid) {
-            throw new BizException("当前优惠券最多可领取{}次", sysCoupon.getLimitExchangeNum());
+            //如果用户使用数量超过优惠券限制则领取无效
+            if (userUserNum + exchangeNum > sysCoupon.getLimitExchangeNum()) {
+                throw new BizException("当前优惠券最多可领取{}次", sysCoupon.getLimitExchangeNum());
+            }
         }
         return sysCoupon;
     }