Переглянути джерело

Merge branch 'master' of ssh://192.168.8.213:10022/miaxis/zzjs

Althars123 3 роки тому
батько
коміт
f1455a9ef9

+ 61 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/teachingDsp/AppTeachingDspInfoController.java

@@ -0,0 +1,61 @@
+package com.miaxis.app.controller.teachingDsp;
+
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.teachingDsp.domain.TeachingDspInfo;
+import com.miaxis.teachingDsp.service.ITeachingDspInfoService;
+import com.miaxis.teachingDsp.vo.TeachingDspInfoVo;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 【学车短视频】Controller
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping(Constants.OPEN_PREFIX+"/teachingDsp/dsp")
+@Api(tags={"【小程序-学车短视频】"})
+public class AppTeachingDspInfoController extends BaseController{
+    @Autowired
+    private ITeachingDspInfoService teachingDspInfoService;
+
+    /**
+     * 查询学车短视频列表
+     */
+    @GetMapping("/list")
+    @ApiOperation("查询学车短视频列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<TeachingDspInfoVo> list(@ModelAttribute TeachingDspInfo teachingDspInfo){
+        startPage();
+        List<TeachingDspInfoVo> list = teachingDspInfoService.selectTeachingDspInfoList(teachingDspInfo);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 获取学车短视频详细信息
+     */
+    @GetMapping(value = "/{id}")
+    @ApiOperation("获取学车短视频详细信息")
+    public Response<TeachingDspInfoVo> getInfo(
+            @ApiParam(name = "id", value = "学车短视频参数", required = true)
+            @PathVariable("id") Long id
+    ){
+        return teachingDspInfoService.getTeachingDspDetailsById(id);
+    }
+
+
+}

+ 2 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/teachingVideo/AppletTeachingVideoInfoController.java

@@ -1,8 +1,10 @@
 package com.miaxis.app.controller.teachingVideo;
 package com.miaxis.app.controller.teachingVideo;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.Response;
+import com.miaxis.teachingVideo.domain.TeachingVideoTypeInfo;
 import com.miaxis.teachingVideo.dto.TeachingVideoInfoTypeIdDto;
 import com.miaxis.teachingVideo.dto.TeachingVideoInfoTypeIdDto;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoTypeInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoTypeInfoService;

+ 153 - 0
zzjs-admin/src/main/java/com/miaxis/pc/controller/teachingDsp/TeachingDspInfoController.java

@@ -0,0 +1,153 @@
+package com.miaxis.pc.controller.teachingDsp;
+
+import com.miaxis.common.annotation.Log;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.StringUtils;
+import com.miaxis.common.utils.poi.ExcelUtil;
+import com.miaxis.teachingDsp.domain.TeachingDspInfo;
+import com.miaxis.teachingDsp.dto.TeachingDspInfoDto;
+import com.miaxis.teachingDsp.service.ITeachingDspInfoService;
+import com.miaxis.teachingDsp.vo.TeachingDspInfoVo;
+import com.miaxis.teachingVideo.dto.TeachingVideoInfoDto;
+import com.miaxis.teachingVideo.vo.TeachingVideoInfoVo;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 【学车短视频】Controller
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/pc/teachingDsp/dsp")
+@Api(tags={"【pc-学车短视频】"})
+public class TeachingDspInfoController extends BaseController{
+    @Autowired
+    private ITeachingDspInfoService teachingDspInfoService;
+
+    /**
+     * 查询学车短视频列表
+     */
+    @PreAuthorize("@ss.hasPermi('teachingDsp:dsp:list')")
+    @GetMapping("/list")
+    @ApiOperation("查询学车短视频列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<TeachingDspInfoVo> list(@ModelAttribute TeachingDspInfo teachingDspInfo){
+        startPage();
+        List<TeachingDspInfoVo> list = teachingDspInfoService.selectTeachingDspInfoList(teachingDspInfo);
+        return toResponsePageInfo(list);
+    }
+
+
+
+
+
+    /**
+     * 新增学车短视频
+     */
+    @PreAuthorize("@ss.hasPermi('teachingDsp:info:add')")
+    @Log(title = "新增学车短视频", businessType = BusinessTypeEnum.INSERT)
+    @PostMapping
+    @ApiOperation("新增教学视频")
+    public Response add(@RequestBody TeachingDspInfoDto teachingDspInfoDto){
+        return teachingDspInfoService.saveTeachingDsp(teachingDspInfoDto);
+    }
+
+
+    /**
+     * 修改学车短视频
+     */
+    @PreAuthorize("@ss.hasPermi('teachingDsp:info:edit')")
+    @Log(title = "修改学车短视频", businessType = BusinessTypeEnum.UPDATE)
+    @PutMapping
+    @ApiOperation("修改学车短视频")
+    public Response edit(@RequestBody TeachingDspInfoDto teachingDspInfoDto){
+        return teachingDspInfoService.updateTeachingDspById(teachingDspInfoDto);
+    }
+
+
+    /**
+     * 删除学车短视频
+     */
+    @PreAuthorize("@ss.hasPermi('teachingDsp:dsp:remove')")
+    @Log(title = "学车短视频", businessType = BusinessTypeEnum.DELETE)
+	@DeleteMapping("/{ids}")
+    @ApiOperation("删除学车短视频")
+    public  Response<Integer> remove(
+            @ApiParam(name = "ids", value = "学车短视频ids参数", required = true)
+            @PathVariable Long[] ids
+    ){
+        return toResponse(teachingDspInfoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+    /**
+     * 上架短视频
+     */
+    @PreAuthorize("@ss.hasPermi('teachingVideo:info:putShelf')")
+    @Log(title = "上架短视频", businessType = BusinessTypeEnum.UPDATE)
+    @PutMapping("/putShelf/{ids}")
+    @ApiOperation("上架短视频")
+    public  Response putShelf(
+            @ApiParam(name = "ids", value = "教学视频ids参数", required = true) @PathVariable Long[] ids
+    ){
+        return teachingDspInfoService.removePutShelfByIds(ids);
+    }
+
+    /**
+     * 下架短视频
+     */
+    @PreAuthorize("@ss.hasPermi('teachingVideo:info:offShelf')")
+    @Log(title = "下架短视频", businessType = BusinessTypeEnum.UPDATE)
+    @PutMapping("/offShelf/{ids}")
+    @ApiOperation("下架短视频")
+    public  Response offShelf(
+            @ApiParam(name = "ids", value = "教学视频ids参数", required = true) @PathVariable Long[] ids
+    ){
+        return teachingDspInfoService.removeOffShelfByIds(ids);
+    }
+
+
+    /**
+     * 短视频封面上传
+     */
+    @Log(title = "短视频封面上传", businessType = BusinessTypeEnum.INSERT)
+    @PutMapping("/coverUp")
+    @ApiOperation("短视频封面上传")
+    public Response coverUp(MultipartFile coverFile,
+                            @ApiParam(name = "fileId",value = "云点播fileId",required = true) @RequestParam("fileId") String fileId){
+        if (StringUtils.isEmpty(fileId)){
+            throw new CustomException("视频文件未上传");
+        }
+        return teachingDspInfoService.coverUp(fileId,coverFile);
+    }
+
+    /**
+     * 获取短视频详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('teachingDsp:info:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation("获取短视频详细信息")
+    public Response<TeachingDspInfoVo> getInfo(
+            @ApiParam(name = "id", value = "获取短视频参数", required = true)
+            @PathVariable("id") Long id
+    ){
+        return teachingDspInfoService.getTeachingDspDetailsById(id);
+    }
+
+}

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

@@ -111,7 +111,7 @@ public class TeachingVideoInfoController extends BaseController {
             @ApiParam(name = "ids", value = "教学视频ids参数", required = true)
             @ApiParam(name = "ids", value = "教学视频ids参数", required = true)
             @PathVariable Long[] ids
             @PathVariable Long[] ids
     ){
     ){
-        return teachingVideoInfoService.removeTeachingVideoByIds(ids);
+        return teachingVideoInfoService.removePutShelfByIds(ids);
     }
     }
 
 
 
 

+ 1 - 0
zzjs-common/src/main/java/com/miaxis/common/enums/FileUploadTypeEnum.java

@@ -12,6 +12,7 @@ public enum FileUploadTypeEnum
     CUSTOMER_TYPE(1, "customer", MimeTypeUtils.IMAGE_EXTENSION, "商户logo"),
     CUSTOMER_TYPE(1, "customer", MimeTypeUtils.IMAGE_EXTENSION, "商户logo"),
     CAR_BRAND(2, "car", MimeTypeUtils.IMAGE_EXTENSION, "汽车品牌logo"),
     CAR_BRAND(2, "car", MimeTypeUtils.IMAGE_EXTENSION, "汽车品牌logo"),
     STUDY_MOVIE(3, "study", MimeTypeUtils.MEDIA_EXTENSION, "学车视频"),
     STUDY_MOVIE(3, "study", MimeTypeUtils.MEDIA_EXTENSION, "学车视频"),
+    STUDY_DSP(4, "dsp", MimeTypeUtils.MEDIA_EXTENSION, "学车短视频"),
     OTHERS(99, "others", MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, "其他文件");
     OTHERS(99, "others", MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, "其他文件");
 
 
     private final Integer code;
     private final Integer code;

+ 99 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/domain/TeachingDspInfo.java

@@ -0,0 +1,99 @@
+package com.miaxis.teachingDsp.domain;
+
+import java.math.BigDecimal;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import lombok.Data;
+/**
+ * 学车短视频对象 teaching_dsp_info
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+@Data
+@TableName("teaching_dsp_info")
+@ApiModel(value = "TeachingDspInfo", description = "学车短视频对象 teaching_dsp_info")
+public class TeachingDspInfo extends BaseBusinessEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 视频文件id */
+    @Excel(name = "视频文件id")
+    @TableField("file_id")
+    @ApiModelProperty(value = "视频文件id")
+    private Long fileId;
+
+    /** 封面图片id */
+    @Excel(name = "封面图片id")
+    @TableField("cover_file_id")
+    @ApiModelProperty(value = "封面图片id")
+    private Long coverFileId;
+
+    /** 视频标题 */
+    @Excel(name = "视频标题")
+    @TableField("title")
+    @ApiModelProperty(value = "视频标题")
+    private String title;
+
+    /** 视频描述 */
+    @Excel(name = "视频描述")
+    @TableField("video_describe")
+    @ApiModelProperty(value = "视频描述")
+    private String videoDescribe;
+
+    /** 视频时长 */
+    @Excel(name = "视频时长")
+    @TableField("video_duration")
+    @ApiModelProperty(value = "视频时长")
+    private String videoDuration;
+
+    /** 视频大小(单位:MB) */
+    @Excel(name = "视频大小(单位:MB)", readConverterExp = "单=位:MB")
+    @TableField("video_size")
+    @ApiModelProperty(value = "视频大小(单位:MB)")
+    private BigDecimal videoSize;
+
+    /** 视频高度 */
+    @Excel(name = "视频高度")
+    @TableField("video_height")
+    @ApiModelProperty(value = "视频高度")
+    private Integer videoHeight;
+
+    /** 视频宽度 */
+    @Excel(name = "视频宽度")
+    @TableField("video_width")
+    @ApiModelProperty(value = "视频宽度")
+    private Integer videoWidth;
+
+    /** 云点播视频fileId */
+    @Excel(name = "云点播视频fileId")
+    @TableField("vod_video_file_id")
+    @ApiModelProperty(value = "云点播视频fileId")
+    private String vodVideoFileId;
+
+    /** 上架状态  0:已上架、1:未上架 */
+    @Excel(name = "上架状态  0:已上架、1:未上架")
+    @TableField("shelf_status")
+    @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
+    private Integer shelfStatus;
+
+    /** 状态  0:有效(默认)、1:失效 (伪删除) */
+    @Excel(name = "状态  0:有效(默认)、1:失效 (伪删除)", readConverterExp = "伪=删除")
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private String status;
+
+}

+ 35 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/dto/TeachingDspInfoDto.java

@@ -0,0 +1,35 @@
+package com.miaxis.teachingDsp.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 教学视频对象入参
+ * @author wwl
+ * @version 1.0
+ * @date 2021/7/2 14:25
+ */
+@Data
+@ApiModel(value = "TeachingDspInfoDto", description = "学车短视频对象入参")
+public class TeachingDspInfoDto implements Serializable {
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "视频文件id")
+    private String videoFileId;
+
+    @ApiModelProperty(value = "封面图片id")
+    private Long coverFileId;
+
+    @ApiModelProperty(value = "视频标题")
+    private String title;
+
+    @ApiModelProperty(value = "视频描述")
+    private String videoDescribe;
+
+
+}

+ 25 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/mapper/TeachingDspInfoMapper.java

@@ -0,0 +1,25 @@
+package com.miaxis.teachingDsp.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.teachingDsp.domain.TeachingDspInfo;
+import com.miaxis.teachingDsp.vo.TeachingDspInfoVo;
+
+import java.util.List;
+
+/**
+ * 学车短视频Mapper接口
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+public interface TeachingDspInfoMapper extends BaseMapper<TeachingDspInfo> {
+    /**
+     * 查询学车短视频列表
+     *
+     * @param teachingDspInfo 学车短视频
+     * @return 学车短视频集合
+     */
+    List<TeachingDspInfoVo> selectTeachingDspInfoList(TeachingDspInfo teachingDspInfo);
+
+    TeachingDspInfoVo getTeachingDspDetailsById(Long id);
+}

+ 71 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/service/ITeachingDspInfoService.java

@@ -0,0 +1,71 @@
+package com.miaxis.teachingDsp.service;
+
+import java.util.List;
+
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.teachingDsp.domain.TeachingDspInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.teachingDsp.dto.TeachingDspInfoDto;
+import com.miaxis.teachingDsp.vo.TeachingDspInfoVo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 学车短视频Service接口
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+public interface ITeachingDspInfoService extends IService<TeachingDspInfo>{
+    /**
+     * 查询学车短视频列表
+     *
+     * @param teachingDspInfo 学车短视频
+     * @return 学车短视频集合
+     */
+    public List<TeachingDspInfoVo> selectTeachingDspInfoList(TeachingDspInfo teachingDspInfo);
+
+
+    /**
+     * 上架教学视频
+     * @param ids
+     * @return
+     */
+    Response removePutShelfByIds(Long[] ids);
+
+    /**
+     * 下架教学视频
+     * @param ids
+     * @return
+     */
+    Response removeOffShelfByIds(Long[] ids);
+
+
+    /**
+     * 封面上传
+     * @param fileId
+     * @param coverFile
+     * @return
+     */
+    Response coverUp(String fileId, MultipartFile coverFile);
+
+    /**
+     * 新增学车短视频
+     * @param teachingDspInfoDto
+     * @return
+     */
+    Response saveTeachingDsp(TeachingDspInfoDto teachingDspInfoDto);
+
+    /**
+     * 修改学车短视频
+     * @param teachingDspInfoDto
+     * @return
+     */
+    Response updateTeachingDspById(TeachingDspInfoDto teachingDspInfoDto);
+
+    /**
+     * 根据ID获取学车短视频
+     * @param id
+     * @return
+     */
+    Response<TeachingDspInfoVo> getTeachingDspDetailsById(Long id);
+}

+ 236 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/service/impl/TeachingDspInfoServiceImpl.java

@@ -0,0 +1,236 @@
+package com.miaxis.teachingDsp.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.enums.FileUploadTypeEnum;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.bean.BeanUtils;
+import com.miaxis.file.domain.FileInfo;
+import com.miaxis.file.service.IFileInfoService;
+import com.miaxis.teachingDsp.domain.TeachingDspInfo;
+import com.miaxis.teachingDsp.dto.TeachingDspInfoDto;
+import com.miaxis.teachingDsp.mapper.TeachingDspInfoMapper;
+import com.miaxis.teachingDsp.service.ITeachingDspInfoService;
+import com.miaxis.teachingDsp.vo.TeachingDspInfoVo;
+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.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 学车短视频Service业务层处理
+ *
+ * @author miaxis
+ * @date 2021-12-09
+ */
+@Service
+@AllArgsConstructor
+public class TeachingDspInfoServiceImpl extends ServiceImpl<TeachingDspInfoMapper, TeachingDspInfo> implements ITeachingDspInfoService {
+
+    @Autowired
+    private TeachingDspInfoMapper teachingDspInfoMapper;
+
+    private final IFileInfoService fileInfoService;
+
+    private final VodClient vodClient;
+
+    /**
+     * 查询学车短视频列表
+     *
+     * @param teachingDspInfo 学车短视频
+     * @return 学车短视频
+     */
+    @Override
+    public List<TeachingDspInfoVo> selectTeachingDspInfoList(TeachingDspInfo teachingDspInfo){
+        return teachingDspInfoMapper.selectTeachingDspInfoList(teachingDspInfo);
+    }
+
+
+    /**
+     * 上架教学视频
+     * @param ids
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Response removePutShelfByIds(Long[] ids) {
+        for (Long id : ids) {
+            this.update(new UpdateWrapper<TeachingDspInfo>().set("shelf_status",0).eq("id",id));
+        }
+        return Response.success();
+    }
+
+    /**
+     * 下架教学视频
+     * @param ids
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Response removeOffShelfByIds(Long[] ids) {
+        for (Long id : ids) {
+            this.update(new UpdateWrapper<TeachingDspInfo>().set("shelf_status",1).eq("id",id));
+        }
+        return Response.success();
+    }
+
+    @Override
+    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_DSP.getFileType());
+            cover.setFileUrl(coverUrl);
+            cover.setRemark("视频封面");
+            fileInfoService.save(cover);
+
+            return Response.success(cover);
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+    }
+
+    @Override
+    public Response saveTeachingDsp(TeachingDspInfoDto teachingDspInfoDto) {
+        try{
+            //教学视频详细信息
+            TeachingDspInfo dspInfo = new TeachingDspInfo();
+            BeanUtils.copyProperties(teachingDspInfoDto,dspInfo);
+
+            //根据fileId获取云点播视频信息
+            DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
+            String[] fileId = {teachingDspInfoDto.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");
+
+            //获取视频、封面基础信息
+            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_DSP.getFileType());
+            media.setFileUrl(mediaUrl);
+            media.setRemark(FileUploadTypeEnum.STUDY_DSP.getInfo());
+            fileInfoService.save(media);
+
+            dspInfo.setFileId(media.getFileId());
+            dspInfo.setVideoDuration(duration);
+            BigDecimal decimalSize = BigDecimal.valueOf(Double.valueOf(size))
+                    .divide(BigDecimal.valueOf(1024), 3, BigDecimal.ROUND_HALF_UP)
+                    .divide(BigDecimal.valueOf(1024), 2, BigDecimal.ROUND_HALF_UP);
+            dspInfo.setVideoSize(decimalSize);
+            dspInfo.setVideoHeight(height);
+            dspInfo.setVideoWidth(width);
+            dspInfo.setVodVideoFileId(teachingDspInfoDto.getVideoFileId());
+            teachingDspInfoMapper.insert(dspInfo);
+
+            return Response.success();
+        } catch (Exception e) {
+            throw new CustomException("系统错误");
+        }
+    }
+
+    @Override
+    public Response updateTeachingDspById(TeachingDspInfoDto teachingDspInfoDto) {
+
+        try {
+            TeachingDspInfo dspInfo = new TeachingDspInfo();
+            BeanUtils.copyProperties(teachingDspInfoDto,dspInfo);
+
+            //判断文件id是否修改
+            TeachingDspInfo dspInfoDb = this.getById(teachingDspInfoDto.getId());
+            if (!teachingDspInfoDto.getVideoFileId().equals(dspInfoDb.getVodVideoFileId())){
+                DescribeMediaInfosRequest req = new DescribeMediaInfosRequest();
+                String[] fileId = {teachingDspInfoDto.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");
+
+                //获取视频、封面基础信息
+                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());
+                fileInfoService.save(media);
+
+                dspInfo.setFileId(media.getFileId());
+                dspInfo.setVideoDuration(duration);
+                BigDecimal decimalSize = BigDecimal.valueOf(Double.valueOf(size))
+                        .divide(BigDecimal.valueOf(1024), 3, BigDecimal.ROUND_HALF_UP)
+                        .divide(BigDecimal.valueOf(1024), 2, BigDecimal.ROUND_HALF_UP);
+                dspInfo.setVideoSize(decimalSize);
+                dspInfo.setVideoHeight(height);
+                dspInfo.setVideoWidth(width);
+                dspInfo.setVodVideoFileId(teachingDspInfoDto.getVideoFileId());
+            }
+
+            teachingDspInfoMapper.updateById(dspInfo);
+
+            return Response.success();
+        } catch (Exception e) {
+            throw new CustomException("系统错误");
+        }
+
+    }
+
+    /**
+     * 获取教学视频详细信息
+     * @param id
+     * @return
+     */
+    @Override
+    public Response<TeachingDspInfoVo> getTeachingDspDetailsById(Long id) {
+        TeachingDspInfoVo info = teachingDspInfoMapper.getTeachingDspDetailsById(id);
+        return Response.success(info);
+    }
+
+
+}

+ 71 - 0
zzjs-service/src/main/java/com/miaxis/teachingDsp/vo/TeachingDspInfoVo.java

@@ -0,0 +1,71 @@
+package com.miaxis.teachingDsp.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 学车短视频对象返回参
+ * @author zhangbin
+ * @version 1.0
+ * @date 2021/12/13 14:43
+ */
+@Data
+@ApiModel(value = "TeachingDspInfoVo", description = "学车短视频对象返回参")
+public class TeachingDspInfoVo extends BaseBusinessEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "视频文件访问地址")
+    private String fileUrl;
+
+    @ApiModelProperty(value = "封面图片访问地址")
+    private String coverFileUrl;
+
+    @TableField("title")
+    @ApiModelProperty(value = "视频标题")
+    private String title;
+
+    @TableField("video_describe")
+    @ApiModelProperty(value = "视频描述")
+    private String videoDescribe;
+
+    @TableField("video_duration")
+    @ApiModelProperty(value = "视频时长")
+    private String videoDuration;
+
+    @TableField("video_size")
+    @ApiModelProperty(value = "视频大小(单位:MB)")
+    private BigDecimal videoSize;
+
+    @TableField("video_width")
+    @ApiModelProperty(value = "视频宽度")
+    private Integer videoWidth;
+
+    @TableField("video_height")
+    @ApiModelProperty(value = "视频高度")
+    private Integer videoHeight;
+
+
+    @TableField("vod_video_file_id")
+    @ApiModelProperty(value = "云点播视频fileId")
+    private String vodVideoFileId;
+
+    @TableField("shelf_status")
+    @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
+    private Integer shelfStatus;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private String status;
+
+}

