|
|
@@ -107,70 +107,88 @@ public class WeComSendMsgJob {
|
|
|
}
|
|
|
Map<String, List<ThirdPartWeComRoomConfigTask>> roomConfigTaskMap = roomConfigTaskList.stream()
|
|
|
.filter(o -> o.getSwitchFlag() == 1).collect(Collectors.groupingBy(ThirdPartWeComRoomConfigTask::getConfigId));
|
|
|
- for (ThirdPartWeComRoom room : roomList) {
|
|
|
- if (room.getSendStatus() != 1) {
|
|
|
+ sendStaffRoomMsg(staff, time, roomList, roomConfigMap, roomConfigTaskMap);
|
|
|
+ }
|
|
|
+ return ReturnT.SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendStaffRoomMsg(ThirdPartWeComStaff staff,
|
|
|
+ String time,
|
|
|
+ List<ThirdPartWeComRoom> roomList,
|
|
|
+ Map<Long, ThirdPartWeComRoomConfig> roomConfigMap,
|
|
|
+ Map<String, List<ThirdPartWeComRoomConfigTask>> roomConfigTaskMap) {
|
|
|
+ for (ThirdPartWeComRoom room : roomList) {
|
|
|
+ if (room.getSendStatus() != 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ pool.execute(() -> {
|
|
|
+ ThirdPartWeComRoomConfig roomConfig = roomConfigMap.get(room.getId());
|
|
|
+ if (roomConfig == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<ThirdPartWeComRoomConfigTask> taskList = roomConfigTaskMap.getOrDefault(roomConfig.getId(), new ArrayList<>());
|
|
|
+ if (taskList.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> configTaskIds = taskList.stream().map(ThirdPartWeComRoomConfigTask::getId).collect(Collectors.toList());
|
|
|
+ List<ThirdPartWeComRoomConfigTaskContent> taskContentList = weComThirdPartyRoomService.getRoomConfigTaskContents(configTaskIds);
|
|
|
+ if (CollectionUtils.isEmpty(taskContentList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<String, List<ThirdPartWeComRoomConfigTaskContent>> taskContentMap = taskContentList.stream()
|
|
|
+ .collect(Collectors.groupingBy(ThirdPartWeComRoomConfigTaskContent::getTaskId));
|
|
|
+ ThirdPartWeComStaff pushStaff = getSendStaff(roomConfig);
|
|
|
+ if (Objects.isNull(pushStaff)) {
|
|
|
+ LarkRobotUtil.sendWeComThirdPartMessage(
|
|
|
+ "【账号发送群消息,推送账号获取失败通知】\n" +
|
|
|
+ "账号名称:" + staff.getName() + "\n" +
|
|
|
+ "账号VID:" + staff.getThirdStaffId() + "\n" +
|
|
|
+ "群名称:" + room.getName());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ sendRoomConfigTaskMsg(staff, pushStaff, time, room, roomConfig, taskList, taskContentMap);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendRoomConfigTaskMsg(ThirdPartWeComStaff staff,
|
|
|
+ ThirdPartWeComStaff pushStaff,
|
|
|
+ String time,
|
|
|
+ ThirdPartWeComRoom room,
|
|
|
+ ThirdPartWeComRoomConfig roomConfig,
|
|
|
+ List<ThirdPartWeComRoomConfigTask> taskList,
|
|
|
+ Map<String, List<ThirdPartWeComRoomConfigTaskContent>> taskContentMap) {
|
|
|
+ for (ThirdPartWeComRoomConfigTask configTask : taskList) {
|
|
|
+ List<String> timeList = getRoomSendTime(room, roomConfig, configTask);
|
|
|
+ if (timeList.contains(time)) {
|
|
|
+ // 选取视频
|
|
|
+ List<ThirdPartWeComRoomConfigTaskContent> contentList = taskContentMap.get(configTask.getId());
|
|
|
+ if (Objects.isNull(contentList) || contentList.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
- pool.execute(() -> {
|
|
|
- ThirdPartWeComRoomConfig roomConfig = roomConfigMap.get(room.getId());
|
|
|
- if (roomConfig == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
- List<ThirdPartWeComRoomConfigTask> taskList = roomConfigTaskMap.getOrDefault(roomConfig.getId(), new ArrayList<>());
|
|
|
- if (taskList.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
- List<String> configTaskIds = taskList.stream().map(ThirdPartWeComRoomConfigTask::getId).collect(Collectors.toList());
|
|
|
- List<ThirdPartWeComRoomConfigTaskContent> taskContentList = weComThirdPartyRoomService.getRoomConfigTaskContents(configTaskIds);
|
|
|
- if (CollectionUtils.isEmpty(taskContentList)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- Map<String, List<ThirdPartWeComRoomConfigTaskContent>> taskContentMap = taskContentList.stream()
|
|
|
- .collect(Collectors.groupingBy(ThirdPartWeComRoomConfigTaskContent::getTaskId));
|
|
|
- ThirdPartWeComStaff pushStaff = getSendStaff(roomConfig);
|
|
|
- if (Objects.isNull(pushStaff)) {
|
|
|
- LarkRobotUtil.sendWeComThirdPartMessage(
|
|
|
- "【账号发送群消息,推送账号获取失败通知】\n" +
|
|
|
- "账号名称:" + staff.getName() + "\n" +
|
|
|
- "账号VID:" + staff.getThirdStaffId() + "\n" +
|
|
|
- "群名称:" + room.getName());
|
|
|
- return;
|
|
|
- }
|
|
|
- for (ThirdPartWeComRoomConfigTask configTask : taskList) {
|
|
|
- List<String> timeList = getRoomSendTime(room, roomConfig, configTask);
|
|
|
- if (timeList.contains(time)) {
|
|
|
- // 选取视频
|
|
|
- List<ThirdPartWeComRoomConfigTaskContent> contentList = taskContentMap.get(configTask.getId());
|
|
|
- if (Objects.isNull(contentList) || contentList.isEmpty()) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- contentList = contentList.stream().sorted(Comparator.comparing(ThirdPartWeComRoomConfigTaskContent::getSeq)).collect(Collectors.toList());
|
|
|
- for (ThirdPartWeComRoomConfigTaskContent configTaskContent : contentList) {
|
|
|
- if (ConfigTaskContentTypeEnum.TEXT.getVal() == configTaskContent.getType()) {
|
|
|
- // build发送体
|
|
|
- SendTextMsgRequest request = buildSendTextMsgRequest(configTaskContent.getContent(), pushStaff, room);
|
|
|
- // 发送消息
|
|
|
- CommonResponse<SendTextMsgResponse> response = weComThirdPartyService.sendTextMsg(pushStaff, room, request);
|
|
|
- // 存储消息
|
|
|
- saveTextWeComMsg(pushStaff.getId(), configTaskContent.getContent(), request, response);
|
|
|
- } else if (ConfigTaskContentTypeEnum.MINI_PROGRAM.getVal() == configTaskContent.getType()) {
|
|
|
- List<CgiReplyBucketData> cgiReplyBucketDataList = getCgiReplyBucketData(room.getThirdRoomId(), staff, roomConfig, configTaskContent);
|
|
|
- for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketDataList) {
|
|
|
- // build发送体
|
|
|
- SendAppMsgRequest request = buildSendAppMsgRequest(cgiReplyBucketData, pushStaff, room);
|
|
|
- // 发送消息
|
|
|
- CommonResponse<SendAppMsgResponse> response = weComThirdPartyService.sendAppMsg(pushStaff, room, request);
|
|
|
- // 存储消息
|
|
|
- saveAppWeComMsg(pushStaff.getId(), cgiReplyBucketData.getMiniVideoId(), request, response);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ contentList = contentList.stream().sorted(Comparator.comparing(ThirdPartWeComRoomConfigTaskContent::getSeq)).collect(Collectors.toList());
|
|
|
+ for (ThirdPartWeComRoomConfigTaskContent configTaskContent : contentList) {
|
|
|
+ if (ConfigTaskContentTypeEnum.TEXT.getVal() == configTaskContent.getType()) {
|
|
|
+ // build发送体
|
|
|
+ SendTextMsgRequest request = buildSendTextMsgRequest(configTaskContent.getContent(), pushStaff, room);
|
|
|
+ // 发送消息
|
|
|
+ CommonResponse<SendTextMsgResponse> response = weComThirdPartyService.sendTextMsg(pushStaff, room, request);
|
|
|
+ // 存储消息
|
|
|
+ saveTextWeComMsg(pushStaff.getId(), configTaskContent.getContent(), request, response);
|
|
|
+ } else if (ConfigTaskContentTypeEnum.MINI_PROGRAM.getVal() == configTaskContent.getType()) {
|
|
|
+ List<CgiReplyBucketData> cgiReplyBucketDataList = getCgiReplyBucketData(room.getThirdRoomId(), staff, roomConfig, configTaskContent);
|
|
|
+ for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketDataList) {
|
|
|
+ // build发送体
|
|
|
+ SendAppMsgRequest request = buildSendAppMsgRequest(cgiReplyBucketData, pushStaff, room);
|
|
|
+ // 发送消息
|
|
|
+ CommonResponse<SendAppMsgResponse> response = weComThirdPartyService.sendAppMsg(pushStaff, room, request);
|
|
|
+ // 存储消息
|
|
|
+ saveAppWeComMsg(pushStaff.getId(), cgiReplyBucketData.getMiniVideoId(), request, response);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- return ReturnT.SUCCESS;
|
|
|
}
|
|
|
|
|
|
private ThirdPartWeComStaff getSendStaff(ThirdPartWeComRoomConfig roomConfig) {
|