Просмотр исходного кода

加入头条素材上传时间日志

yumeng 2 лет назад
Родитель
Сommit
5c99b6c261

+ 271 - 266
src/main/java/cn/com/ctop/material/service/impl/MaterialUploadTaskServiceImpl.java

@@ -53,280 +53,285 @@ import java.util.concurrent.Executors;
 @Service
 @Slf4j
 public class MaterialUploadTaskServiceImpl
-    extends ServiceImpl<MaterialUploadTaskMapper, MaterialUploadTask>
-    implements IMaterialUploadTaskService {
-  @Autowired private MaterialUploadTaskMapper materialUploadTaskMapper;
-  private static String downloadUrl = "/data/file/video/";
-  // private static String downloadUrl = "D:\\file";
-  private static ExecutorService kuaishouExecutorService = Executors.newFixedThreadPool(6);
-  private static ExecutorService bytedanceExecutorService = Executors.newFixedThreadPool(8);
-  private static ExecutorService submitExecutorService = Executors.newFixedThreadPool(5);
+        extends ServiceImpl<MaterialUploadTaskMapper, MaterialUploadTask>
+        implements IMaterialUploadTaskService {
+    @Autowired
+    private MaterialUploadTaskMapper materialUploadTaskMapper;
+    private static String downloadUrl = "/data/file/video/";
+    // private static String downloadUrl = "D:\\file";
+    private static ExecutorService kuaishouExecutorService = Executors.newFixedThreadPool(6);
+    private static ExecutorService bytedanceExecutorService = Executors.newFixedThreadPool(8);
+    private static ExecutorService submitExecutorService = Executors.newFixedThreadPool(5);
 
-  @Override
-  public void upload(String signature) {
-    submitExecutorService.submit(
-        new Runnable() {
-          @Override
-          public void run() {
-            TaskVo taskVo = getTaskList(signature);
-            if (Check.isNull(taskVo)) {
-              log.info("此素材md5未获取到待上传的任务列表,signature:{}", signature);
-              return;
-            }
-            List<MaterialUploadTask> taskList = taskVo.getTaskList();
-            if (Check.isNull(taskList)) {
-              log.info("此素材md5未获取到待上传的任务列表,signature:{}", signature);
-              return;
-            }
-            MaterialUploadTask materialUploadTask = taskList.get(0);
-            String materialUrl = materialUploadTask.getMaterialUrl();
-            String localUrl = LoadFileUtil.downLoadFromUrl(materialUrl, downloadUrl);
-            File file = new File(localUrl);
-            FileSystemResource resource = null;
-            Integer materialType = null;
-            if (!Check.isNull(taskVo.getKuaiShou())) {
-              resource = new FileSystemResource(file);
-              JSONObject sizeJson = materialUploadTaskMapper.getVideoSize(signature);
-              if (!Check.isNull(sizeJson)) {
-                Integer width = sizeJson.getInteger("width");
-                Integer height = sizeJson.getInteger("height");
-                Integer type = MaterialEnum.getTypeBySize(width, height);
-                if (!Check.isNull(type) && type != 0) {
-                  materialType = type;
-                }
-              }
-            }
-            FileBody fileBody = null;
-            if (!Check.isNull(taskVo.getBytedance())) {
-              fileBody = new FileBody(file);
-            }
-            for (MaterialUploadTask task : taskList) {
-              if (task.getMediaId() == 2 || task.getMediaId() == 4) {
-                uploadKuaiShou(task, resource, materialType);
-              } else if (task.getMediaId() == 1 || task.getMediaId() == 3) {
-                uploadBytedance(fileBody, task);
-              }
-            }
-          }
-        });
-  }
+    @Override
+    public void upload(String signature) {
+        submitExecutorService.submit(
+                new Runnable() {
+                    @Override
+                    public void run() {
+                        TaskVo taskVo = getTaskList(signature);
+                        if (Check.isNull(taskVo)) {
+                            log.info("此素材md5未获取到待上传的任务列表,signature:{}", signature);
+                            return;
+                        }
+                        List<MaterialUploadTask> taskList = taskVo.getTaskList();
+                        if (Check.isNull(taskList)) {
+                            log.info("此素材md5未获取到待上传的任务列表,signature:{}", signature);
+                            return;
+                        }
+                        MaterialUploadTask materialUploadTask = taskList.get(0);
+                        String materialUrl = materialUploadTask.getMaterialUrl();
+                        String localUrl = LoadFileUtil.downLoadFromUrl(materialUrl, downloadUrl);
+                        File file = new File(localUrl);
+                        FileSystemResource resource = null;
+                        Integer materialType = null;
+                        if (!Check.isNull(taskVo.getKuaiShou())) {
+                            resource = new FileSystemResource(file);
+                            JSONObject sizeJson = materialUploadTaskMapper.getVideoSize(signature);
+                            if (!Check.isNull(sizeJson)) {
+                                Integer width = sizeJson.getInteger("width");
+                                Integer height = sizeJson.getInteger("height");
+                                Integer type = MaterialEnum.getTypeBySize(width, height);
+                                if (!Check.isNull(type) && type != 0) {
+                                    materialType = type;
+                                }
+                            }
+                        }
+                        FileBody fileBody = null;
+                        if (!Check.isNull(taskVo.getBytedance())) {
+                            fileBody = new FileBody(file);
+                        }
+                        for (MaterialUploadTask task : taskList) {
+                            if (task.getMediaId() == 2 || task.getMediaId() == 4) {
+                                uploadKuaiShou(task, resource, materialType);
+                            } else if (task.getMediaId() == 1 || task.getMediaId() == 3) {
+                                uploadBytedance(fileBody, task);
+                            }
+                        }
+                    }
+                });
+    }
 
-  private void uploadKuaiShou(MaterialUploadTask task, FileSystemResource resource, Integer type) {
-    kuaishouExecutorService.submit(
-        new Runnable() {
-          @Override
-          public void run() {
-            try {
-              Long accountId = task.getAccountId();
-              if (Check.isNull(accountId)) {
-                log.error("账户不能为空。");
-                return;
-              }
-              String token = materialUploadTaskMapper.getKuaiShouTokenByAccountId(accountId);
-              if (Check.isNull(token)) {
-                log.error("此账户id未获取到token,accountId:{}", accountId);
-                return;
-              }
-              Map<String, String> headerMap = new HashMap<>();
-              headerMap.put("Content-Type", "multipart/form-data");
-              headerMap.put("Access-Token", token);
-              JSONObject requestJson = new JSONObject();
-              requestJson.put("file", resource);
-              requestJson.put("signature", task.getSignature());
-              if (!Check.isNull(task.getShieldBackwardSwitch())) {
-                if (task.getShieldBackwardSwitch() == 1) {
-                  requestJson.put("shield_backward_switch", true);
-                } else {
-                  requestJson.put("shield_backward_switch", false);
-                }
-              }
-              if (!Check.isNull(type)) {
-                requestJson.put("type", type);
-              }
-              requestJson.put("photo_name", task.getMaterialName());
-              requestJson.put("advertiser_id", accountId);
-              String url = HttpConstant.VIDEO_UPLOAD;
-              String result = exceptInfoForRestTemplate(url, requestJson, headerMap);
-              JSONObject resultJson = JSONObject.parseObject(result);
-              if (!Check.isNull(resultJson)) {
-                Integer code = resultJson.getInteger("code");
-                if (code == 0) {
-                  materialUploadTaskMapper.syncKuaishou(task.getSignature());
-                  materialUploadTaskMapper.updateStatusById(task.getId(), 3, "同步成功", new Date());
-                  log.info(
-                      "快手素材同步完成,accountId:{},code:{},返回信息:{}",
-                      accountId,
-                      task.getSignature(),
-                      resultJson);
-                } else {
-                  String message = resultJson.getString("message");
-                  if (code == 400001 && message.equals("文件操作过于频繁")) {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 0, "文件操作频繁-待重试", new Date());
-                  } else if (code == 500000 && message.equals("系统错误")) {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 0, "系统错误-待重试", new Date());
-                  } else if (code == 500000 && message.contains("限流")) {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 0, "触发限流-待重试", new Date());
-                  } else if (code == 400001 && message.contains("频繁")) {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口请求频繁-待重试", new Date());
-                  } else {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 4, message, new Date());
-                  }
-                  log.error("快手同步素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
-                }
-              } else {
-                materialUploadTaskMapper.updateStatusById(
-                    task.getId(), 0, "返回结果为空-待重试", new Date());
-              }
-              Thread.sleep(1000L);
-            } catch (Exception e) {
-              materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口异常-待重试", new Date());
-              e.printStackTrace();
-            }
-          }
-        });
-  }
+    private void uploadKuaiShou(MaterialUploadTask task, FileSystemResource resource, Integer type) {
+        kuaishouExecutorService.submit(
+                new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            Long accountId = task.getAccountId();
+                            if (Check.isNull(accountId)) {
+                                log.error("账户不能为空。");
+                                return;
+                            }
+                            String token = materialUploadTaskMapper.getKuaiShouTokenByAccountId(accountId);
+                            if (Check.isNull(token)) {
+                                log.error("此账户id未获取到token,accountId:{}", accountId);
+                                return;
+                            }
+                            Map<String, String> headerMap = new HashMap<>();
+                            headerMap.put("Content-Type", "multipart/form-data");
+                            headerMap.put("Access-Token", token);
+                            JSONObject requestJson = new JSONObject();
+                            requestJson.put("file", resource);
+                            requestJson.put("signature", task.getSignature());
+                            if (!Check.isNull(task.getShieldBackwardSwitch())) {
+                                if (task.getShieldBackwardSwitch() == 1) {
+                                    requestJson.put("shield_backward_switch", true);
+                                } else {
+                                    requestJson.put("shield_backward_switch", false);
+                                }
+                            }
+                            if (!Check.isNull(type)) {
+                                requestJson.put("type", type);
+                            }
+                            requestJson.put("photo_name", task.getMaterialName());
+                            requestJson.put("advertiser_id", accountId);
+                            String url = HttpConstant.VIDEO_UPLOAD;
+                            String result = exceptInfoForRestTemplate(url, requestJson, headerMap);
+                            JSONObject resultJson = JSONObject.parseObject(result);
+                            if (!Check.isNull(resultJson)) {
+                                Integer code = resultJson.getInteger("code");
+                                if (code == 0) {
+                                    materialUploadTaskMapper.syncKuaishou(task.getSignature());
+                                    materialUploadTaskMapper.updateStatusById(task.getId(), 3, "同步成功", new Date());
+                                    log.info(
+                                            "快手素材同步完成,accountId:{},code:{},返回信息:{}",
+                                            accountId,
+                                            task.getSignature(),
+                                            resultJson);
+                                } else {
+                                    String message = resultJson.getString("message");
+                                    if (code == 400001 && message.equals("文件操作过于频繁")) {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 0, "文件操作频繁-待重试", new Date());
+                                    } else if (code == 500000 && message.equals("系统错误")) {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 0, "系统错误-待重试", new Date());
+                                    } else if (code == 500000 && message.contains("限流")) {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 0, "触发限流-待重试", new Date());
+                                    } else if (code == 400001 && message.contains("频繁")) {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口请求频繁-待重试", new Date());
+                                    } else {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 4, message, new Date());
+                                    }
+                                    log.error("快手同步素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
+                                }
+                            } else {
+                                materialUploadTaskMapper.updateStatusById(
+                                        task.getId(), 0, "返回结果为空-待重试", new Date());
+                            }
+                            Thread.sleep(500L);
+                        } catch (Exception e) {
+                            materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口异常-待重试", new Date());
+                            e.printStackTrace();
+                        }
+                    }
+                });
+    }
+
+    private void uploadBytedance(FileBody fileBody, MaterialUploadTask task) {
+        bytedanceExecutorService.submit(
+                new Runnable() {
+                    @Override
+                    public void run() {
+                        Long accountId = task.getAccountId();
+                        if (Check.isNull(accountId)) {
+                            log.error("账户不能为空");
+                            return;
+                        }
+                        String token = materialUploadTaskMapper.getTokenByAccountId(accountId);
+                        if (Check.isNull(token)) {
+                            log.error("此账户id未获取到token,accountId:{}", accountId);
+                            return;
+                        }
+                        long l = System.currentTimeMillis();
+                        String url = HttpConstant.BYTEDANCE_VIDEO_UPLOAD;
+                        CloseableHttpResponse response = null;
+                        CloseableHttpClient client = null;
+                        // 构造请求
+                        HttpPost httpPost = new HttpPost(url);
+                        httpPost.setHeader("Access-Token", token);
+                        // 文件参数
+                        try {
+                            MultipartEntityBuilder entityBuilder =
+                                    MultipartEntityBuilder.create().addPart("video_file", fileBody);
+                            // 其他参数
+                            entityBuilder.addTextBody("advertiser_id", String.valueOf(task.getAccountId()));
+                            entityBuilder.addTextBody("video_signature", task.getSignature());
+                            entityBuilder.addTextBody(
+                                    "filename",
+                                    task.getMaterialName(),
+                                    ContentType.create("text/plain", Charset.forName("UTF-8")));
+                            org.apache.http.HttpEntity entity = entityBuilder.build();
+                            client = HttpClientBuilder.create().build();
+                            httpPost.setURI(URI.create(url));
+                            httpPost.setEntity(entity);
+                            response = client.execute(httpPost);
+                            if (response != null && response.getStatusLine().getStatusCode() == 200) {
+                                BufferedReader bufferedReader =
+                                        new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+                                StringBuilder result = new StringBuilder();
+                                String line = "";
+                                while ((line = bufferedReader.readLine()) != null) {
+                                    result.append(line);
+                                }
+                                bufferedReader.close();
+                                log.info(
+                                        "头条上传素材时间:{} s ,账户:{}。code:{}",
+                                        (System.currentTimeMillis() - l) / 1000, accountId, task.getSignature());
+                                JSONObject resultJson = JSONObject.parseObject(result.toString());
+                                if (!Check.isNull(resultJson)) {
+                                    if (resultJson.getInteger("code") == 0) {
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 3, "同步成功", new Date());
+                                        materialUploadTaskMapper.syncBytedance(task.getSignature());
+                                        log.info(
+                                                "头条素材同步完成,accountId:{},code:{},返回信息:{}",
+                                                accountId,
+                                                task.getSignature(),
+                                                resultJson);
+                                    } else {
+                                        String message = resultJson.getString("message");
+                                        materialUploadTaskMapper.updateStatusById(task.getId(), 4, message, new Date());
+                                        log.error("头条同步步素材失败,返回信息:{}", resultJson);
+                                    }
+                                }
+                            } else {
+                                materialUploadTaskMapper.updateStatusById(
+                                        task.getId(), 0, "返回结果为空,待重试", new Date());
+                            }
+                        } catch (Exception e) {
+                            log.error(e.getMessage(), e);
+                            materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口异常,待重试", new Date());
+                        } finally {
+                            try {
+                                if (response != null) {
+                                    response.close();
+                                }
+                                if (null != client) {
+                                    client.close();
+                                }
+                            } catch (IOException e) {
+                                log.error(e.getMessage(), e);
+                            }
+                        }
+                    }
+                });
+    }
 
