|
@@ -342,64 +342,64 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
|
|
|
}
|
|
|
String lockKey = String.format(MARKETING_REAL_NUM_LOCK, marketing.getId());
|
|
|
// 等待3秒
|
|
|
- if (!distributedLocker.tryLock(lockKey, 10, 30, TimeUnit.SECONDS)) {
|
|
|
- throw new ServiceException("活动太火爆了,请稍后重试!");
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
-
|
|
|
- // 判断是否已经助力过
|
|
|
- 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;
|
|
|
+ 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("您已经助力过了");
|
|
|
}
|
|
|
- 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);
|
|
|
+ // 生成抽奖码
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
+ 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);
|
|
|
+ }
|
|
|
|
|
|
- // 获取最新活动信息
|
|
|
- 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);
|
|
|
|
|
|
- } finally {
|
|
|
- distributedLocker.unlock(lockKey);
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("活动太火爆了,请稍后重试!");
|
|
|
}
|
|
|
|
|
|
- // 给被助力人发送成功消息
|
|
|
- wxSubscribeMessage.sendMarketingHelp(helpedUserId, marketing);
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|