|
@@ -61,9 +61,6 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
|
|
// 普通奖池
|
|
// 普通奖池
|
|
public static final String MARKETING_LOTTERY_ORDINARY_POOL = "MARKETING_LOTTERY_ORDINARY_POOL:%s";
|
|
public static final String MARKETING_LOTTERY_ORDINARY_POOL = "MARKETING_LOTTERY_ORDINARY_POOL:%s";
|
|
|
|
|
|
- // 营销活动真实参与人数锁
|
|
|
|
- public static final String MARKETING_REAL_NUM_LOCK = "MARKETING_REAL_NUM_LOCK:%s";
|
|
|
|
-
|
|
|
|
protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
|
|
protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -309,57 +306,15 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
public void help(MarketingHelpParam marketingHelpParam, Long userId) {
|
|
public void help(MarketingHelpParam marketingHelpParam, Long userId) {
|
|
String inviteCode = marketingHelpParam.getInviteCode();
|
|
String inviteCode = marketingHelpParam.getInviteCode();
|
|
- if (com.qs.mp.common.utils.StringUtils.isBlank(inviteCode)) {
|
|
|
|
- throw new ServiceException("邀请码不能为空");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Marketing marketing = this.getById(marketingHelpParam.getMarketingId());
|
|
|
|
- if (Objects.isNull(marketing)) {
|
|
|
|
- throw new ServiceException("活动不存在");
|
|
|
|
- }
|
|
|
|
- // 未开启的活动不能助力
|
|
|
|
- if (!MarketingStatusEnum.ON.getValue().equals(marketing.getIsOn())) {
|
|
|
|
- throw new ServiceException("活动未开启~");
|
|
|
|
- }
|
|
|
|
- Date now = DateUtils.getNowDate();
|
|
|
|
- // 结束的活动不支持助力
|
|
|
|
- if (marketing.getTriggerStatus() == 1 || marketing.getEndTime().before(now)) {
|
|
|
|
- throw new ServiceException("活动已过期~");
|
|
|
|
- }
|
|
|
|
- // 未开始的活动不能助力
|
|
|
|
- if (marketing.getStartTime().after(now)) {
|
|
|
|
- throw new ServiceException("活动未开始~");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
// 邀请码解码,被助力人id
|
|
// 邀请码解码,被助力人id
|
|
Long helpedUserId = MarketingUtils.decodeInviteCode(inviteCode);
|
|
Long helpedUserId = MarketingUtils.decodeInviteCode(inviteCode);
|
|
- if (userId.equals(helpedUserId)) {
|
|
|
|
- throw new ServiceException("不能助力自己哦");
|
|
|
|
- }
|
|
|
|
- String lockKey = String.format(MARKETING_REAL_NUM_LOCK, marketing.getId());
|
|
|
|
|
|
|
|
- if (!distributedLocker.tryLock(lockKey,3,30,TimeUnit.SECONDS)) {
|
|
|
|
- throw new ServiceException("活动太火爆了,请稍后重试!");
|
|
|
|
- }
|
|
|
|
- try {
|
|
|
|
-
|
|
|
|
- // 处理助力信息
|
|
|
|
- updateMarketingHelpInfo(marketingHelpParam, userId, marketing, helpedUserId);
|
|
|
|
-
|
|
|
|
- // 给被助力人发送成功消息
|
|
|
|
- wxSubscribeMessage.sendMarketingHelp(helpedUserId, marketing);
|
|
|
|
-
|
|
|
|
- } finally {
|
|
|
|
- distributedLocker.unlock(lockKey);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
+ Marketing marketing = this.getById(marketingHelpParam.getMarketingId());
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void updateMarketingHelpInfo(MarketingHelpParam marketingHelpParam, Long userId, Marketing marketing, Long helpedUserId) {
|
|
|
|
|
|
+ // 处理助力信息
|
|
// 判断是否已经助力过
|
|
// 判断是否已经助力过
|
|
int count = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
|
|
int count = marketingUserCodeService.count(new LambdaQueryWrapper<MarketingUserCode>()
|
|
.eq(MarketingUserCode::getHelpUserId, userId));
|
|
.eq(MarketingUserCode::getHelpUserId, userId));
|
|
@@ -381,7 +336,7 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
|
|
}
|
|
}
|
|
|
|
|
|
MarketingUserCode marketingUserCode = new MarketingUserCode();
|
|
MarketingUserCode marketingUserCode = new MarketingUserCode();
|
|
- marketingUserCode.setMarketingId(marketingHelpParam.getMarketingId());
|
|
|
|
|
|
+ // 设置抽奖码
|
|
marketingUserCode.setCode(code);
|
|
marketingUserCode.setCode(code);
|
|
// 设置被助力人
|
|
// 设置被助力人
|
|
marketingUserCode.setUserId(helpedUserId);
|
|
marketingUserCode.setUserId(helpedUserId);
|
|
@@ -392,17 +347,18 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
|
|
// 保存助力信息
|
|
// 保存助力信息
|
|
marketingUserCodeService.save(marketingUserCode);
|
|
marketingUserCodeService.save(marketingUserCode);
|
|
|
|
|
|
-
|
|
|
|
// 获取最新活动信息
|
|
// 获取最新活动信息
|
|
- Marketing marketingParam = this.getById(marketing.getId());
|
|
|
|
- marketingParam.setRealNum(marketingParam.getRealNum() + 1);
|
|
|
|
|
|
+ marketing.setRealNum(marketing.getRealNum() + 1);
|
|
int randomNum = (int) 1 + (int) (Math.random() * 10);
|
|
int randomNum = (int) 1 + (int) (Math.random() * 10);
|
|
- marketingParam.setFakeNum(marketingParam.getFakeNum() + randomNum);
|
|
|
|
|
|
+ marketing.setFakeNum(marketing.getFakeNum() + randomNum);
|
|
// 更新活动参与人数
|
|
// 更新活动参与人数
|
|
- boolean rtn = this.updateById(marketingParam);
|
|
|
|
|
|
+ boolean rtn = this.updateById(marketing);
|
|
Assert.isTrue(rtn, "更新活动参与人数异常。marketingId:" + marketing.getId());
|
|
Assert.isTrue(rtn, "更新活动参与人数异常。marketingId:" + marketing.getId());
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ // 给被助力人发送成功消息
|
|
|
|
+ wxSubscribeMessage.sendMarketingHelp(helpedUserId, marketing);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|