wwl 3 years ago
parent
commit
5b3b6e3233

+ 13 - 0
zzjs-admin/src/main/java/com/miaxis/pc/controller/teachingVideo/TeachingVideoInfoController.java

@@ -13,6 +13,7 @@ import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -71,6 +72,7 @@ public class TeachingVideoInfoController extends BaseController {
         return teachingVideoInfoService.saveTeachingVideo(teachingVideoInfo);
     }
 
+
     /**
      * 修改教学视频
      */
@@ -82,6 +84,17 @@ public class TeachingVideoInfoController extends BaseController {
         return teachingVideoInfoService.updateTeachingVideoById(teachingVideoInfo);
     }
 
+    /**
+     * 封面上传
+     */
+    @Log(title = "教学视频", businessType = BusinessTypeEnum.INSERT)
+    @PutMapping("/coverUp")
+    @ApiOperation("封面上传")
+    public Response coverUp(MultipartFile coverFile,
+                            @ApiParam(name = "fileId",value = "云点播fileId") @RequestParam("fileId") String fileId){
+        return teachingVideoInfoService.coverUp(fileId,coverFile);
+    }
+
     /**
      * 删除教学视频
      */

+ 24 - 0
zzjs-admin/src/test/java/com/miaxis/test/VodTest.java

@@ -7,6 +7,10 @@ import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.vod.v20180717.VodClient;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosRequest;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosResponse;
+import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoRequest;
+import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoResponse;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.FileUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Value;
@@ -14,6 +18,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.io.File;
 
 @SpringBootTest(classes = ZzjsApplication.class)
 @RunWith(SpringRunner.class)
@@ -59,6 +64,25 @@ public class VodTest {
 
 
 
+    @Test
+    public void test5(){
+        try{
+            String docUploadPath = "C:\\Users\\wwl\\Desktop\\timg.jpg";
+            File file = new File(docUploadPath);
+            byte[] refereeFileOriginalBytes = FileUtils.readFileToByteArray(file);
+            byte[] refereeFileBase64Bytes = Base64.encodeBase64(refereeFileOriginalBytes);
+            String UpFile = new String(refereeFileBase64Bytes, "UTF-8");
+
+            ModifyMediaInfoRequest req = new ModifyMediaInfoRequest();
+            req.setFileId("3701925920473528049");
+            req.setCoverData(UpFile);
+
+            ModifyMediaInfoResponse resp = vodClient.ModifyMediaInfo(req);
+            System.out.println(ModifyMediaInfoResponse.toJsonString(resp));
+        } catch (Exception e) {
+            System.out.println(e.toString());
+        }
+    }
 
 
 }

+ 0 - 4
zzjs-service/src/main/java/com/miaxis/teachingVideo/domain/TeachingVideoInfo.java

