ソースを参照

Merge branch 'test' of http://39.106.184.70:3000/ctop/adsp-boot into test

syh 5 年 前
コミット
a71160b600
18 ファイル変更354 行追加84 行削除
  1. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialCutFrameController.java
  2. 8 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java
  3. 58 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/CutFrameJob.java
  4. 1 1
      jeecg-boot-module-system/src/main/resources/application-test.yml
  5. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/constant/OssConstant.java
  6. 3 3
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrame.java
  7. 63 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrameTask.java
  8. 7 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java
  9. 15 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameTaskMapper.java
  10. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialCutFrameTaskMapper.xml
  11. 3 1
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameService.java
  12. 15 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameTaskService.java
  13. 113 59
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java
  14. 19 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameTaskServiceImpl.java
  15. 20 15
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  16. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouImageGetMapper.java
  17. 6 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouImageGetMapper.xml
  18. 9 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouImageGetServiceImpl.java

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialCutFrameController.java

@@ -51,6 +51,7 @@ public class MaterialCutFrameController {
                                                          HttpServletRequest req) {
         Result<IPage<MaterialCutFrame>> result = new Result<IPage<MaterialCutFrame>>();
         QueryWrapper<MaterialCutFrame> queryWrapper = QueryGenerator.initQueryWrapper(materialCutFrame, req.getParameterMap());
+        queryWrapper.orderByAsc("image_index");
         Page<MaterialCutFrame> page = new Page<MaterialCutFrame>(pageNo, pageSize);
         IPage<MaterialCutFrame> pageList = materialCutFrameService.page(page, queryWrapper);
         result.setSuccess(true);
@@ -58,6 +59,7 @@ public class MaterialCutFrameController {
         return result;
     }
 
+
     /**
      * 添加
      *

+ 8 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java

@@ -24,6 +24,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.ctop.entity.Project;
 import org.jeecg.modules.ctop.service.IKuaiShouUploadService;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.ctop.service.IProjectService;
@@ -232,12 +233,17 @@ public class MaterialInfoController {
                     material.setKuaiShou(JSONObject.parseObject(kuaiShouString));
                 }
 
+
+                Project project = projectService.getById(material.getProjectId());
+                if (!Check.isNull(project)) {
+                    material.setMediaId(project.getMediaId());
+                    material.setProjectName(project.getProjectName());
+                }
                 /*JSONObject generalizationJson = materialInfoService.getGeneralizationInfo(material.getCode());
                 if (!Check.isNull(generalizationJson)) {
-                    material.setGeneralization(generalizationJson);
+                    material.setGeneralization(generaliz  ationJson);
                 }*/
 
-
                 QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
                 imageInfoQueryWrapper.eq("video_id", material.getCode());
                 imageInfoQueryWrapper.eq("status", 0);

+ 58 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/CutFrameJob.java

@@ -0,0 +1,58 @@
+package org.jeecg.modules.ctop.job;
+
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
+import cn.com.ctop.common.module.service.IMaterialCutFrameService;
+import cn.com.ctop.common.module.service.IMaterialCutFrameTaskService;
+import cn.com.ctop.common.module.utils.Check;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.concurrent.Executors;
+
+import static org.jeecg.modules.ctop.job.KuaishouDailyGroupReportLoadJob.executorService;
+
+/**
+ * 获取抽帧视频
+ */
+@Slf4j
+public class CutFrameJob implements Job {
+    @Autowired
+    private IMaterialCutFrameService materialCutFrameService;
+    @Autowired
+    private IMaterialCutFrameTaskService taskService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        Thread thread = new Thread() {
+            @Override
+            public void run() {
+
+                QueryWrapper<MaterialCutFrameTask> taskQueryWrapper = new QueryWrapper<>();
+                taskQueryWrapper.eq("job_status", 0);
+                List<MaterialCutFrameTask> list = taskService.list(taskQueryWrapper);
+
+                if (Check.isNull(list)) {
+                    return;
+                }
+                executorService = Executors.newFixedThreadPool(5);
+                list.forEach(cutFrameTask -> {
+                    executorService.submit(new Runnable() {
+                        @Override
+                        public void run() {
+                            //获取广告计划信息数据
+                            materialCutFrameService.loadCutFrame(cutFrameTask.getJobId(), cutFrameTask.getVideoSignature());
+                        }
+                    });
+                });
+            }
+        };
+        thread.start();
+
+
+    }
+}

