yumeng 5 years ago
parent
commit
27522e2151

+ 11 - 13
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java

@@ -1,24 +1,21 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.service.ISysRoleService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
-import cn.com.ctop.common.module.utils.SpringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.modules.ctop.entity.Project;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.system.entity.SysUser;
-import org.openqa.selenium.By;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -43,7 +40,8 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
     @Autowired
     private UserAllocationMapper userAllocationMapper;
 
-    private static final String[] PERMISSION_VIEW_PROJECT={"admin","saleDirector","sale","saleAssistant","saleAm"};
+    private static final String[] PERMISSION_VIEW_PROJECT = {"admin", "saleDirector", "sale", "saleAssistant", "saleAm"};
+
     @Override
     public void addMember(SysUser sysUser, Project project) {
         Map<String, Object> map = new HashMap<>();
@@ -103,13 +101,13 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INT);
         mediaList.add(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INSIDE_INT);
         //查询登录账号下的项目
-        List<ProjectMember> projectMemberList = this.queryProjectMemberBy(userId,mediaList);
+        List<ProjectMember> projectMemberList = this.queryProjectMemberBy(userId, mediaList);
         if (projectMemberList.isEmpty()) {
             return result;
         }
         projectMemberList.forEach(ProjectMember -> {
-            Map<String, Object> temp=this.queryAccountByProjectId(ProjectMember);
-            if(temp!=null){
+            Map<String, Object> temp = this.queryAccountByProjectId(ProjectMember);
+            if (temp != null) {
                 result.add(temp);
             }
         });
@@ -124,9 +122,9 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         queryWrapper.eq("project_id", projectMember.getProjectId());
         queryWrapper.isNotNull("account_id");
         List<UserAllocation> userAllocations = userAllocationMapper.selectList(queryWrapper);
-        if(userAllocations.isEmpty()){
-            temp=null;
-        }else {
+        if (userAllocations.isEmpty()) {
+            temp = null;
+        } else {
             temp.put("account", userAllocations);
         }
         return temp;
@@ -134,9 +132,9 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
 
     private List<ProjectMember> queryProjectMemberBy(String userId, List<Integer> mediaIds) {
         String roleCode = memberMapper.getRoleCodeByUserId(userId);
-        if(ArrayUtils.contains(PERMISSION_VIEW_PROJECT,roleCode)){
+        if (ArrayUtils.contains(PERMISSION_VIEW_PROJECT, roleCode)) {
             return memberMapper.adminProjects(mediaIds);
         }
-        return memberMapper.queryProjectMemberByUserId(userId,mediaIds);
+        return memberMapper.queryProjectMemberByUserId(userId, mediaIds);
     }
 }

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

@@ -26,7 +26,7 @@ public interface IMaterialCutFrameService extends IService<MaterialCutFrame> {
 
     void loadCosCutFrame(String jobId, String videoSignature);  //腾讯云抽帧任务状态查询以及数据入库
 
-    void getTencentCutFrame(String materialId, Map<String, Object> coverMap);
+    void getTencentCutFrame(String videoUrl,String materialId, String path,String coveUrl);
 
     MaterialCutFrame getCutFrameByCode(String code);
 }

+ 22 - 11
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java

@@ -6,10 +6,7 @@ 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.CosUtil;
-import cn.com.ctop.common.module.utils.LoadFileUtil;
-import cn.com.ctop.common.module.utils.MpsUtils;
+import cn.com.ctop.common.module.utils.*;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -29,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.util.List;
 import java.util.Map;
@@ -320,8 +318,12 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
 
 
     @Override
-    public void getTencentCutFrame(String materialId, Map<String, Object> coverMap) {
+    public void getTencentCutFrame(String videoUrl, String materialId, String path, String coveUrl) {
         try {
+            if (Check.isNull(materialId) || Check.isNull(path)) {
+                return;
+            }
+
             QueryWrapper<MaterialCutFrame> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("video_signature", materialId);
             queryWrapper.last("limit 1");
@@ -330,13 +332,22 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
                 log.info("已存推荐封面");
                 return;
             }
-            if (Check.isNullMap(coverMap) || coverMap.size() == 1) {
-                log.info("腾讯云抽帧失败,code:{}", materialId);
-                return;
-            }
-            for (int i = 0; i <= 14; i++) {
+
+            // 添加首帧
+            String coverCutFramePath = LoadFileUtil.downLoadFromUrl(coveUrl, imageUpLoadPath);
+            String CutFrameMd5 = LoadFileUtil.getMD5(coverCutFramePath);
+            MaterialCutFrame coveCutFrame = new MaterialCutFrame();
+            coveCutFrame.setSignature(CutFrameMd5);
+            coveCutFrame.setUrl(coveUrl);
+            coveCutFrame.setVideoSignature(materialId);
+            coveCutFrame.setImageIndex(0);
+            this.save(coveCutFrame);
+            LoadFileUtil.delFile(coverCutFramePath);
+            // 请求从数据接口 获取其余14张截图
+            Map<String, Object> coverMap = CloudVideoProcessUtil.videoCutFrameHandle(URLDecoder.decode(videoUrl).replace("https://media-1301855440.cos.ap-chongqing.myqcloud.com/", ""), path);
+            for (int i = 1; i <= 14; i++) {
                 String url = (String) coverMap.get(String.valueOf(i));
-                if(!Check.isNull(url)){
+                if (!Check.isNull(url)) {
                     String cutFramePath = LoadFileUtil.downLoadFromUrl(url, imageUpLoadPath);
                     String cutFrameMd5 = LoadFileUtil.getMD5(cutFramePath);
                     MaterialCutFrame cutFrame = new MaterialCutFrame();

+ 7 - 10
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -476,31 +476,29 @@ 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");
+
+                String coverUrl = "";
+                // Map<String, Object> stringObjectMap = CloudVideoProcessUtil.videoCutFrameHandle(URLDecoder.decode(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);
+                            materialCutFrameService.getTencentCutFrame(info.getUrl(), code, loadImage, coverUrl);
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
                     }
                 };
                 thread.start();
-            } else {
-                coverUrl = cutFrame.getUrl();
             }
-            info.setCoverUrl(coverUrl);
+            //  info.setCoverUrl(coverUrl);
             this.save(info);
-
-
             JSONArray imageArr = json.getJSONArray("imageArr");
             if (!Check.isNull(imageArr)) {
                 JSONObject imageJson = new JSONObject();
@@ -548,7 +546,6 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             }
 
             getFile(info);
-
             ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS.getCode());
         } catch (Exception e) {
             ResultMapUtils.setResultMap(resultMap, StatusCode.MATERIAL_UPLOAD_FAIL.getCode());