yumeng 5 years ago
parent
commit
3edc065424

+ 4 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 截屏
@@ -25,4 +26,7 @@ public interface IMaterialCutFrameService extends IService<MaterialCutFrame> {
 
     void loadCosCutFrame(String jobId, String videoSignature);  //腾讯云抽帧任务状态查询以及数据入库
 
+    void getTencentCutFrame(String materialId, Map<String, Object> coverMap);
+
+    MaterialCutFrame getCutFrameByCode(String code);
 }

+ 50 - 4
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java

@@ -22,7 +22,6 @@ import com.aliyuncs.mts.model.v20140618.SubmitSnapshotJobResponse;
 import com.aliyuncs.profile.DefaultProfile;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.gson.JsonObject;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +31,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -265,14 +265,14 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
     public void loadCosCutFrame(String jobId, String videoSignature) {
         try {
             String resp = CosUtil.describeTaskDetail(jobId);
-            if(StringUtils.isBlank(resp)){
+            if (StringUtils.isBlank(resp)) {
                 return;
             }
 
             JSONObject respJson = JSONObject.parseObject(resp);
             String status = respJson.getString("Status");
 
-            if(!"FINISH".equals(status)){
+            if (!"FINISH".equals(status)) {
                 return;
             }
 
@@ -290,7 +290,7 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
                 return;
             }
 
-            for (int i=0; i< snapshotArray.size(); i++){
+            for (int i = 0; i < snapshotArray.size(); i++) {
                 String imagePath = snapshotArray.getString(i);
                 String urlStr = "https://" + CosUtil.bucket + ".cos.ap-chongqing.myqcloud.com" + imagePath;
 
@@ -319,4 +319,50 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
     }
 
 
+    @Override
+    public void getTencentCutFrame(String materialId, Map<String, Object> coverMap) {
+        try {
+            QueryWrapper<MaterialCutFrame> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("video_signature", materialId);
+            queryWrapper.last("limit 1");
+            MaterialCutFrame checkMaterialCutFrame = this.getOne(queryWrapper);
+            if (!Check.isNull(checkMaterialCutFrame)) {
+                log.info("已存推荐封面");
+                return;
+            }
+            if (Check.isNullMap(coverMap) || coverMap.size() == 1) {
+                log.info("腾讯云抽帧失败,code:{}", materialId);
+                return;
+            }
+            for (int i = 0; i <= 14; i++) {
+                String url = (String) coverMap.get(String.valueOf(i));
+                if(!Check.isNull(url)){
+                    String cutFramePath = LoadFileUtil.downLoadFromUrl(url, imageUpLoadPath);
+                    String cutFrameMd5 = LoadFileUtil.getMD5(cutFramePath);
+                    MaterialCutFrame cutFrame = new MaterialCutFrame();
+                    cutFrame.setSignature(cutFrameMd5);
+                    cutFrame.setUrl(url);
+                    cutFrame.setVideoSignature(materialId);
+                    cutFrame.setImageIndex(i);
+                    this.save(cutFrame);
+                    LoadFileUtil.delFile(cutFramePath);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+    @Override
+    public MaterialCutFrame getCutFrameByCode(String code) {
+        QueryWrapper<MaterialCutFrame> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("video_signature", code);
+        queryWrapper.last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+
+
 }

+ 24 - 13
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -373,19 +373,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                         if (insert > 0) {
                             log.info("素材基本信息入库完成,用时:{} s", (System.currentTimeMillis() - l) / 1000);
                         }
-                        Thread thread = new Thread() {
-                            @Override
-                            public void run() {
-                                try {
-                                    log.info("开始抽帧");
-                                    materialCutFrameService.getCutFrame(videoUrl, materialInfo.getCode(), secondDuration, height, width);
-                                    //materialCutFrameService.getCosCutFrame(videoUrl, materialInfo.getCode());  //腾讯云抽帧
-                                } catch (Exception e) {
-                                    e.printStackTrace();
-                                }
-                            }
-                        };
-                        thread.start();
+
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     } catch (IOException e) {
@@ -488,8 +476,31 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             info.setCreateTime(new Date());
             info.setUpdateTime(new Date());
             info.setType(type);
+            String coverUrl;
+            MaterialCutFrame cutFrame = materialCutFrameService.getCutFrameByCode(code);
+            if (Check.isNull(cutFrame)) {
+                String loadImage = "cutFrame/" + code + "/${Number}.jpg";
+                Map<String, Object> stringObjectMap = CloudVideoProcessUtil.videoCutFrameHandle(info.getUrl().replace("https://media-1301855440.cos.ap-chongqing.myqcloud.com/", ""), loadImage);
+                coverUrl = (String) stringObjectMap.get("0");
+                Thread thread = new Thread() {
+                    @Override
+                    public void run() {
+                        try {
+                            log.info("开始抽帧");
+                            materialCutFrameService.getTencentCutFrame(code, stringObjectMap);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                };
+                thread.start();
+            } else {
+                coverUrl = cutFrame.getUrl();
+            }
+            info.setCoverUrl(coverUrl);
             this.save(info);
 
+
             JSONArray imageArr = json.getJSONArray("imageArr");
             if (!Check.isNull(imageArr)) {
                 JSONObject imageJson = new JSONObject();

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

@@ -1706,6 +1706,10 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                         JSONObject returnJson = new JSONObject();
                         returnJson.put("isActivate", dataJson.getInteger("is_activate"));
                         returnJson.put("isFormSubmit", dataJson.getInteger("is_form_submit"));
+                        returnJson.put("isCreditGrant", dataJson.getInteger("is_credit_grant"));
+                        returnJson.put("isWanJian", dataJson.getInteger("is_wan_jian"));
+                        returnJson.put("isValidClue", dataJson.getInteger("is_valid_clue"));
+                        returnJson.put("isPurchase", dataJson.getInteger("is_purchase"));
                         JSONArray deep_conversion_types = dataJson.getJSONArray("deep_conversion_types");
                         JSONArray deepConversionTypes = new JSONArray();
                         if (!Check.isNull(deep_conversion_types)) {