+ 1 - 1
jeecg-boot-module-system/src/main/resources/application-test.yml

@@ -131,7 +131,7 @@ mybatis-plus:
       # 默认数据库表下划线命名
       table-underline: true
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
     # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
       #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/constant/OssConstant.java

@@ -0,0 +1,5 @@
+package cn.com.ctop.common.module.constant;
+
+public class OssConstant {
+    public static final String formatUrl = "https://%s.%s.aliyuncs.com/";
+}

+ 3 - 3
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrame.java

@@ -38,7 +38,7 @@ public class MaterialCutFrame {
      */
     @Excel(name = "素材库id", width = 15)
     @ApiModelProperty(value = "素材库id")
-    private String materialMd5;
+    private String videoSignature;
     /**
      * url
      */
@@ -50,13 +50,13 @@ public class MaterialCutFrame {
      */
     @Excel(name = "md5", width = 15)
     @ApiModelProperty(value = "md5")
-    private String code;
+    private String signature;
     /**
      * 素材标
      */
     @Excel(name = "素材标", width = 15)
     @ApiModelProperty(value = "素材标")
-    private Integer cutFrameIndex;
+    private Integer imageIndex;
 
     /**
      * createTime

+ 63 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrameTask.java

@@ -0,0 +1,63 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 截帧 任务表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-06-01
+ */
+@Data
+@TableName("ctop_material_cut_frame_task")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_cut_frame_task对象", description = "截帧 任务表")
+public class MaterialCutFrameTask {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 视频md5
+     */
+    @Excel(name = "视频md5", width = 15)
+    @ApiModelProperty(value = "视频md5")
+    private String videoSignature;
+    /**
+     * jobId
+     */
+    @Excel(name = "jobId", width = 15)
+    @ApiModelProperty(value = "jobId")
+    private String jobId;
+    /**
+     * 任务状态 0 未执行 1 已完成
+     */
+    @Excel(name = "任务状态 0 未执行 1 已完成", width = 15)
+    @ApiModelProperty(value = "任务状态 0 未执行 1 已完成")
+    private Integer jobStatus;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 7 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java

@@ -153,4 +153,11 @@ public class MaterialInfo {
     private Boolean whetherUnaudited;  // 是否有未审核封面
 
 
+    @TableField(exist = false)
+    private String mediaId;  // 是否有未审核封面
+
+    @TableField(exist = false)
+    private String projectName;  // 是否有未审核封面
+
+
 }

+ 15 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameTaskMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 截帧 任务表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-06-01
+ * @cersion: V1.0
+ */
+public interface MaterialCutFrameTaskMapper extends BaseMapper<MaterialCutFrameTask> {
+
+}

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialCutFrameTaskMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.common.module.mapper.MaterialCutFrameTaskMapper">
+
+</mapper>

+ 3 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameService.java

@@ -14,6 +14,8 @@ import java.io.IOException;
  * @date 2019-12-25
  */
 public interface IMaterialCutFrameService extends IService<MaterialCutFrame> {
-    void getCutFrame(String url, String materialId, String height, String width) throws IOException;
+    void getCutFrame(String url, String materialId, Long secondDuration, String height, String width) throws IOException;
+
+    void loadCutFrame(String jobId, String videoSignature);
 
 }

+ 15 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameTaskService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.service;
+
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 截帧 任务表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-06-01
+ */
+public interface IMaterialCutFrameTaskService extends IService<MaterialCutFrameTask> {
+
+}

+ 113 - 59
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java

@@ -1,8 +1,12 @@
 package cn.com.ctop.common.module.service.impl;
 
+import cn.com.ctop.common.module.constant.OssConstant;
 import cn.com.ctop.common.module.entity.MaterialCutFrame;
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
 import cn.com.ctop.common.module.mapper.MaterialCutFrameMapper;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
+import cn.com.ctop.common.module.service.IMaterialCutFrameTaskService;
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.common.module.utils.MpsUtils;
 import com.alibaba.fastjson.JSON;
@@ -14,7 +18,11 @@ import com.aliyuncs.mts.model.v20140618.QuerySnapshotJobListResponse;
 import com.aliyuncs.mts.model.v20140618.SubmitSnapshotJobRequest;
 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 lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
@@ -28,6 +36,7 @@ import java.net.URLEncoder;
  * @version V1.0
  * @date 2019-12-25
  */
+@Slf4j
 @Service
 public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMapper, MaterialCutFrame> implements IMaterialCutFrameService {
 
@@ -35,26 +44,42 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
     private static String ossBucket = "ctop-media";
     private static String ossOutputObject = "output_{Count}.jpg";
 
+    @Value("${jeecg.path.image-upload}")
+    private String imageUpLoadPath;
+
+
+    @Autowired
+    private IMaterialCutFrameTaskService cutFrameTaskService;
+
     /**
      * 获取素材关键帧
      *
      * @param url
      */
     @Override
-    public void getCutFrame(String url, String materialId, String height, String width) throws IOException {
+    public void getCutFrame(String url, String materialId, Long secondDuration, String height, String width) throws IOException {
         try {
-            String zeroFrameUrl = url + "?x-oss-process=video/snapshot,t_00000,m_fast";
 
-            // String localPath = LoadFileUtil.downLoadFromUrl(zeroFrameUrl, PropertiesUtils.getValue("kuaishou_config", "video_sava_path"));
-            String localPath = LoadFileUtil.downLoadFromUrl(zeroFrameUrl, "D:\\tets1");
+            QueryWrapper<MaterialCutFrameTask> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("video_signature", materialId);
+            queryWrapper.last("limit 1");
+            MaterialCutFrameTask checkCutFrame = cutFrameTaskService.getOne(queryWrapper);
+            if (!Check.isNull(checkCutFrame)) {
+                log.info("已存推荐封面");
+                return;
+
+            }
+
+            String zeroFrameUrl = url + "?x-oss-process=video/snapshot,t_00000,m_fast";
+            String localPath = LoadFileUtil.downLoadFromUrl(zeroFrameUrl, imageUpLoadPath);
             String md5 = LoadFileUtil.getMD5(localPath);
             LoadFileUtil.delFile(localPath);
 
             MaterialCutFrame cutFrame = new MaterialCutFrame();
-            cutFrame.setCode(md5);
+            cutFrame.setSignature(md5);
             cutFrame.setUrl(zeroFrameUrl);
-            cutFrame.setMaterialMd5(materialId);
-            cutFrame.setCutFrameIndex(0);
+            cutFrame.setVideoSignature(materialId);
+            cutFrame.setImageIndex(0);
             this.save(cutFrame);
 
 
@@ -77,6 +102,8 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
             input.put("Object", replaceUrl);
 
             request.setInput(input.toJSONString());
+
+
             // SnapshotConfig
             JSONObject snapshotConfig = new JSONObject();
             // SnapshotConfig->OutputFile
@@ -89,10 +116,11 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
 
             snapshotConfig.put("OutputFile", output.toJSONString());
             // SnapshotConfig->Time
-            snapshotConfig.put("Time", "3");
+            Integer time = ((secondDuration.intValue() - 2) / 14); // 时长 / 14 == 间隔时间
+            snapshotConfig.put("Time", 2000);
             // SnapshotConfig->Interval/Num
-            snapshotConfig.put("Interval", "2");
-            snapshotConfig.put("Num", "9");
+            snapshotConfig.put("Interval", time);
+            snapshotConfig.put("Num", "14");
             // SnapshotConfig->Width/Height
             snapshotConfig.put("Height", height);
             snapshotConfig.put("Width", width);
@@ -101,60 +129,86 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
             // PipelineId
             String pipelineId = MpsUtils.getPipelineId(client);
             request.setPipelineId(pipelineId);
-            // call api
-            SubmitSnapshotJobResponse response;
-            response = client.getAcsResponse(request);
-            for (int i = 0; i < 100; i++) {
-                Thread.sleep(5 * 1000L);
-                QuerySnapshotJobListRequest request1 = new QuerySnapshotJobListRequest();
-                request1.setSnapshotJobIds(response.getSnapshotJob().getId());
-                QuerySnapshotJobListResponse response1 = client.getAcsResponse(request1);
-                String s = JSON.toJSONString(response1);
-                JSONObject jsonObject = JSONObject.parseObject(s);
-                if (jsonObject == null) {
-                    continue;
-                }
-                JSONObject json = (JSONObject) jsonObject.getJSONArray("snapshotJobList").get(0);
-                String state = json.getString("state");
-                if (null == state || !"Success".equals(state)) {
-                    continue;
-                }
-                Integer count = json.getInteger("count");
-                for (int j = 1; j <= count; j++) {
-                    String urlStr = "";
-                    if (j < 10) {
-                        urlStr = String.format(
-                                "https://%s.%s.aliyuncs.com/" + ossOutputObject1 + "output_0000" + j + ".jpg",
-                                ossBucket,
-                                ossLocation);
-                    } else if (j < 100) {
-                        urlStr = String.format(
-                                "https://%s.%s.aliyuncs.com/" + ossOutputObject1 + "output_000" + j + ".jpg",
-                                ossBucket,
-                                ossLocation);
-                    } else if (j > 100) {
-                        urlStr = String.format(
-                                "https://%s.%s.aliyuncs.com/" + ossOutputObject1 + "output_00" + j + ".jpg",
-                                ossBucket,
-                                ossLocation);
-                    }
-                    String cutFramePath = LoadFileUtil.downLoadFromUrl(urlStr, "D:\\tets1");
-                    String cutFrameMd5 = LoadFileUtil.getMD5(cutFramePath);
-                    LoadFileUtil.delFile(cutFramePath);
-                    cutFrame = new MaterialCutFrame();
-                    cutFrame.setCode(cutFrameMd5);
-                    cutFrame.setUrl(urlStr);
-                    cutFrame.setMaterialMd5(materialId);
-                    cutFrame.setCutFrameIndex(j);
-                    this.save(cutFrame);
+            SubmitSnapshotJobResponse response = client.getAcsResponse(request);
+            String jobId = response.getSnapshotJob().getId();
+            MaterialCutFrameTask cutFrameTask = new MaterialCutFrameTask();
+            cutFrameTask.setJobStatus(0);
+            cutFrameTask.setJobId(jobId);
+            cutFrameTask.setVideoSignature(materialId);
+            cutFrameTaskService.save(cutFrameTask);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+
+
+    }
+
+
+    @Override
+    public void loadCutFrame(String jobId, String videoSignature) {
+        try {
+            DefaultProfile profile = DefaultProfile.getProfile(
+                    "cn-beijing",
+                    "LTAIbNbqWzSOklQV",
+                    "1rkPz7JNoXk8sJevPaeYHWqfkQXBGh");
+            IAcsClient client = new DefaultAcsClient(profile);
+
+            QuerySnapshotJobListRequest request = new QuerySnapshotJobListRequest();
+            request.setSnapshotJobIds(jobId);
+            QuerySnapshotJobListResponse response = client.getAcsResponse(request);
+            JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(response));
+            if (jsonObject == null) {
+                return;
+            }
+            JSONObject json = (JSONObject) jsonObject.getJSONArray("snapshotJobList").get(0);
+            String state = json.getString("state");
+            if (null == state || !"Success".equals(state)) {
+                return;
+            }
+            String loadImage = "cutFrame/" + videoSignature + "/";
+
+            Integer count = json.getInteger("count");
+            for (int j = 1; j <= count; j++) {
+                String urlStr = null;
+                if (j < 10) {
+                    urlStr = String.format(
+                            OssConstant.formatUrl + loadImage + "output_0000" + j + ".jpg",
+                            ossBucket,
+                            ossLocation);
+                } else if (j < 100) {
+                    urlStr = String.format(
+                            OssConstant.formatUrl + loadImage + "output_000" + j + ".jpg",
+                            ossBucket,
+                            ossLocation);
+                } else if (j > 100) {
+                    urlStr = String.format(
+                            OssConstant.formatUrl + loadImage + "output_00" + j + ".jpg",
+                            ossBucket,
+                            ossLocation);
                 }
-                break;
+                String cutFramePath = LoadFileUtil.downLoadFromUrl(urlStr, imageUpLoadPath);
+                String cutFrameMd5 = LoadFileUtil.getMD5(cutFramePath);
+
+                MaterialCutFrame cutFrame = new MaterialCutFrame();
+                cutFrame.setSignature(cutFrameMd5);
+                cutFrame.setUrl(urlStr);
+                cutFrame.setVideoSignature(videoSignature);
+                cutFrame.setImageIndex(j);
+                this.save(cutFrame);
+                LoadFileUtil.delFile(cutFramePath);
+
             }
+
+            QueryWrapper<MaterialCutFrameTask> updateQueryWrapper = new QueryWrapper<>();
+            updateQueryWrapper.eq("job_id", jobId);
+            updateQueryWrapper.eq("video_signature", videoSignature);
+            MaterialCutFrameTask updateTask = new MaterialCutFrameTask();
+            updateTask.setJobStatus(1);
+            cutFrameTaskService.update(updateTask, updateQueryWrapper);
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error(e.getMessage());
         }
 
-
     }
 
 

+ 19 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameTaskServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
+import cn.com.ctop.common.module.mapper.MaterialCutFrameTaskMapper;
+import cn.com.ctop.common.module.service.IMaterialCutFrameTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 截帧 任务表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-06-01
+ */
+@Service
+public class MaterialCutFrameTaskServiceImpl extends ServiceImpl<MaterialCutFrameTaskMapper, MaterialCutFrameTask> implements IMaterialCutFrameTaskService {
+
+}

+ 20 - 15
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -51,6 +51,9 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
     private IVideoWatermarkTaskService videoWatermarkTaskService;
     @Autowired
     private MaterialInfoMapper materialInfoMapper;
+    @Autowired
+    private MaterialParameterMapper materialParameterMapper;
+
     @Value("${oss.replace.replace-value}")
     private String replaceValue;
     @Value("${oss.replace.replace-old-value}")
@@ -324,9 +327,6 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
     }
 
 
-    @Autowired
-    private MaterialParameterMapper materialParameterMapper;
-
     @Override
     public void getFile(MaterialInfo materialInfo) {
         uploadExecutorService.submit(new Runnable() {
@@ -362,6 +362,22 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                         // 视频高
                         String height = String.valueOf(m.getVideo().getSize().getHeight());
                         materialParameter.setHeight(height);
+
+
+                        Thread thread = new Thread() {
+                            @Override
+                            public void run() {
+                                try {
+                                    log.info("开始抽帧");
+                                    materialCutFrameService.getCutFrame(url, materialInfo.getCode(), secondDuration, height, width);
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        };
+                        thread.start();
+
+
                         fis = new FileInputStream(file);
                         FileChannel fc = fis.getChannel();
                         BigDecimal fileSize = new BigDecimal(fc.size());
@@ -394,18 +410,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                         }
                     }
 
-                            /*Thread thread = new Thread() {
-                                @Override
-                                public void run() {
-                                    try {
-                                        Thread.sleep(5 * 1000);
-                                        materialCutFrameService.getCutFrame(url, materialInfo.getCode(), height, width);
-                                    } catch (Exception e) {
-                                        e.printStackTrace();
-                                    }
-                                }
-                            };
-                            thread.start();*/
+                    /* */
 
                        /* } catch (Exception e) {
                             e.printStackTrace();

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouImageGetMapper.java

@@ -17,4 +17,6 @@ public interface KuaiShouImageGetMapper extends BaseMapper<KuaiShouImageGet> {
     void replaceBatch(@Param(value = "images") List<KuaiShouImageGet> imagesGets);
 
     String getUrlByCode(String signature);
+
+    String getCutFrameUrlByCode(String signature);
 }

+ 6 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouImageGetMapper.xml

@@ -40,7 +40,13 @@
         select url from ctop_material_image_info
         where  code = #{signature}
         limit 1
+    </select>
 
+    <select id="getCutFrameUrlByCode" resultType="java.lang.String">
+        select url from ctop_material_cut_frame
+        where  signature = #{signature}
+        limit 1
     </select>
 
+
 </mapper>

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

@@ -1,9 +1,8 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouImageGetMapper;
-import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouVideoGetMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +28,14 @@ public class KuaiShouImageGetServiceImpl extends ServiceImpl<KuaiShouImageGetMap
 
     @Override
     public String getUrlByCode(String signature) {
-        return imageGetMapper.getUrlByCode(signature);
+        String url = imageGetMapper.getUrlByCode(signature);
+        if (!Check.isNull(url)) {
+            return url;
+        } else {
+            return imageGetMapper.getCutFrameUrlByCode(signature);
+        }
+
+
     }
 
 }