Przeglądaj źródła

助力消息发送调整

cup 2 lat temu
rodzic
commit
936669c76c

+ 12 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/MarketingController.java

@@ -7,9 +7,11 @@ 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;
@@ -97,6 +99,9 @@ public class MarketingController extends BaseApiController {
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private IMarketingMsgService marketingMsgService;
+
     @PostMapping("/generateCode/{marketingId}")
     @ApiOperation("立即获取抽奖码")
     public AjaxResult generateCode(@PathVariable("marketingId") Long marketingId) {
@@ -235,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("助力成功");
     }

+ 31 - 7
mp-quartz/src/main/java/com/qs/mp/quartz/task/MarketingTask.java

@@ -209,9 +209,21 @@ public class MarketingTask {
         }
 
         try {
-            List<MarketingMsg> marketingMsgList = marketingMsgService.list(new LambdaQueryWrapper<MarketingMsg>()
-                .eq(MarketingMsg::getType, type)
-                .last("limit " + limit));
+            List<MarketingMsg> marketingMsgList = new ArrayList<>();
+            if (type == 3) {
+                // 获取活动通知信息
+                marketingMsgList = marketingMsgService.list(new LambdaQueryWrapper<MarketingMsg>()
+                    .select(MarketingMsg::getMarketingId, MarketingMsg::getUserId, MarketingMsg::getContext)
+                    .eq(MarketingMsg::getType, 3)
+                    .groupBy(MarketingMsg::getMarketingId, MarketingMsg::getUserId, MarketingMsg::getContext)
+                    .last("limit " + limit));
+
+            } else {
+                marketingMsgList = marketingMsgService.list(new LambdaQueryWrapper<MarketingMsg>()
+                    .eq(MarketingMsg::getType, type)
+                    .last("limit " + limit));
+            }
+
 
             if (CollectionUtils.isEmpty(marketingMsgList)) {
                 return;
@@ -221,17 +233,29 @@ public class MarketingTask {
                 Marketing marketing = new Marketing();
                 marketing.setId(marketingMsg.getMarketingId());
                 marketing.setTitle(marketingMsg.getContext());
-                if (marketingMsg.getType() == 1) {
+                if (type == 1) {
                     // 发送活动开奖通知
                     wxSubscribeMessage.sendMarketingLottery(marketingMsg.getUserId(), marketing);
-                } else {
+                } else if (type == 2){
                     // 发送活动开始通知
                     wxSubscribeMessage.sendMarketingStart(marketingMsg.getUserId(), marketing);
+                } else if (type == 3) {
+                    // 发送助力成功通知
+                    wxSubscribeMessage.sendMarketingHelp(marketingMsg.getUserId(), marketing);
                 }
             }
 
-            // 删除已发送的消息
-            marketingMsgService.removeByIds(marketingMsgList.stream().map(MarketingMsg::getId).collect(Collectors.toList()));
+            if (type == 3) {
+                List<Long> userIdList = marketingMsgList.stream().map(MarketingMsg::getUserId)
+                    .collect(Collectors.toList());
+                marketingMsgService.remove(new LambdaUpdateWrapper<MarketingMsg>()
+                    .eq(MarketingMsg::getType, 3)
+                    .in(MarketingMsg::getUserId, userIdList));
+            } else {
+                // 删除已发送的消息
+                marketingMsgService.removeByIds(marketingMsgList.stream().map(MarketingMsg::getId).collect(Collectors.toList()));
+            }
+
         } catch (Exception e) {
             LogUtil.error(logger, e, "发送活动订阅通知异常");
         } finally {

+ 1 - 2
mp-service/src/main/java/com/qs/mp/admin/domain/MarketingMsg.java

@@ -43,7 +43,7 @@ public class MarketingMsg implements Serializable {
     private Long userId;
 
     /**
-     * 信息类型1开奖,2活动开始
+     * 信息类型1开奖,2活动开始,3助力通知
      */
     @TableField("type")
     private Integer type;
@@ -64,7 +64,6 @@ public class MarketingMsg implements Serializable {
      * 逻辑删除标识
      */
     @TableField("is_deleted")
-    @TableLogic
     private Integer isDeleted;
 
 

+ 0 - 1
mp-service/src/main/java/com/qs/mp/framework/service/impl/WxSubscribeMessageImpl.java

@@ -51,7 +51,6 @@ public class WxSubscribeMessageImpl implements IWxSubscribeMessage {
   }
 
   @Override
-  @Async("threadPoolTaskExecutor")
   public void sendMarketingHelp(Long userId, Marketing marketing) {
     String openId = getOpenIdByUserId(userId);
     WxSubscribeMessage wxSubscribeMessage = new WxSubscribeMessage(userAppId, openId, state);