Browse Source

批量处理数据修改

xueyiming 7 months ago
parent
commit
8512054856

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

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