|
@@ -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;
|