@@ -67,10 +67,6 @@ public class TeachingVideoInfo extends BaseBusinessEntity {
     @ApiModelProperty(value = "云点播视频fileId")
     private String vodVideoFileId;
 
-    @TableField("vod_cover_file_id")
-    @ApiModelProperty(value = "云点播视频封面fileId")
-    private String vodCoverFileId;
-
     @TableField("shelf_status")
     @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
     private Integer shelfStatus;

+ 2 - 5
zzjs-service/src/main/java/com/miaxis/teachingVideo/dto/TeachingVideoInfoDto.java

@@ -1,6 +1,5 @@
 package com.miaxis.teachingVideo.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -23,17 +22,15 @@ public class TeachingVideoInfoDto implements Serializable {
     @ApiModelProperty(value = "视频文件id")
     private String videoFileId;
 
-    @ApiModelProperty(value = "封面文件id")
-    private String coverFileId;
+    @ApiModelProperty(value = "封面图片id")
+    private Long coverFileId;
 
     @ApiModelProperty(value = "视频标题")
     private String title;
 
-    @TableField("video_describe")
     @ApiModelProperty(value = "视频描述")
     private String videoDescribe;
 
-    @TableField("teaching_video_type_id")
     @ApiModelProperty(value = "教学视频分类id (关联teaching_video_type_info表)")
     private Long teachingVideoTypeId;
 

+ 9 - 0
zzjs-service/src/main/java/com/miaxis/teachingVideo/service/ITeachingVideoInfoService.java

@@ -5,6 +5,7 @@ import com.miaxis.common.core.domain.Response;
 import com.miaxis.teachingVideo.domain.TeachingVideoInfo;
 import com.miaxis.teachingVideo.dto.TeachingVideoInfoDto;
 import com.miaxis.teachingVideo.vo.TeachingVideoInfoVo;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -81,4 +82,12 @@ public interface ITeachingVideoInfoService extends IService<TeachingVideoInfo> {
      * @return
      */
     Response searchTeachingVideoInfoByKeyword(String keyword);
+
+    /**
+     * 封面上传
+     * @param fileId
+     * @param coverFile
+     * @return
+     */
+    Response coverUp(String fileId, MultipartFile coverFile);
 }

+ 54 - 68
zzjs-service/src/main/java/com/miaxis/teachingVideo/service/impl/TeachingVideoInfoServiceImpl.java

@@ -23,14 +23,17 @@ import com.miaxis.teachingVideo.vo.TeachingVideoInfoVo;
 import com.tencentcloudapi.vod.v20180717.VodClient;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosRequest;
 import com.tencentcloudapi.vod.v20180717.models.DescribeMediaInfosResponse;
+import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoRequest;
+import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoResponse;
 import lombok.AllArgsConstructor;
+import org.apache.commons.codec.binary.Base64;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -83,64 +86,37 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
     public Response saveTeachingVideo(TeachingVideoInfoDto teachingVideoInfo) {
 
         try{
-            String mediaUrl="";//视频访问路径
-            String coverUrl="";//视频封面访问路径
-            String size="";//视频文件大小
-            String duration="";//视屏时长
-            Integer height=null;//视屏高度
-            Integer width=null;//视屏宽度
+            //教学视频详细信息
+            TeachingVideoInfo videoInfo = new TeachingVideoInfo();
+            BeanUtils.copyProperties(teachingVideoInfo,videoInfo);
 
             //根据fileId获取云点播视频信息
             DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
-            String[] fileId = {teachingVideoInfo.getVideoFileId(),teachingVideoInfo.getCoverFileId()};
+            String[] fileId = {teachingVideoInfo.getVideoFileId()};
             String[] filter = {"basicInfo","metaData"};
             req.setFileIds(fileId);
             req.setFilters(filter);
             DescribeMediaInfosResponse resp = vodClient.DescribeMediaInfos(req);
             JSONObject jsonObject = JSONObject.parseObject(DescribeMediaInfosResponse.toJsonString(resp));
             JSONArray mediaInfoSetArr = (JSONArray)jsonObject.get("MediaInfoSet");
+            JSONObject mediaInfoSetObj = (JSONObject)mediaInfoSetArr.get(0);
+            JSONObject basicInfo = (JSONObject)mediaInfoSetObj.get("BasicInfo");
+            JSONObject metaData = (JSONObject)mediaInfoSetObj.get("MetaData");
 
-            List<JSONObject> jsonObjects = mediaInfoSetArr.toJavaList(JSONObject.class);
-            for (JSONObject object : jsonObjects) {
-
-                //视频信息
-                if (object.get("FileId").equals(teachingVideoInfo.getVideoFileId())){
-                    JSONObject videoBasicInfo = (JSONObject)object.get("BasicInfo");
-                    JSONObject videoMetaData = (JSONObject)object.get("MetaData");
-
-                    //获取视频基础信息
-                    mediaUrl = (String)videoBasicInfo.get("MediaUrl");
-                    size = String.valueOf(videoMetaData.get("Size"));
-                    duration =  String.valueOf(videoMetaData.get("Duration"));
-                    height =  (Integer)videoMetaData.get("Height");
-                    width =  (Integer)videoMetaData.get("Width");
-                }else{ //封面信息
-                    JSONObject coverBasicInfo = (JSONObject)object.get("BasicInfo");
-                    coverUrl = (String)coverBasicInfo.get("CoverUrl");
-                }
-            }
+            //获取视频、封面基础信息
+            String mediaUrl = (String)basicInfo.get("MediaUrl");//视频访问路径
+            String size = String.valueOf(metaData.get("Size"));//视频文件大小
+            String duration =  String.valueOf(metaData.get("Duration"));//视屏时长
+            Integer height =  (Integer)metaData.get("Height");//视屏高度
+            Integer width =  (Integer)metaData.get("Width");//视屏宽度
 
-            //保存视频、封面文件信息
             FileInfo media = new FileInfo();
             media.setFileType(FileUploadTypeEnum.STUDY_MOVIE.getFileType());
             media.setFileUrl(mediaUrl);
             media.setRemark(FileUploadTypeEnum.STUDY_MOVIE.getInfo());
-
-            FileInfo cover = new FileInfo();
-            cover.setFileType(FileUploadTypeEnum.STUDY_MOVIE.getFileType());
-            cover.setFileUrl(coverUrl);
-            cover.setRemark("视频封面");
-
             fileInfoService.save(media);
-            fileInfoService.save(cover);
 
-            //保存教学视频详细信息
-            TeachingVideoInfo videoInfo = new TeachingVideoInfo();
             videoInfo.setFileId(media.getFileId());
-            videoInfo.setCoverFileId(cover.getFileId());
-            videoInfo.setTitle(teachingVideoInfo.getTitle());
-            videoInfo.setVideoDescribe(teachingVideoInfo.getVideoDescribe());
-            videoInfo.setTeachingVideoTypeId(teachingVideoInfo.getTeachingVideoTypeId());
             videoInfo.setVideoDuration(duration);
             BigDecimal decimalSize = BigDecimal.valueOf(Double.valueOf(size))
                     .divide(BigDecimal.valueOf(1024), 3, BigDecimal.ROUND_HALF_UP)
@@ -149,7 +125,6 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
             videoInfo.setVideoHeight(height);
             videoInfo.setVideoWidth(width);
             videoInfo.setVodVideoFileId(teachingVideoInfo.getVideoFileId());
-            videoInfo.setVodCoverFileId(teachingVideoInfo.getCoverFileId());
             teachingVideoInfoMapper.insert(videoInfo);
 
             return Response.success();
@@ -172,7 +147,7 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
             TeachingVideoInfo info = new TeachingVideoInfo();
             BeanUtils.copyProperties(teachingVideoInfo,info);
 
-            //判断视频是否修改
+            //判断文件id是否修改
             TeachingVideoInfo videoInfo = this.getById(teachingVideoInfo.getId());
             if (!teachingVideoInfo.getVideoFileId().equals(videoInfo.getVodVideoFileId())){
                 DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
@@ -210,31 +185,6 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
                 info.setVideoHeight(height);
                 info.setVideoWidth(width);
                 info.setVodVideoFileId(teachingVideoInfo.getVideoFileId());
-                info.setVodCoverFileId(teachingVideoInfo.getCoverFileId());
-            }
-
-            //判断封面是否修改
-            if (!teachingVideoInfo.getCoverFileId().equals(videoInfo.getVodCoverFileId())){
-                DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
-                String[] fileId = {teachingVideoInfo.getCoverFileId()};
-                String[] filter = {"basicInfo","metaData"};
-                req.setFileIds(fileId);
-                req.setFilters(filter);
-                DescribeMediaInfosResponse resp = vodClient.DescribeMediaInfos(req);
-                JSONObject jsonObject = JSONObject.parseObject(DescribeMediaInfosResponse.toJsonString(resp));
-                JSONArray mediaInfoSetArr = (JSONArray)jsonObject.get("MediaInfoSet");
-                JSONObject mediaInfoSetObj = (JSONObject)mediaInfoSetArr.get(0);
-                JSONObject basicInfo = (JSONObject)mediaInfoSetObj.get("BasicInfo");
-                String coverUrl = (String)basicInfo.get("CoverUrl");//封面访问路径
-
-                //保存封面文件信息
-                FileInfo cover = new FileInfo();
-                cover.setFileType(FileUploadTypeEnum.STUDY_MOVIE.getFileType());
-                cover.setFileUrl(coverUrl);
-                cover.setRemark("视频封面");
-                fileInfoService.save(cover);
-
-                info.setCoverFileId(cover.getFileId());
             }
 
             teachingVideoInfoMapper.updateById(info);
@@ -327,5 +277,41 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
         return Response.success(teachingVideoInfoMapper.searchTeachingVideoInfoByKeyword(keyword));
     }
 
+    /**
+     * 封面上传
+     * @param fileId
+     * @param coverFile
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Response coverUp(String fileId, MultipartFile coverFile) {
+        try{
+            byte[] refereeFileBase64Bytes = Base64.encodeBase64(coverFile.getBytes());
+            String UpFile = new String(refereeFileBase64Bytes, "UTF-8");
+            System.out.println(UpFile);
+
+            ModifyMediaInfoRequest req = new ModifyMediaInfoRequest();
+            req.setFileId(fileId);
+            req.setCoverData(UpFile);
+
+            ModifyMediaInfoResponse resp = vodClient.ModifyMediaInfo(req);
+            JSONObject jsonObject = JSONObject.parseObject(DescribeMediaInfosResponse.toJsonString(resp));
+            String coverUrl = (String) jsonObject.get("CoverUrl");//封面访问路径
+
+            //保存封面文件信息
+            FileInfo cover = new FileInfo();
+            cover.setFileType(FileUploadTypeEnum.STUDY_MOVIE.getFileType());
+            cover.setFileUrl(coverUrl);
+            cover.setRemark("视频封面");
+            fileInfoService.save(cover);
+
+            return Response.success(cover);
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+
+    }
+
 
 }

+ 0 - 5
zzjs-service/src/main/java/com/miaxis/teachingVideo/vo/TeachingVideoInfoVo.java

@@ -2,7 +2,6 @@ package com.miaxis.teachingVideo.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -67,10 +66,6 @@ public class TeachingVideoInfoVo extends BaseBusinessEntity {
     @ApiModelProperty(value = "云点播视频fileId")
     private String vodVideoFileId;
 
-    @TableField("vod_cover_file_id")
-    @ApiModelProperty(value = "云点播视频封面fileId")
-    private String vodCoverFileId;
-
     @TableField("shelf_status")
     @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
     private Integer shelfStatus;

+ 0 - 3
zzjs-service/src/main/resources/mapper/teachingVideo/TeachingVideoInfoMapper.xml

@@ -18,7 +18,6 @@
         <result property="status"    column="status"    />
         <result property="videoWidth"    column="video_width"    />
         <result property="vodVideoFileId"    column="vod_video_file_id"    />
-        <result property="vodCoverFileId"    column="vod_cover_file_id"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
     </resultMap>
@@ -43,7 +42,6 @@
         f1.file_url as fileUrl,
         f2.file_url as coverFileUrl,
         vi.vod_video_file_id,
-        vi.vod_cover_file_id,
         vi.shelf_status,
         vi.status
         from teaching_video_info vi
@@ -79,7 +77,6 @@
         f1.file_url as fileUrl,
         f2.file_url as coverFileUrl,
         vi.vod_video_file_id,
-        vi.vod_cover_file_id,
         vi.shelf_status,
         vi.status
         from teaching_video_info vi