Browse Source

三方平台群消息发送 fix

wangyunpeng 1 week ago
parent
commit
f79940b990

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

@@ -2,6 +2,7 @@ package com.tzld.piaoquan.api.job.wecom.thirdpart;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.ContentPlatformPlanMapperExt;
 import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ThirdPartWeComMsgMapper;
 import com.tzld.piaoquan.api.model.param.wecom.thirdpart.CdnUploadImgLinkRequest;
@@ -27,6 +28,10 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -50,9 +55,15 @@ public class WeComSendMsgJob {
     @Value("${send.room.msg.duplicate.days:7}")
     private Integer duplicateDays;
 
+    private final static ExecutorService pool = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.SECONDS,
+            new LinkedBlockingQueue<>(1000),
+            new ThreadFactoryBuilder().setNameFormat("WeComSendMsgJob-%d").build(),
+            new ThreadPoolExecutor.AbortPolicy());
+
     @XxlJob("autoSendAppMsg")
     public ReturnT<String> autoSendAppMsg(String param) {
         List<ThirdPartWeComStaff> activeStaffList = weComThirdPartyService.getActiveStaffList();
+        String time = DateUtil.getCurrentDateStr("HH:mm");
         for (ThirdPartWeComStaff staff : activeStaffList) {
             if (!sendMsgConfig.containsKey(staff.getName())) {
                 continue;
@@ -63,36 +74,37 @@ public class WeComSendMsgJob {
                 if (!roomConfig.containsKey(room.getName())) {
                     continue;
                 }
-                List<String> timeList = roomConfig.getJSONArray(room.getName()).toJavaList(String.class);
-                String time = DateUtil.getCurrentDateStr("HH:mm");
-                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.getId(), 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);
-                }
+                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.getId(), 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);
+                    }
+                });
             }
         }
         return ReturnT.SUCCESS;