+ 85 - 0
zzjs-service/src/main/resources/mapper/teachingDsp/TeachingDspInfoMapper.xml

@@ -0,0 +1,85 @@
+<?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="com.miaxis.teachingDsp.mapper.TeachingDspInfoMapper">
+
+    <resultMap type="TeachingDspInfo" id="TeachingDspInfoResult">
+        <result property="id"    column="id"    />
+        <result property="fileId"    column="file_id"    />
+        <result property="coverFileId"    column="cover_file_id"    />
+        <result property="title"    column="title"    />
+        <result property="videoDescribe"    column="video_describe"    />
+        <result property="videoDuration"    column="video_duration"    />
+        <result property="videoSize"    column="video_size"    />
+        <result property="videoHeight"    column="video_height"    />
+        <result property="videoWidth"    column="video_width"    />
+        <result property="vodVideoFileId"    column="vod_video_file_id"    />
+        <result property="shelfStatus"    column="shelf_status"    />
+        <result property="status"    column="status"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectTeachingDspInfoVo">
+        select * from teaching_dsp_info
+    </sql>
+
+
+
+    <select id="selectTeachingDspInfoList" resultType="com.miaxis.teachingDsp.vo.TeachingDspInfoVo">
+        select
+        vi.id,
+        vi.title,
+        vi.video_describe,
+        vi.video_duration,
+        vi.video_size,
+        vi.video_width,
+        vi.video_height,
+        vi.create_time,
+        vi.update_time,
+        f1.file_url as fileUrl,
+        f2.file_url as coverFileUrl,
+        vi.vod_video_file_id,
+        vi.shelf_status,
+        vi.status
+        from teaching_dsp_info vi
+        LEFT JOIN file_info f1 on f1.file_id = vi.file_id
+        LEFT JOIN file_info f2 on f2.file_id = vi.cover_file_id
+        <where>
+            <if test="fileId != null "> and file_id = #{fileId}</if>
+            <if test="coverFileId != null "> and cover_file_id = #{coverFileId}</if>
+            <if test="title != null  and title != ''"> and title like concat('%', #{title}, '%')</if>
+            <if test="videoDescribe != null  and videoDescribe != ''"> and video_describe like concat('%', #{videoDescribe}, '%')</if>
+            <if test="videoDuration != null  and videoDuration != ''"> and video_duration = #{videoDuration}</if>
+            <if test="shelfStatus != null "> and shelf_status = #{shelfStatus}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+
+
+    <select id="getTeachingDspDetailsById" resultType="com.miaxis.teachingDsp.vo.TeachingDspInfoVo">
+        select
+            vi.id,
+            vi.title,
+            vi.video_describe,
+            vi.video_duration,
+            vi.video_size,
+            vi.video_width,
+            vi.video_height,
+            vi.create_time,
+            vi.update_time,
+            f1.file_url as fileUrl,
+            f2.file_url as coverFileUrl,
+            vi.vod_video_file_id,
+            vi.shelf_status,
+            vi.status
+        from teaching_dsp_info vi
+                 LEFT JOIN file_info f1 on f1.file_id = vi.file_id
+                 LEFT JOIN file_info f2 on f2.file_id = vi.cover_file_id
+        where vi.id = #{id}
+    </select>
+    <select id="getTeachingDspByTypeId" resultType="com.miaxis.teachingDsp.vo.TeachingDspInfoVo"></select>
+
+
+</mapper>