yumeng 5 år sedan
förälder
incheckning
d7c30022bb

+ 28 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java

@@ -1,7 +1,9 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.entity.MaterialInfo;
 import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.mapper.MaterialInfoMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.common.module.utils.*;
@@ -1780,6 +1782,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
 
     }
 
+    @Autowired
+    private MaterialInfoMapper materialInfoMapper;
+
     @Override
     public Map<String, Object> videoUpload(Long advertiserId, String accessToken, String videoUrl) {
         Map<String, Object> returnMap = new HashMap<>();
@@ -1800,11 +1805,25 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                 log.error("下载文件到本地文件夹失败,filePath:{},accountId:{}", videoUrl, advertiserId);
                 throw new Exception("下载文件到本地失败");
             }
+
+            QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
+            materialInfoQueryWrapper.eq("url", videoUrl);
+            materialInfoQueryWrapper.eq("status", 1);
+            materialInfoQueryWrapper.orderByDesc("create_time");
+            materialInfoQueryWrapper.last("limit 1");
+            MaterialInfo materialInfo = materialInfoMapper.selectOne(materialInfoQueryWrapper);
+            String signature;
+            if (Check.isNull(materialInfo) || Check.isNull(materialInfo.getCode())) {
+                signature = LoadFileUtil.getMD5(localUrl);
+            } else {
+                signature = materialInfo.getCode();
+            }
             Long startTime = System.currentTimeMillis();
             String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.VIDEO_UPLOAD;
             JSONObject requestJson = new JSONObject();
             requestJson.put("advertiser_id", advertiserId);
-            Map<String, String> headerMap = new HashMap<String, String>();
+            requestJson.put("signature", signature);
+            Map<String, String> headerMap = new HashMap<>();
             headerMap.put("Access-Token", accessToken);
             headerMap.put("Content-Type", "multipart/form-data");
             String result = exceptInfoForRestTemplate(url, requestJson, headerMap, localUrl);
@@ -1815,12 +1834,18 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     JSONObject dataJson = resultJson.getJSONObject("data");
                     if (!Check.isNull(dataJson)) {
                         KuaiShouVideoUpload kuaiShouVideoUpload = new KuaiShouVideoUpload();
-                        kuaiShouVideoUpload.setPhotoId(dataJson.getString("photo_id"));
+                        String photoId = dataJson.getString("photo_id");
+                        kuaiShouVideoUpload.setPhotoId(photoId);
                         kuaiShouVideoUpload.setAccountId(advertiserId);
                         kuaiShouVideoUpload.setSavaPath(videoUrl);
+                        kuaiShouVideoUpload.setSignature(dataJson.getString("signature"));
                         kuaiShouVideoUpload.setSize(null);
                         kuaiShouVideoUpload.setType(null);
                         kuaiShouVideoUpload.setUploadTime(DateUtils.timeStamp2Date(System.currentTimeMillis()));
+                        Map<String, Object> deleteMap = new HashMap<>();
+                        deleteMap.put("photo_id", photoId);
+                        deleteMap.put("account_id", advertiserId);
+                        videoUploadMapper.deleteByMap(deleteMap);
                         int i = videoUploadMapper.insert(kuaiShouVideoUpload);
                         if (i > 0) {
                             log.info("上传快手视频完成");
@@ -1839,7 +1864,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                         returnMap.put("code", 0);
                         returnMap.put("message", "视频已上传文件");
                         returnMap.put("success", true);
-                        returnMap.put("photoId", dataJson.getString("photo_id"));
+                        returnMap.put("photoId", photoId);
                         return returnMap;
                     }
                 } else {