|
@@ -40,52 +40,59 @@ public class WeComHistoryDataJob {
|
|
|
@Autowired
|
|
|
private HistoryMessageService historyMessageService;
|
|
|
|
|
|
- public void selectHistoryMessageByDay(){
|
|
|
+ public void selectHistoryMessageByDay() {
|
|
|
long startTime = 1723996800L;
|
|
|
long endTime = System.currentTimeMillis() / 1000;
|
|
|
- for (;startTime < endTime; startTime += 60 * 60 * 24){
|
|
|
+ for (; startTime < endTime; startTime += 60 * 60 * 24) {
|
|
|
selectHistoryMessage(startTime, startTime + 60 * 60 * 24);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void selectHistoryMessage(Long startTime, Long endTime) {
|
|
|
try {
|
|
|
- String res = getHistoryData(size, 0, startTime, endTime);
|
|
|
- //TODO 记录查询数据 info日志
|
|
|
- if (ObjectUtils.isEmpty(res)) {
|
|
|
+ Integer total = getHistoryDataTotal(startTime, endTime);
|
|
|
+ if (total == null || total == 0) {
|
|
|
return;
|
|
|
}
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
- JSONArray jsonArray = jsonObject.getJSONArray("missions");
|
|
|
- for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
- List<String> allExternalUserList = new ArrayList<>();
|
|
|
- List<Miniprogram> miniprogramList = new ArrayList<>();
|
|
|
- Date createdAt = jsonArray.getJSONObject(i).getDate("created_at");
|
|
|
- JSONArray attachments = jsonArray.getJSONObject(i).getJSONObject("msg_data").getJSONArray("attachments");
|
|
|
- for (int j = 0; j < attachments.size(); j++) {
|
|
|
- Miniprogram miniprogram = new Miniprogram();
|
|
|
- String page = attachments.getJSONObject(j).getJSONObject("miniprogram").getString("page");
|
|
|
- //历史先用切割法
|
|
|
- String translate = URLUtil.translate(page);
|
|
|
- String videoId = translate.split("id=")[1].split("&")[0];
|
|
|
- if (StringUtils.isNotEmpty(videoId) && StringUtils.isNumeric(videoId)) {
|
|
|
- miniprogram.setVideoId(Long.parseLong(videoId));
|
|
|
- }
|
|
|
- miniprogram.setAttachmentIdx(j + 1);
|
|
|
- miniprogramList.add(miniprogram);
|
|
|
+ int page = total / size + 1;
|
|
|
+ for (int n = 0; n < page; n++) {
|
|
|
+ String res = getHistoryData(size, n, startTime, endTime);
|
|
|
+ //TODO 记录查询数据 info日志
|
|
|
+ if (ObjectUtils.isEmpty(res)) {
|
|
|
+ return;
|
|
|
}
|
|
|
- JSONArray subMissionList = jsonArray.getJSONObject(i).getJSONArray("sub_mission_list");
|
|
|
- for (int k = 0; k < subMissionList.size(); k++) {
|
|
|
- if (!"sended".equals(subMissionList.getJSONObject(k).getString("status"))) {
|
|
|
- continue;
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONArray("missions");
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
+ List<String> allExternalUserList = new ArrayList<>();
|
|
|
+ List<Miniprogram> miniprogramList = new ArrayList<>();
|
|
|
+ Date createdAt = jsonArray.getJSONObject(i).getDate("created_at");
|
|
|
+ JSONArray attachments = jsonArray.getJSONObject(i).getJSONObject("msg_data").getJSONArray("attachments");
|
|
|
+ for (int j = 0; j < attachments.size(); j++) {
|
|
|
+ Miniprogram miniprogram = new Miniprogram();
|
|
|
+ String inxdePage = attachments.getJSONObject(j).getJSONObject("miniprogram").getString("page");
|
|
|
+ //历史先用切割法
|
|
|
+ String translate = URLUtil.translate(inxdePage);
|
|
|
+ String videoId = translate.split("id=")[1].split("&")[0];
|
|
|
+ if (StringUtils.isNotEmpty(videoId) && StringUtils.isNumeric(videoId)) {
|
|
|
+ miniprogram.setVideoId(Long.parseLong(videoId));
|
|
|
+ }
|
|
|
+ miniprogram.setAttachmentIdx(j + 1);
|
|
|
+ miniprogramList.add(miniprogram);
|
|
|
}
|
|
|
- List<String> externalUserList = subMissionList.getJSONObject(k).getJSONArray("external_user_list").toJavaList(String.class);
|
|
|
- if (CollectionUtils.isEmpty(externalUserList)) {
|
|
|
- continue;
|
|
|
+ JSONArray subMissionList = jsonArray.getJSONObject(i).getJSONArray("sub_mission_list");
|
|
|
+ for (int k = 0; k < subMissionList.size(); k++) {
|
|
|
+ if (!"sended".equals(subMissionList.getJSONObject(k).getString("status"))) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<String> externalUserList = subMissionList.getJSONObject(k).getJSONArray("external_user_list").toJavaList(String.class);
|
|
|
+ if (CollectionUtils.isEmpty(externalUserList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ allExternalUserList.addAll(externalUserList);
|
|
|
}
|
|
|
- allExternalUserList.addAll(externalUserList);
|
|
|
+ insertHistoryMessageList(allExternalUserList, miniprogramList, createdAt);
|
|
|
}
|
|
|
- insertHistoryMessageList(allExternalUserList, miniprogramList, createdAt);
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
//TODO 记录异常日志 记录起止时间和页数 startTime endTime i
|