|
@@ -71,7 +71,7 @@ public class WeComMessageDataJob {
|
|
private static final int MAX_BYTES = 64;
|
|
private static final int MAX_BYTES = 64;
|
|
|
|
|
|
//历史优质视频可推送用户列表
|
|
//历史优质视频可推送用户列表
|
|
- List<PushMessage> goodHistoryPushList = new ArrayList<>();
|
|
|
|
|
|
+ Map<Long, List<PushMessage>> goodHistoryPushMap = new HashMap<>();
|
|
|
|
|
|
//保底视频列表
|
|
//保底视频列表
|
|
Map<Long, List<Long>> guaranteedVideoMap = new HashMap<>();
|
|
Map<Long, List<Long>> guaranteedVideoMap = new HashMap<>();
|
|
@@ -91,11 +91,27 @@ public class WeComMessageDataJob {
|
|
PushMessage pushMessage = new PushMessage();
|
|
PushMessage pushMessage = new PushMessage();
|
|
Long videoId = Long.parseLong((String) record.get(0));
|
|
Long videoId = Long.parseLong((String) record.get(0));
|
|
Set<Long> userIds = new HashSet<>(JSONObject.parseArray((String) record.get(1), Long.class));
|
|
Set<Long> userIds = new HashSet<>(JSONObject.parseArray((String) record.get(1), Long.class));
|
|
|
|
+ Long staffId = Long.parseLong((String) record.get(2));
|
|
|
|
+ Double score = Double.parseDouble((String) record.get(3));
|
|
pushMessage.setVideoId(videoId);
|
|
pushMessage.setVideoId(videoId);
|
|
pushMessage.setUserIds(userIds);
|
|
pushMessage.setUserIds(userIds);
|
|
|
|
+ pushMessage.setStaffId(staffId);
|
|
|
|
+ pushMessage.setScore(score);
|
|
list.add(pushMessage);
|
|
list.add(pushMessage);
|
|
}
|
|
}
|
|
- goodHistoryPushList = list;
|
|
|
|
|
|
+ Map<Long, List<PushMessage>> groupedMap = list.stream()
|
|
|
|
+ .collect(Collectors.groupingBy(PushMessage::getStaffId,
|
|
|
|
+ Collectors.mapping(pushMessage -> pushMessage,
|
|
|
|
+ Collectors.toList())))
|
|
|
|
+ .entrySet()
|
|
|
|
+ .stream()
|
|
|
|
+ .collect(Collectors.toMap(
|
|
|
|
+ Map.Entry::getKey,
|
|
|
|
+ entry -> entry.getValue().stream()
|
|
|
|
+ .sorted(Comparator.comparing(PushMessage::getScore).reversed()) // 根据 score 降序排序
|
|
|
|
+ .collect(Collectors.toList())
|
|
|
|
+ ));
|
|
|
|
+ goodHistoryPushMap = groupedMap;
|
|
|
|
|
|
//保底视频获取
|
|
//保底视频获取
|
|
String key = String.format(GUARANTEED_MINI_PROGRAM_KEY, DateUtil.getThatDayDateString());
|
|
String key = String.format(GUARANTEED_MINI_PROGRAM_KEY, DateUtil.getThatDayDateString());
|
|
@@ -236,20 +252,23 @@ public class WeComMessageDataJob {
|
|
for (StaffWithUser staffWithUser : staffWithUserList) {
|
|
for (StaffWithUser staffWithUser : staffWithUserList) {
|
|
int n = 0;
|
|
int n = 0;
|
|
SendMessage sendMessage = new SendMessage();
|
|
SendMessage sendMessage = new SendMessage();
|
|
- for (PushMessage pushMessage : goodHistoryPushList) {
|
|
|
|
- if (pushMessage.getUserIds().contains(user.getId())) {
|
|
|
|
- if (n == 0) {
|
|
|
|
- sendMessage.setVideoId1(pushMessage.getVideoId());
|
|
|
|
- }
|
|
|
|
- if (n == 1) {
|
|
|
|
- sendMessage.setVideoId2(pushMessage.getVideoId());
|
|
|
|
- }
|
|
|
|
- if (n == 2) {
|
|
|
|
- sendMessage.setVideoId3(pushMessage.getVideoId());
|
|
|
|
- }
|
|
|
|
- n++;
|
|
|
|
- if (n >= MAX_VIDEO_NUM) {
|
|
|
|
- break;
|
|
|
|
|
|
+ List<PushMessage> list = goodHistoryPushMap.get(staffWithUser.getStaffId());
|
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
|
+ for (PushMessage pushMessage : list) {
|
|
|
|
+ if (pushMessage.getUserIds().contains(user.getId())) {
|
|
|
|
+ if (n == 0) {
|
|
|
|
+ sendMessage.setVideoId1(pushMessage.getVideoId());
|
|
|
|
+ }
|
|
|
|
+ if (n == 1) {
|
|
|
|
+ sendMessage.setVideoId2(pushMessage.getVideoId());
|
|
|
|
+ }
|
|
|
|
+ if (n == 2) {
|
|
|
|
+ sendMessage.setVideoId3(pushMessage.getVideoId());
|
|
|
|
+ }
|
|
|
|
+ n++;
|
|
|
|
+ if (n >= MAX_VIDEO_NUM) {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|