Parcourir la source

Merge branch 'dev-xym-refresh-token' into dev-xym-filter-history

xueyiming il y a 7 mois
Parent
commit
355407023d

+ 52 - 39
we-com-server/src/main/java/com/tzld/piaoquan/wecom/job/WeComHistoryDataJob.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -42,52 +43,58 @@ public class WeComHistoryDataJob {
     @Autowired
     private HistoryMessageService historyMessageService;
 
-    public void selectHistoryMessage() {
-        String res = null;
+    public void selectHistoryMessageByDay(){
+        long startTime = 1726416000L;
+        long endTime = System.currentTimeMillis() / 1000;
+        for (;startTime < endTime; startTime += 60 * 60 * 24){
+            selectHistoryMessage(startTime, startTime + 60 * 60 * 24);
+        }
+    }
+
+    public void selectHistoryMessage(Long startTime, Long endTime) {
         try {
-            res = getHistoryData(size, 0, 1726416000L, 1726588800L);
+            //TODO accessToken 暂时写死 后续增加接口刷新和存储
+            String res = getHistoryData(size, 0, startTime, endTime);
             //TODO 记录查询数据 info日志
-        } catch (IOException e) {
-            //TODO 记录异常日志 记录起止时间和页数 startTime endTime i
-            e.printStackTrace();
-        }
-        if (ObjectUtils.isEmpty(res)) {
-            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);
+            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 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);
                 }
-                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
+            e.printStackTrace();
         }
-
-
     }
 
 
@@ -110,6 +117,12 @@ public class WeComHistoryDataJob {
         historyMessageService.batchInsertHistoryMessage(historyMessageList);
     }
 
+    public Integer getHistoryDataTotal(Long startTime, Long endTime) throws IOException {
+        String res = getHistoryData(1, 0, startTime, endTime);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        return jsonObject.getInteger("total");
+    }
+
     public String getHistoryData(Integer limit, Integer offset, Long startTime, Long endTime) throws IOException {
         String accessToken = accessTokenService.getAccessToken();
         String url = GET_HISTORY_DATA_URL