-  private void uploadBytedance(FileBody fileBody, MaterialUploadTask task) {
-    bytedanceExecutorService.submit(
-        new Runnable() {
-          @Override
-          public void run() {
-            Long accountId = task.getAccountId();
-            if (Check.isNull(accountId)) {
-              log.error("账户不能为空");
-              return;
+    private TaskVo getTaskList(String signature) {
+        TaskVo taskVo = new TaskVo();
+        QueryWrapper<MaterialUploadTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("signature", signature);
+        queryWrapper.eq("task_status", 1);
+        List<MaterialUploadTask> materialUploadTasks =
+                materialUploadTaskMapper.selectList(queryWrapper);
+        if (Check.isNull(materialUploadTasks)) {
+            return null;
+        }
+        taskVo.setTaskList(materialUploadTasks);
+        List<Integer> mediaList = materialUploadTaskMapper.getMediaList(signature);
+        for (int i = 0; i < mediaList.size(); i++) {
+            Integer mediaId = mediaList.get(i);
+            if (mediaId == 2 || mediaId == 4) {
+                taskVo.setKuaiShou(1);
             }
-            String token = materialUploadTaskMapper.getTokenByAccountId(accountId);
-            if (Check.isNull(token)) {
-              log.error("此账户id未获取到token,accountId:{}", accountId);
-              return;
+            if (mediaId == 1 || mediaId == 3) {
+                taskVo.setBytedance(1);
             }
-            String url = HttpConstant.BYTEDANCE_VIDEO_UPLOAD;
-            CloseableHttpResponse response = null;
-            CloseableHttpClient client = null;
-            // 构造请求
-            HttpPost httpPost = new HttpPost(url);
-            httpPost.setHeader("Access-Token", token);
-            // 文件参数
-            try {
-              MultipartEntityBuilder entityBuilder =
-                  MultipartEntityBuilder.create().addPart("video_file", fileBody);
-              // 其他参数
-              entityBuilder.addTextBody("advertiser_id", String.valueOf(task.getAccountId()));
-              entityBuilder.addTextBody("video_signature", task.getSignature());
-              entityBuilder.addTextBody(
-                  "filename",
-                  task.getMaterialName(),
-                  ContentType.create("text/plain", Charset.forName("UTF-8")));
-              org.apache.http.HttpEntity entity = entityBuilder.build();
-              client = HttpClientBuilder.create().build();
-              httpPost.setURI(URI.create(url));
-              httpPost.setEntity(entity);
-              response = client.execute(httpPost);
-              if (response != null && response.getStatusLine().getStatusCode() == 200) {
-                BufferedReader bufferedReader =
-                    new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
-                StringBuilder result = new StringBuilder();
-                String line = "";
-                while ((line = bufferedReader.readLine()) != null) {
-                  result.append(line);
-                }
-                bufferedReader.close();
-                JSONObject resultJson = JSONObject.parseObject(result.toString());
-                if (!Check.isNull(resultJson)) {
-                  if (resultJson.getInteger("code") == 0) {
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 3, "同步成功", new Date());
-                    materialUploadTaskMapper.syncBytedance(task.getSignature());
-                    log.info(
-                        "头条素材同步完成,accountId:{},code:{},返回信息:{}",
-                        accountId,
-                        task.getSignature(),
-                        resultJson);
-                  } else {
-                    String message = resultJson.getString("message");
-                    materialUploadTaskMapper.updateStatusById(task.getId(), 4, message, new Date());
-                    log.error("头条同步步素材失败,返回信息:{}", resultJson);
-                  }
-                }
-              } else {
-                materialUploadTaskMapper.updateStatusById(
-                    task.getId(), 0, "返回结果为空,待重试", new Date());
-              }
-            } catch (Exception e) {
-              log.error(e.getMessage(), e);
-              materialUploadTaskMapper.updateStatusById(task.getId(), 0, "接口异常,待重试", new Date());
-            } finally {
-              try {
-                if (response != null) {
-                  response.close();
+        }
+        return taskVo;
+    }
+
+    private String exceptInfoForRestTemplate(
+            String url, Map<String, Object> paramMap, Map<String, String> headerMap) {
+        try {
+            long l = System.currentTimeMillis();
+            MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
+            if (!Check.isNullMap(paramMap)) {
+                for (String key : paramMap.keySet()) {
+                    param.add(key, paramMap.get(key));
                 }
-                if (null != client) {
-                  client.close();
+                HttpHeaders headers = new HttpHeaders();
+                if (!Check.isNullMap(headerMap)) {
+                    for (String key : headerMap.keySet()) {
+                        headers.add(key, headerMap.get(key));
+                    }
                 }
-              } catch (IOException e) {
-                log.error(e.getMessage(), e);
-              }
+                SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
+                requestFactory.setConnectTimeout(1000 * 500); // 设置超时
+                requestFactory.setReadTimeout(1000 * 500);
+                RestTemplate rest = new RestTemplate(requestFactory);
+                HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
+                ResponseEntity<String> responseEntity =
+                        rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
+                log.info(
+                        "快手上传素材时间:{} s ,账户:{}。code:{}",
+                        (System.currentTimeMillis() - l) / 1000,
+                        paramMap.get("advertiser_id"),
+                        paramMap.get("signature"));
+                return responseEntity.getBody();
             }
-          }
-        });
-  }
-
-  private TaskVo getTaskList(String signature) {
-    TaskVo taskVo = new TaskVo();
-    QueryWrapper<MaterialUploadTask> queryWrapper = new QueryWrapper<>();
-    queryWrapper.eq("signature", signature);
-    queryWrapper.eq("task_status", 1);
-    List<MaterialUploadTask> materialUploadTasks =
-        materialUploadTaskMapper.selectList(queryWrapper);
-    if (Check.isNull(materialUploadTasks)) {
-      return null;
-    }
-    taskVo.setTaskList(materialUploadTasks);
-    List<Integer> mediaList = materialUploadTaskMapper.getMediaList(signature);
-    for (int i = 0; i < mediaList.size(); i++) {
-      Integer mediaId = mediaList.get(i);
-      if (mediaId == 2 || mediaId == 4) {
-        taskVo.setKuaiShou(1);
-      }
-      if (mediaId == 1 || mediaId == 3) {
-        taskVo.setBytedance(1);
-      }
-    }
-    return taskVo;
-  }
-
-  private String exceptInfoForRestTemplate(
-      String url, Map<String, Object> paramMap, Map<String, String> headerMap) {
-    try {
-      long l = System.currentTimeMillis();
-      MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
-      if (!Check.isNullMap(paramMap)) {
-        for (String key : paramMap.keySet()) {
-          param.add(key, paramMap.get(key));
-        }
-        HttpHeaders headers = new HttpHeaders();
-        if (!Check.isNullMap(headerMap)) {
-          for (String key : headerMap.keySet()) {
-            headers.add(key, headerMap.get(key));
-          }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
-        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-        requestFactory.setConnectTimeout(1000 * 500); // 设置超时
-        requestFactory.setReadTimeout(1000 * 500);
-        RestTemplate rest = new RestTemplate(requestFactory);
-        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
-        ResponseEntity<String> responseEntity =
-            rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
-        log.info(
-            "上传素材时间:{} s ,账户:{}。code:{}",
-            (System.currentTimeMillis() - l) / 1000,
-            paramMap.get("advertiser_id"),
-            paramMap.get("signature"));
-        return responseEntity.getBody();
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
+        return null;
     }
-    return null;
-  }
 }