Browse Source

三方平台群消息发送 支持发送多条

wangyunpeng 1 week ago
parent
commit
8c83495435

+ 50 - 43
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java

@@ -22,11 +22,11 @@ import com.tzld.piaoquan.growth.common.utils.MessageUtil;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -54,6 +54,8 @@ public class WeComSendMsgJob {
     private Double videoMinScore;
     @Value("${send.room.msg.duplicate.days:7}")
     private Integer duplicateDays;
+    @Value("${send.room.msg.video.num:2}")
+    private Integer videoNum;
 
     private final static ExecutorService pool = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.SECONDS,
             new LinkedBlockingQueue<>(1000),
@@ -77,32 +79,35 @@ public class WeComSendMsgJob {
                 pool.execute(() -> {
                     List<String> timeList = roomConfig.getJSONArray(room.getName()).toJavaList(String.class);
                     if (timeList.contains(time)) {
-                        SendAppMsgRequest request = new SendAppMsgRequest();
-                        request.setUuid(staff.getThirdUuid());
-                        request.setSend_userid(Long.valueOf(room.getThirdRoomId()));
-                        request.setIsRoom(true);
-                        request.setAppid("wx89e7eb06478361d7");
-                        request.setUsername("gh_ecd1ea0b84cf@app");
-                        request.setAppName("票圈 l 3亿人喜欢的视频平台");
-                        request.setTitle("票圈 l 3亿人喜欢的视频平台");
-                        request.setWeappIconUrl("http://rescdn.yishihui.com/temp/1755515422185_%E7%A5%A8%E5%9C%88Vlog_logo.jpg");
                         // 选取视频
-                        CgiReplyBucketData cgiReplyBucketData = getCgiReplyBucketData(room.getThirdRoomId(), staff);
-                        // 填充视频信息
-                        request.setDesc(cgiReplyBucketData.getTitle());
-                        request.setPagepath(cgiReplyBucketData.getMiniPagePath());
-                        CdnUploadImgLinkRequest cdnUploadImgLinkRequest = new CdnUploadImgLinkRequest();
-                        cdnUploadImgLinkRequest.setUuid(staff.getThirdUuid());
-                        cdnUploadImgLinkRequest.setUrl(cgiReplyBucketData.getCoverUrl());
-                        CdnUploadImgLinkResponse uploadResponse = weComThirdPartyService.cdnUploadImgLink(cdnUploadImgLinkRequest);
-                        request.setCdnkey(uploadResponse.getCdn_key());
-                        request.setMd5(uploadResponse.getMd5());
-                        request.setAeskey(uploadResponse.getAes_key());
-                        request.setFileSize(uploadResponse.getSize().intValue());
-                        // 发送消息
-                        weComThirdPartyService.sendAppMsg(request);
-                        // 存储消息
-                        saveWeComMsg(staff.getId(), cgiReplyBucketData.getMiniVideoId(), request);
+                        List<CgiReplyBucketData> cgiReplyBucketDataList = getCgiReplyBucketData(room.getThirdRoomId(), staff);
+                        for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketDataList) {
+                            // build发送体
+                            SendAppMsgRequest request = new SendAppMsgRequest();
+                            request.setUuid(staff.getThirdUuid());
+                            request.setSend_userid(Long.valueOf(room.getThirdRoomId()));
+                            request.setIsRoom(true);
+                            request.setAppid("wx89e7eb06478361d7");
+                            request.setUsername("gh_ecd1ea0b84cf@app");
+                            request.setAppName("票圈 l 3亿人喜欢的视频平台");
+                            request.setTitle("票圈 l 3亿人喜欢的视频平台");
+                            request.setWeappIconUrl("http://rescdn.yishihui.com/temp/1755515422185_%E7%A5%A8%E5%9C%88Vlog_logo.jpg");
+                            // 填充视频信息
+                            request.setDesc(cgiReplyBucketData.getTitle());
+                            request.setPagepath(cgiReplyBucketData.getMiniPagePath());
+                            CdnUploadImgLinkRequest cdnUploadImgLinkRequest = new CdnUploadImgLinkRequest();
+                            cdnUploadImgLinkRequest.setUuid(staff.getThirdUuid());
+                            cdnUploadImgLinkRequest.setUrl(cgiReplyBucketData.getCoverUrl());
+                            CdnUploadImgLinkResponse uploadResponse = weComThirdPartyService.cdnUploadImgLink(cdnUploadImgLinkRequest);
+                            request.setCdnkey(uploadResponse.getCdn_key());
+                            request.setMd5(uploadResponse.getMd5());
+                            request.setAeskey(uploadResponse.getAes_key());
+                            request.setFileSize(uploadResponse.getSize().intValue());
+                            // 发送消息
+                            weComThirdPartyService.sendAppMsg(request);
+                            // 存储消息
+                            saveWeComMsg(staff.getId(), cgiReplyBucketData.getMiniVideoId(), request);
+                        }
                     }
                 });
             }
