Browse Source

限制双十一活动缴费人数

周箭河 5 years ago
parent
commit
5f983beb87

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -393,6 +393,26 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (!(amount.compareTo(sporadicPayDto.getAmount()) == 0)) {
             throw new BizException("订单金额异常");
         }
+        if (chargeInfo.getMaxNum() != null) {
+            //重试避免人数过多频繁冲突
+            boolean flag = false;
+            for (int i = 1; i <= 10; i++) {
+                chargeInfo = sporadicChargeInfoDao.get(sporadicPayDto.getSporadicId());
+                if (chargeInfo.getMaxNum() >= chargeInfo.getPaidNum()) {
+                    throw new BizException("活动人数暂时已满,请稍后再试");
+                }
+                chargeInfo.setPaidNum(chargeInfo.getPaidNum() + 1);
+                chargeInfo.setUpdateTime(new Date());
+                int update = sporadicChargeInfoDao.update(chargeInfo);
+                if (update > 0) {
+                    flag = true;
+                    break;
+                }
+            }
+            if (!flag) {
+                throw new BizException("活动火爆,请稍后再试");
+            }
+        }
 
         OrderTypeEnum type = OrderTypeEnum.SPORADIC;
         if(chargeInfo.getChargeType().equals(SporadicChargeTypeEnum.DOUBLE_ELEVEN2020)){