Преглед изворни кода

Merge branch 'dev' into 'mp-server-test'

优化

See merge request quanshu/mp-server!543
jiang hao пре 2 година
родитељ
комит
594eb0f1ec

+ 45 - 49
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -341,63 +341,59 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
             throw new ServiceException("不能助力自己哦");
         }
         String lockKey = String.format(MARKETING_REAL_NUM_LOCK, marketing.getId());
-        // 等待3秒
-        if (distributedLocker.tryLock(lockKey, 10, 30, TimeUnit.SECONDS)) {
-            try {
-
-                // 判断是否已经助力过
-                int count = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
-                        .eq(MarketingUserCode::getHelpUserId, userId));
-                if (count > 0) {
-                    throw new ServiceException("您已经助力过了");
-                }
 
+        if (!distributedLocker.tryLock(lockKey)) {
+            throw new ServiceException("活动太火爆了,请稍后重试!");
+        }
+        try {
 
-                // 生成抽奖码
-                String code = "";
-                while (true) {
-                    code = MarketingUtils.generatePrizeCode();
-                    // 判断抽奖码是否已经存在
-                    int codeCount = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
-                            .eq(MarketingUserCode::getMarketingId, marketing.getId())
-                            .eq(MarketingUserCode::getCode, code));
-                    if (codeCount > 0) {
-                        continue;
-                    }
-                    break;
+            // 判断是否已经助力过
+            int count = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
+                    .eq(MarketingUserCode::getHelpUserId, userId));
+            if (count > 0) {
+                throw new ServiceException("您已经助力过了");
+            }
+            // 生成抽奖码
+            String code = "";
+            while (true) {
+                code = MarketingUtils.generatePrizeCode();
+                // 判断抽奖码是否已经存在
+                int codeCount = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
+                        .eq(MarketingUserCode::getMarketingId, marketing.getId())
+                        .eq(MarketingUserCode::getCode, code));
+                if (codeCount > 0) {
+                    continue;
                 }
-
-                MarketingUserCode marketingUserCode = new MarketingUserCode();
-                marketingUserCode.setMarketingId(marketingHelpParam.getMarketingId());
-                marketingUserCode.setCode(code);
-                // 设置被助力人
-                marketingUserCode.setUserId(helpedUserId);
-                // 设置助力人
-                marketingUserCode.setHelpUserId(userId);
-                marketingUserCode.setUserType(UserTypeEnum.ORDINARY.getValue());
-
-                // 保存助力信息
-                marketingUserCodeService.save(marketingUserCode);
-
-
-                // 获取最新活动信息
-                Marketing marketingParam = this.getById(marketing.getId());
-                marketingParam.setRealNum(marketingParam.getRealNum() + 1);
-                int randomNum = (int) 1 + (int) (Math.random() * 10);
-                marketingParam.setFakeNum(marketingParam.getFakeNum() + randomNum);
-                // 更新活动参与人数
-                boolean rtn = this.updateById(marketingParam);
-                Assert.isTrue(rtn, "更新活动参与人数异常。marketingId:" + marketing.getId());
-
-            } finally {
-                distributedLocker.unlock(lockKey);
+                break;
             }
 
+            MarketingUserCode marketingUserCode = new MarketingUserCode();
+            marketingUserCode.setMarketingId(marketingHelpParam.getMarketingId());
+            marketingUserCode.setCode(code);
+            // 设置被助力人
+            marketingUserCode.setUserId(helpedUserId);
+            // 设置助力人
+            marketingUserCode.setHelpUserId(userId);
+            marketingUserCode.setUserType(UserTypeEnum.ORDINARY.getValue());
+
+            // 保存助力信息
+            marketingUserCodeService.save(marketingUserCode);
+
+
+            // 获取最新活动信息
+            Marketing marketingParam = this.getById(marketing.getId());
+            marketingParam.setRealNum(marketingParam.getRealNum() + 1);
+            int randomNum = (int) 1 + (int) (Math.random() * 10);
+            marketingParam.setFakeNum(marketingParam.getFakeNum() + randomNum);
+            // 更新活动参与人数
+            boolean rtn = this.updateById(marketingParam);
+            Assert.isTrue(rtn, "更新活动参与人数异常。marketingId:" + marketing.getId());
+
             // 给被助力人发送成功消息
             wxSubscribeMessage.sendMarketingHelp(helpedUserId, marketing);
 
-        } else {
-            throw new ServiceException("活动太火爆了,请稍后重试!");
+        } finally {
+            distributedLocker.unlock(lockKey);
         }
 
     }