@@ -110,7 +115,7 @@ public class WeComSendMsgJob {
         return ReturnT.SUCCESS;
     }
 
-    private CgiReplyBucketData getCgiReplyBucketData(String roomId, ThirdPartWeComStaff thirdPartWeComStaff) {
+    private List<CgiReplyBucketData> getCgiReplyBucketData(String roomId, ThirdPartWeComStaff thirdPartWeComStaff) {
         String dt = planMapperExt.getVideoMaxDt();
         String datastatDt = planMapperExt.getVideoDatastatMaxDt();
         // 排除最近发送过的视频
@@ -121,23 +126,25 @@ public class WeComSendMsgJob {
         String channel = "sum";
         List<ContentPlatformVideo> videoList = planMapperExt.getVideoMinDatastatScoreList(dt, datastatDt,
                 type, channel, videoMinScore, sentVideoIds, 0, 100, sort);
-        if (CollectionUtils.isEmpty(videoList)) {
-            // 行业数量不足,按平台推荐top选取视频
-            sort = "video.score desc";
-            videoList = planMapperExt.getVideoMinScoreList(dt, videoMinScore, sentVideoIds, 0, 100, sort);
-        }
-        ContentPlatformVideo video = videoList.get(0);
-        Staff staff = new Staff();
-        staff.setCarrierId(String.valueOf(thirdPartWeComStaff.getThirdStaffId()));
-        staff.setRemark(thirdPartWeComStaff.getName());
-        String page = messageAttachmentService.getPage(staff, video.getVideoId());
+        // 行业数量不足,按平台推荐top选取视频
+        sort = "video.score desc";
+        videoList.addAll(planMapperExt.getVideoMinScoreList(dt, videoMinScore, sentVideoIds, 0, 100, sort));
+        List<CgiReplyBucketData> result = new ArrayList<>();
+        for (int i = 0; i < videoNum; i++) {
+            ContentPlatformVideo video = videoList.get(i);
+            Staff staff = new Staff();
+            staff.setCarrierId(String.valueOf(thirdPartWeComStaff.getThirdStaffId()));
+            staff.setRemark(thirdPartWeComStaff.getName());
+            String page = messageAttachmentService.getPage(staff, video.getVideoId());
 
-        CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
-        cgiReplyBucketData.setMiniVideoId(video.getVideoId());
-        cgiReplyBucketData.setTitle(video.getTitle());
-        cgiReplyBucketData.setCoverUrl(video.getCover());
-        cgiReplyBucketData.setMiniPagePath(page);
-        return cgiReplyBucketData;
+            CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
+            cgiReplyBucketData.setMiniVideoId(video.getVideoId());
+            cgiReplyBucketData.setTitle(video.getTitle());
+            cgiReplyBucketData.setCoverUrl(video.getCover());
+            cgiReplyBucketData.setMiniPagePath(page);
+            result.add(cgiReplyBucketData);
+        }
+        return result;
     }
 
     private List<Long> getSentVideoIds(Long roomId) {