|
@@ -105,11 +105,64 @@ public class MarketingTask {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 发送活动开始通知
|
|
|
+ * 活动通知消息生成
|
|
|
+ * @param type 消息类型,1活动开奖通知,2活动开始通知
|
|
|
*/
|
|
|
- public void sendMessage() {
|
|
|
+ public void sendMessage(Integer type) {
|
|
|
MarketingTask proxy = (MarketingTask) AopContext.currentProxy();
|
|
|
- proxy.saveMarketingMsg();
|
|
|
+ if (type == 1) {
|
|
|
+ proxy.saveMarketingLotteryMsg();
|
|
|
+ } else if (type == 2) {
|
|
|
+ proxy.saveMarketingMsg();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成开奖发送消息
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void saveMarketingLotteryMsg() {
|
|
|
+ // 获取已开奖,且未发送开奖通知的活动
|
|
|
+ List<Marketing> marketingList = marketingService.list(new LambdaQueryWrapper<Marketing>()
|
|
|
+ .eq(Marketing::getTriggerStatus, 1)
|
|
|
+ .eq(Marketing::getIsOn, MarketingStatusEnum.ON.getValue())
|
|
|
+ .eq(Marketing::getIsSendLottery, 0));
|
|
|
+ if (CollectionUtils.isEmpty(marketingList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Marketing marketing : marketingList) {
|
|
|
+ // 保存开奖消息
|
|
|
+ // 获取所有的参与用户的用户id去重
|
|
|
+ List<MarketingUserCode> sendMsgUserList = marketingUserCodeService.list(new LambdaQueryWrapper<MarketingUserCode>()
|
|
|
+ .select(MarketingUserCode::getUserId)
|
|
|
+ .eq(MarketingUserCode::getMarketingId, marketing.getId())
|
|
|
+ .eq(MarketingUserCode::getUserType, UserTypeEnum.ORDINARY.getValue())
|
|
|
+ .groupBy(MarketingUserCode::getUserId));
|
|
|
+ if (CollectionUtils.isEmpty(sendMsgUserList)) {
|
|
|
+ marketingService.update(new LambdaUpdateWrapper<Marketing>()
|
|
|
+ .set(Marketing::getIsSendLottery, 1)
|
|
|
+ .eq(Marketing::getId, marketing.getId()));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<MarketingMsg> marketingMsgList = new ArrayList<>();
|
|
|
+ for (MarketingUserCode marketingUserCode : sendMsgUserList) {
|
|
|
+ // 封装开奖订阅消息
|
|
|
+ MarketingMsg marketingMsg = new MarketingMsg();
|
|
|
+ marketingMsg.setType(1);
|
|
|
+ marketingMsg.setMarketingId(marketing.getId());
|
|
|
+ marketingMsg.setContext(marketing.getTitle());
|
|
|
+ marketingMsg.setUserId(marketingUserCode.getUserId());
|
|
|
+ marketingMsgList.add(marketingMsg);
|
|
|
+ }
|
|
|
+ boolean rtn = marketingMsgService.saveBatch(marketingMsgList);
|
|
|
+ Assert.isTrue(rtn, "保存活动开奖消息失败。marketingId:" + marketing.getId());
|
|
|
+
|
|
|
+ rtn = marketingService.update(new LambdaUpdateWrapper<Marketing>()
|
|
|
+ .set(Marketing::getIsSendLottery, 1)
|
|
|
+ .eq(Marketing::getId, marketing.getId()));
|
|
|
+ Assert.isTrue(rtn, "更新活动开奖信息发送状态失败。marketingId:" + marketing.getId());
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|