|
@@ -7,19 +7,23 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.qs.mp.admin.domain.Marketing;
|
|
|
import com.qs.mp.admin.domain.MarketingAwards;
|
|
|
import com.qs.mp.admin.domain.MarketingAwardsPrize;
|
|
|
+import com.qs.mp.admin.domain.MarketingMsg;
|
|
|
import com.qs.mp.admin.domain.vo.MarketingAwardsVO;
|
|
|
import com.qs.mp.admin.service.IMarketingAwardsPrizeService;
|
|
|
import com.qs.mp.admin.service.IMarketingAwardsService;
|
|
|
+import com.qs.mp.admin.service.IMarketingMsgService;
|
|
|
import com.qs.mp.admin.service.IMarketingService;
|
|
|
import com.qs.mp.common.core.domain.AjaxResult;
|
|
|
import com.qs.mp.common.core.page.TableDataInfo;
|
|
|
import com.qs.mp.common.core.redis.DistributedLocker;
|
|
|
+import com.qs.mp.common.core.redis.RedisCache;
|
|
|
import com.qs.mp.common.enums.MarketingCodeTypeEnum;
|
|
|
import com.qs.mp.common.enums.MarketingStatusEnum;
|
|
|
import com.qs.mp.common.enums.UserTypeEnum;
|
|
|
import com.qs.mp.common.exception.ServiceException;
|
|
|
import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
|
+import com.qs.mp.framework.redis.RedisKey;
|
|
|
import com.qs.mp.framework.redis.RedisLockKey;
|
|
|
import com.qs.mp.framework.security.handle.HostHolder;
|
|
|
import com.qs.mp.framework.service.IWxSubscribeMessage;
|
|
@@ -92,6 +96,12 @@ public class MarketingController extends BaseApiController {
|
|
|
@Autowired
|
|
|
private IWxSubscribeMessage wxSubscribeMessage;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RedisCache redisCache;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IMarketingMsgService marketingMsgService;
|
|
|
+
|
|
|
@PostMapping("/generateCode/{marketingId}")
|
|
|
@ApiOperation("立即获取抽奖码")
|
|
|
public AjaxResult generateCode(@PathVariable("marketingId") Long marketingId) {
|
|
@@ -230,9 +240,14 @@ public class MarketingController extends BaseApiController {
|
|
|
}finally {
|
|
|
distributedLocker.unlock(lockKey);
|
|
|
}
|
|
|
- // 异步给被助力人发送成功消息
|
|
|
- wxSubscribeMessage.sendMarketingHelp(helpedUserId, marketing);
|
|
|
|
|
|
+ // 保存助力成功消息记录
|
|
|
+ MarketingMsg marketingMsg = new MarketingMsg();
|
|
|
+ marketingMsg.setMarketingId(marketing.getId());
|
|
|
+ marketingMsg.setContext(marketing.getTitle());
|
|
|
+ marketingMsg.setUserId(helpedUserId);
|
|
|
+ marketingMsg.setType(3);
|
|
|
+ marketingMsgService.save(marketingMsg);
|
|
|
|
|
|
return AjaxResult.success("助力成功");
|
|
|
}
|
|
@@ -293,6 +308,15 @@ public class MarketingController extends BaseApiController {
|
|
|
.eq(MarketingHitPrize::getMarketingId, marketing.getId())
|
|
|
.eq(MarketingHitPrize::getUserId, finalUserId));
|
|
|
userMarketingListVO.setIsHit(count);
|
|
|
+ } else {
|
|
|
+ String fakeNumKey = RedisKey.build(RedisKey.MARKETING_FAKE_NUM, marketing.getId());
|
|
|
+ Integer fakeNum = redisCache.getCacheObject(fakeNumKey);
|
|
|
+ if (fakeNum == null) {
|
|
|
+ int realNum = marketingUserCodeService.countRealUserNumByMarketingId(marketing.getId());
|
|
|
+ fakeNum = realNum * 2;
|
|
|
+ redisCache.setCacheObject(fakeNumKey, fakeNum, 30, TimeUnit.HOURS);
|
|
|
+ }
|
|
|
+ userMarketingListVO.setFakeNum(fakeNum);
|
|
|
}
|
|
|
return userMarketingListVO;
|
|
|
}).collect(Collectors.toList());
|
|
@@ -323,6 +347,16 @@ public class MarketingController extends BaseApiController {
|
|
|
UserMarketingDetailVO userMarketingDetailVO = new UserMarketingDetailVO();
|
|
|
BeanUtils.copyProperties(marketing, userMarketingDetailVO);
|
|
|
|
|
|
+ String fakeNumKey = RedisKey.build(RedisKey.MARKETING_FAKE_NUM, id);
|
|
|
+ Integer fakeNum = redisCache.getCacheObject(fakeNumKey);
|
|
|
+ if (fakeNum == null) {
|
|
|
+ int realNum = marketingUserCodeService.countRealUserNumByMarketingId(id);
|
|
|
+ fakeNum = realNum * 2;
|
|
|
+ redisCache.setCacheObject(fakeNumKey, fakeNum, 30, TimeUnit.HOURS);
|
|
|
+ }
|
|
|
+
|
|
|
+ userMarketingDetailVO.setFakeNum(fakeNum);
|
|
|
+
|
|
|
List<MarketingAwards> awardsList = marketingAwardsService.list(new LambdaQueryWrapper<MarketingAwards>().eq(MarketingAwards::getMarketingId, id));
|
|
|
if (CollectionUtils.isNotEmpty(awardsList)) {
|
|
|
List<MarketingAwardsVO> list = awardsList.stream().map(marketingAwards -> {
|