瀏覽代碼

保利威获得单个视频信息,存储数据库

change 4 年之前
父節點
當前提交
52c97b3e13
共有 16 個文件被更改,包括 1809 次插入1 次删除
  1. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamArrangementController.java
  2. 118 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/polyv/PolyvVideoController.java
  3. 63 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/polyv/PolyvUtils.java
  4. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvQuerBo.java
  5. 153 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoAddBo.java
  6. 196 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoEditBo.java
  7. 166 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoQueryBo.java
  8. 158 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideDo.java
  9. 165 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideo.java
  10. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/Uploader.java
  11. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/mapper/PolyvVideoMapper.java
  12. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvVideoService.java
  13. 211 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvVideoServiceImpl.java
  14. 196 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/vo/PolyvVideoQuerVo.java
  15. 196 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/vo/PolyvVideoVo.java
  16. 61 0
      zhongzheng-system/src/main/resources/mapper/modules/polyv/PolyvVideoMapper.xml

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamArrangementController.java

@@ -39,7 +39,7 @@ import io.swagger.annotations.ApiOperation;
 @Api(value = "考试安排,学员计划,考试指南", tags = {"考试安排,学员计划,考试指南"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
-@RequestMapping("/modules.exam/arrangement")
+@RequestMapping("/exam/arrangement")
 public class ExamArrangementController extends BaseController {
 
     private final IExamArrangementService iExamArrangementService;

+ 118 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/polyv/PolyvVideoController.java

@@ -0,0 +1,118 @@
+package com.zhongzheng.controller.polyv;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
+import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 保利威视频信息Controller
+ * 
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Api(value = "保利威视频信息控制器", tags = {"保利威视频信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/polyv/video")
+public class PolyvVideoController extends BaseController {
+
+    private final IPolyvVideoService iPolyvVideoService;
+
+
+    /**
+     * 获取保利威视频信息详细信息
+     */
+    @ApiOperation("获取保利威视频信息详细信息")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:query')")
+    @GetMapping("/{vid}")
+    public AjaxResult<PolyvVideoQuerVo> getInfo(@PathVariable("vid") String vid) throws Exception {
+        return AjaxResult.success(iPolyvVideoService.queryById(vid));
+    }
+
+
+
+   /* *//**
+     * 查询保利威视频信息列表
+     *//*
+    @ApiOperation("查询保利威视频信息列表")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:list')")
+    @GetMapping("/list")
+    public TableDataInfo<PolyvVideoVo> list(PolyvVideoQueryBo bo) {
+        startPage();
+        List<PolyvVideoVo> list = iPolyvVideoService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    *//**
+     * 导出保利威视频信息列表
+     *//*
+    @ApiOperation("导出保利威视频信息列表")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:export')")
+    @Log(title = "保利威视频信息", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<PolyvVideoVo> export(PolyvVideoQueryBo bo) {
+        List<PolyvVideoVo> list = iPolyvVideoService.queryList(bo);
+        ExcelUtil<PolyvVideoVo> util = new ExcelUtil<PolyvVideoVo>(PolyvVideoVo.class);
+        return util.exportExcel(list, "保利威视频信息");
+    }*/
+
+
+/*
+    *//**
+     * 新增保利威视频信息
+     *//*
+    @ApiOperation("新增保利威视频信息")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:add')")
+    @Log(title = "保利威视频信息", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody PolyvVideoAddBo bo) {
+        return toAjax(iPolyvVideoService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    *//**
+     * 修改保利威视频信息
+     *//*
+    @ApiOperation("修改保利威视频信息")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:edit')")
+    @Log(title = "保利威视频信息", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody PolyvVideoEditBo bo) {
+        return toAjax(iPolyvVideoService.updateByEditBo(bo) ? 1 : 0);
+    }*/
+
+ /*   *//**
+     * 删除保利威视频信息
+     *//*
+    @ApiOperation("删除保利威视频信息")
+    @PreAuthorize("@ss.hasPermi('modules.polyv:video:remove')")
+    @Log(title = "保利威视频信息" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{polyvIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] polyvIds) {
+        return toAjax(iPolyvVideoService.deleteWithValidByIds(Arrays.asList(polyvIds), true) ? 1 : 0);
+    }*/
+}

+ 63 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/polyv/PolyvUtils.java

@@ -0,0 +1,63 @@
+package com.zhongzheng.common.utils.polyv;
+
+import com.alibaba.fastjson.JSONObject;
+import com.zhongzheng.common.utils.http.HttpUtils;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+
+/**
+ * 保利威通用调用接口
+ *
+ * @author change
+ */
+public class PolyvUtils {
+
+    public static void main(String[] args) throws Exception {
+
+        Long ptime = System.currentTimeMillis();
+        Map<String,String> map = new HashMap<>();
+        map.put("vid","d5f6d309fe6b70d56201d8b172d1293a_d");
+        map.put("ptime",ptime.toString());
+        String xpPrYdcbA1 = getSign(map, "xpPrYdcbA1");
+        //发送请求
+        String param = "vid="+"d5f6d309fe6b70d56201d8b172d1293a_d"+"&ptime="+ptime+"&sign="+xpPrYdcbA1;
+        String polyvVide = HttpUtils.sendGet("http://api.polyv.net/v2/video/" + "d5f6d309fe" + "/get-video-msg", param);
+        JSONObject jsonObject = JSONObject.parseObject(polyvVide);
+        System.out.println(ptime);
+        System.out.println(xpPrYdcbA1);
+    }
+    /**
+     * 生成保利威视频签名
+     *
+     * @author change
+     */
+    public static String getSign(Map<String, String> maps, String secretkey) throws Exception {
+        List<String> keys = new ArrayList<>(maps.keySet());
+        List<String> tmp = new ArrayList<>();
+        Collections.sort(keys);
+        for (String key : keys) {
+            if (null != maps.get(key) && maps.get(key).length() > 0) {
+                tmp.add(key + "=" + maps.get(key));
+            }
+        }
+        String join = String.join("&", tmp) + secretkey;
+        return getSha1(join).toUpperCase();
+    }
+
+    public static String getSha1(String input) throws NoSuchAlgorithmException {
+        MessageDigest mDigest = MessageDigest.getInstance("SHA1");
+        byte[] result = mDigest.digest(input.getBytes(StandardCharsets.UTF_8));
+        StringBuilder sb = new StringBuilder();
+        for (int b : result) {
+            sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
+        }
+        return sb.toString();
+    }
+
+
+
+
+}

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvQuerBo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.polyv.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author change
+ * @date 2021年06月10日 16:47
+ */
+@Data
+@ApiModel("保利威单个视频查找")
+public class PolyvQuerBo {
+
+
+    /** 视频ID */
+    @ApiModelProperty("视频ID")
+    private String vid;
+
+    /** 用户id */
+    @ApiModelProperty("用户id")
+    private String userId;
+
+    /** 时间戳毫秒级 */
+    @ApiModelProperty("时间戳毫秒级")
+    private String ptime;
+
+    /** 签名 */
+    @ApiModelProperty("签名")
+    private String sign;
+
+}

+ 153 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoAddBo.java

@@ -0,0 +1,153 @@
+package com.zhongzheng.modules.polyv.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 保利威视频信息添加对象 polyv_video
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@ApiModel("保利威视频信息添加对象")
+public class PolyvVideoAddBo {
+
+    /** 视频id */
+    @ApiModelProperty("视频id")
+    private String vid;
+    /** 视频标签 */
+    @ApiModelProperty("视频标签")
+    private String tag;
+    /** MP4源文件 */
+    @ApiModelProperty("MP4源文件")
+    private String mp4;
+    /** 视频宽度 */
+    @ApiModelProperty("视频宽度")
+    private Long playerWidth;
+    /** 标题 */
+    @ApiModelProperty("标题")
+    private String title;
+    /** 视频码率数 */
+    @ApiModelProperty("视频码率数")
+    private Integer df;
+    /** 播放次数 */
+    @ApiModelProperty("播放次数")
+    private String times;
+    /** 流畅码率mp4格式视频地址 */
+    @ApiModelProperty("流畅码率mp4格式视频地址")
+    private String mp4_1;
+    /** 高清码率mp4格式视频地址 */
+    @ApiModelProperty("高清码率mp4格式视频地址")
+    private String mp4_2;
+    /** 分类id, 如1为根目录 */
+    @ApiModelProperty("分类id, 如1为根目录")
+    private Integer cataid;
+    /** 超清码率mp4格式视频地址 */
+    @ApiModelProperty("超清码率mp4格式视频地址")
+    private String mp4_3;
+    /** 返回flash连接 */
+    @ApiModelProperty("返回flash连接")
+    private String swfLink;
+    /** 视频状态 */
+    @ApiModelProperty("视频状态")
+    private String status;
+    /** 加密视频为1,非加密为0 */
+    @ApiModelProperty("加密视频为1,非加密为0")
+    private Integer seed;
+    /** 流畅码率flv格式视频地址 */
+    @ApiModelProperty("流畅码率flv格式视频地址")
+    private String flv1;
+    /** 高清码率flv格式视频地址 */
+    @ApiModelProperty("高清码率flv格式视频地址")
+    private String flv2;
+    /** 超清码率flv格式视频地址 */
+    @ApiModelProperty("超清码率flv格式视频地址")
+    private String flv3;
+    /** 暂无含义 */
+    @ApiModelProperty("暂无含义")
+    private String sourceFile;
+    /** 时长 */
+    @ApiModelProperty("时长")
+    private String duration;
+    /** 视频首图 */
+    @ApiModelProperty("视频首图")
+    private String firstImage;
+    /** 最佳分辨率 */
+    @ApiModelProperty("最佳分辨率")
+    private String originalDefinition;
+    /** 视频描述 */
+    @ApiModelProperty("视频描述")
+    private String context;
+    /** 视频高度 */
+    @ApiModelProperty("视频高度")
+    private String playerheight;
+    /** 视频上传日期 */
+    @ApiModelProperty("视频上传日期")
+    private Long ptime;
+    /** 源视频文件大小,单位为:bytes */
+    @ApiModelProperty("源视频文件大小,单位为:bytes")
+    private String sourceFilesize;
+    /** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+    @ApiModelProperty("上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    private String md5checksum;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize1;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize2;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize3;
+    /** 预览视频id */
+    @ApiModelProperty("预览视频id")
+    private String previewVid;
+    /** 是否为源文件,否:0,是:1 */
+    @ApiModelProperty("是否为源文件,否:0,是:1")
+    private String keepsource;
+    /** 分类名称 */
+    @ApiModelProperty("分类名称")
+    private String cataName;
+    /** 用户默认播放视频 */
+    @ApiModelProperty("用户默认播放视频")
+    private String defaultVideo;
+    /** 上传者邮箱 */
+    @ApiModelProperty("上传者邮箱")
+    private String uploaderEmail;
+    /** 上传者名称 */
+    @ApiModelProperty("上传者名称")
+    private String uploaderName;
+    /** 上传者角色,如管理员,上传者,主账号 */
+    @ApiModelProperty("上传者角色,如管理员,上传者,主账号")
+    private String uploaderRole;
+    /** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+    @ApiModelProperty("加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+    private String hlsLevel;
+    /** 视频截图大图地址 */
+    @ApiModelProperty("视频截图大图地址")
+    private String imagesB;
+    /** 视频截图 */
+    @ApiModelProperty("视频截图")
+    private String images;
+    /** 视频截图小图url */
+    @ApiModelProperty("视频截图小图url")
+    private String imageUrls;
+    /** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+    @ApiModelProperty("编码后各个清晰度视频的文件大小(单位:字节),类型为array")
+    private String fileSize;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private String hls;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 196 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoEditBo.java

@@ -0,0 +1,196 @@
+package com.zhongzheng.modules.polyv.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 保利威视频信息编辑对象 polyv_video
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@ApiModel("保利威视频信息编辑对象")
+public class PolyvVideoEditBo {
+
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long polyvId;
+
+    /** 视频id */
+    @ApiModelProperty("视频id")
+    private String vid;
+
+    /** 视频标签 */
+    @ApiModelProperty("视频标签")
+    private String tag;
+
+    /** MP4源文件 */
+    @ApiModelProperty("MP4源文件")
+    private String mp4;
+
+    /** 视频宽度 */
+    @ApiModelProperty("视频宽度")
+    private Long playerWidth;
+
+    /** 标题 */
+    @ApiModelProperty("标题")
+    private String title;
+
+    /** 视频码率数 */
+    @ApiModelProperty("视频码率数")
+    private Integer df;
+
+    /** 播放次数 */
+    @ApiModelProperty("播放次数")
+    private String times;
+
+    /** 流畅码率mp4格式视频地址 */
+    @ApiModelProperty("流畅码率mp4格式视频地址")
+    private String mp4_1;
+
+    /** 高清码率mp4格式视频地址 */
+    @ApiModelProperty("高清码率mp4格式视频地址")
+    private String mp4_2;
+
+    /** 分类id, 如1为根目录 */
+    @ApiModelProperty("分类id, 如1为根目录")
+    private Integer cataid;
+
+    /** 超清码率mp4格式视频地址 */
+    @ApiModelProperty("超清码率mp4格式视频地址")
+    private String mp4_3;
+
+    /** 返回flash连接 */
+    @ApiModelProperty("返回flash连接")
+    private String swfLink;
+
+    /** 视频状态 */
+    @ApiModelProperty("视频状态")
+    private String status;
+
+    /** 加密视频为1,非加密为0 */
+    @ApiModelProperty("加密视频为1,非加密为0")
+    private Integer seed;
+
+    /** 流畅码率flv格式视频地址 */
+    @ApiModelProperty("流畅码率flv格式视频地址")
+    private String flv1;
+
+    /** 高清码率flv格式视频地址 */
+    @ApiModelProperty("高清码率flv格式视频地址")
+    private String flv2;
+
+    /** 超清码率flv格式视频地址 */
+    @ApiModelProperty("超清码率flv格式视频地址")
+    private String flv3;
+
+    /** 暂无含义 */
+    @ApiModelProperty("暂无含义")
+    private String sourceFile;
+
+    /** 时长 */
+    @ApiModelProperty("时长")
+    private String duration;
+
+    /** 视频首图 */
+    @ApiModelProperty("视频首图")
+    private String firstImage;
+
+    /** 最佳分辨率 */
+    @ApiModelProperty("最佳分辨率")
+    private String originalDefinition;
+
+    /** 视频描述 */
+    @ApiModelProperty("视频描述")
+    private String context;
+
+    /** 视频高度 */
+    @ApiModelProperty("视频高度")
+    private String playerheight;
+
+    /** 视频上传日期 */
+    @ApiModelProperty("视频上传日期")
+    private Long ptime;
+
+    /** 源视频文件大小,单位为:bytes */
+    @ApiModelProperty("源视频文件大小,单位为:bytes")
+    private String sourceFilesize;
+
+    /** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+    @ApiModelProperty("上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    private String md5checksum;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize1;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize2;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize3;
+
+    /** 预览视频id */
+    @ApiModelProperty("预览视频id")
+    private String previewVid;
+
+    /** 是否为源文件,否:0,是:1 */
+    @ApiModelProperty("是否为源文件,否:0,是:1")
+    private String keepsource;
+
+    /** 分类名称 */
+    @ApiModelProperty("分类名称")
+    private String cataName;
+
+    /** 用户默认播放视频 */
+    @ApiModelProperty("用户默认播放视频")
+    private String defaultVideo;
+
+    /** 上传者邮箱 */
+    @ApiModelProperty("上传者邮箱")
+    private String uploaderEmail;
+
+    /** 上传者名称 */
+    @ApiModelProperty("上传者名称")
+    private String uploaderName;
+
+    /** 上传者角色,如管理员,上传者,主账号 */
+    @ApiModelProperty("上传者角色,如管理员,上传者,主账号")
+    private String uploaderRole;
+
+    /** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+    @ApiModelProperty("加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+    private String hlsLevel;
+
+    /** 视频截图大图地址 */
+    @ApiModelProperty("视频截图大图地址")
+    private String imagesB;
+
+    /** 视频截图 */
+    @ApiModelProperty("视频截图")
+    private String images;
+
+    /** 视频截图小图url */
+    @ApiModelProperty("视频截图小图url")
+    private String imageUrls;
+
+    /** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+    @ApiModelProperty("编码后各个清晰度视频的文件大小(单位:字节),类型为array")
+    private String fileSize;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private String hls;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 166 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvVideoQueryBo.java

@@ -0,0 +1,166 @@
+package com.zhongzheng.modules.polyv.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 保利威视频信息分页查询对象 polyv_video
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("保利威视频信息分页查询对象")
+public class PolyvVideoQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 视频id */
+	@ApiModelProperty("视频id")
+	private String vid;
+	/** 视频标签 */
+	@ApiModelProperty("视频标签")
+	private String tag;
+	/** MP4源文件 */
+	@ApiModelProperty("MP4源文件")
+	private String mp4;
+	/** 视频宽度 */
+	@ApiModelProperty("视频宽度")
+	private Long playerWidth;
+	/** 标题 */
+	@ApiModelProperty("标题")
+	private String title;
+	/** 视频码率数 */
+	@ApiModelProperty("视频码率数")
+	private Integer df;
+	/** 播放次数 */
+	@ApiModelProperty("播放次数")
+	private String times;
+	/** 流畅码率mp4格式视频地址 */
+	@ApiModelProperty("流畅码率mp4格式视频地址")
+	private String mp4_1;
+	/** 高清码率mp4格式视频地址 */
+	@ApiModelProperty("高清码率mp4格式视频地址")
+	private String mp4_2;
+	/** 分类id, 如1为根目录 */
+	@ApiModelProperty("分类id, 如1为根目录")
+	private Integer cataid;
+	/** 超清码率mp4格式视频地址 */
+	@ApiModelProperty("超清码率mp4格式视频地址")
+	private String mp4_3;
+	/** 返回flash连接 */
+	@ApiModelProperty("返回flash连接")
+	private String swfLink;
+	/** 视频状态 */
+	@ApiModelProperty("视频状态")
+	private String status;
+	/** 加密视频为1,非加密为0 */
+	@ApiModelProperty("加密视频为1,非加密为0")
+	private Integer seed;
+	/** 流畅码率flv格式视频地址 */
+	@ApiModelProperty("流畅码率flv格式视频地址")
+	private String flv1;
+	/** 高清码率flv格式视频地址 */
+	@ApiModelProperty("高清码率flv格式视频地址")
+	private String flv2;
+	/** 超清码率flv格式视频地址 */
+	@ApiModelProperty("超清码率flv格式视频地址")
+	private String flv3;
+	/** 暂无含义 */
+	@ApiModelProperty("暂无含义")
+	private String sourceFile;
+	/** 时长 */
+	@ApiModelProperty("时长")
+	private String duration;
+	/** 视频首图 */
+	@ApiModelProperty("视频首图")
+	private String firstImage;
+	/** 最佳分辨率 */
+	@ApiModelProperty("最佳分辨率")
+	private String originalDefinition;
+	/** 视频描述 */
+	@ApiModelProperty("视频描述")
+	private String context;
+	/** 视频高度 */
+	@ApiModelProperty("视频高度")
+	private String playerheight;
+	/** 视频上传日期 */
+	@ApiModelProperty("视频上传日期")
+	private Long ptime;
+	/** 源视频文件大小,单位为:bytes */
+	@ApiModelProperty("源视频文件大小,单位为:bytes")
+	private String sourceFilesize;
+	/** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+	@ApiModelProperty("上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	private String md5checksum;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize1;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize2;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize3;
+	/** 预览视频id */
+	@ApiModelProperty("预览视频id")
+	private String previewVid;
+	/** 是否为源文件,否:0,是:1 */
+	@ApiModelProperty("是否为源文件,否:0,是:1")
+	private String keepsource;
+	/** 分类名称 */
+	@ApiModelProperty("分类名称")
+	private String cataName;
+	/** 用户默认播放视频 */
+	@ApiModelProperty("用户默认播放视频")
+	private String defaultVideo;
+	/** 上传者邮箱 */
+	@ApiModelProperty("上传者邮箱")
+	private String uploaderEmail;
+	/** 上传者名称 */
+	@ApiModelProperty("上传者名称")
+	private String uploaderName;
+	/** 上传者角色,如管理员,上传者,主账号 */
+	@ApiModelProperty("上传者角色,如管理员,上传者,主账号")
+	private String uploaderRole;
+	/** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+	@ApiModelProperty("加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+	private String hlsLevel;
+	/** 视频截图大图地址 */
+	@ApiModelProperty("视频截图大图地址")
+	private String imagesB;
+	/** 视频截图 */
+	@ApiModelProperty("视频截图")
+	private String images;
+	/** 视频截图小图url */
+	@ApiModelProperty("视频截图小图url")
+	private String imageUrls;
+	/** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+	@ApiModelProperty("编码后各个清晰度视频的文件大小(单位:字节),类型为array")
+	private String fileSize;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private String hls;
+
+}

+ 158 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideDo.java

@@ -0,0 +1,158 @@
+package com.zhongzheng.modules.polyv.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 保利威视频信息对象 polyv_video
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("polyv_video")
+public class PolyvVideDo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+
+    /** $column.columnComment */
+    @TableId(value = "polyv_id")
+    private Long polyvId;
+
+    /** 视频id */
+    private String vid;
+
+    /** 视频标签 */
+    private String tag;
+
+    /** MP4源文件 */
+    private String mp4;
+
+    /** 视频宽度 */
+    private Long playerWidth;
+
+    /** 标题 */
+    private String title;
+
+    /** 视频码率数 */
+    private Integer df;
+
+    /** 播放次数 */
+    private String times;
+
+    /** 流畅码率mp4格式视频地址 */
+    private String mp4_1;
+
+    /** 高清码率mp4格式视频地址 */
+    private String mp4_2;
+
+    /** 分类id, 如1为根目录 */
+    private Integer cataid;
+
+    /** 超清码率mp4格式视频地址 */
+    private String mp4_3;
+
+    /** 返回flash连接 */
+    private String swfLink;
+
+    /** 视频状态 */
+    private String status;
+
+    /** 加密视频为1,非加密为0 */
+    private Integer seed;
+
+    /** 流畅码率flv格式视频地址 */
+    private String flv1;
+
+    /** 高清码率flv格式视频地址 */
+    private String flv2;
+
+    /** 超清码率flv格式视频地址 */
+    private String flv3;
+
+    /** 暂无含义 */
+    private String sourceFile;
+
+    /** 时长 */
+    private String duration;
+
+    /** 视频首图 */
+    private String firstImage;
+
+    /** 最佳分辨率 */
+    private String originalDefinition;
+
+    /** 视频描述 */
+    private String context;
+
+    /** 视频高度 */
+    private String playerheight;
+
+    /** 视频上传日期 */
+    private Long ptime;
+
+    /** 源视频文件大小,单位为:bytes */
+    private String sourceFilesize;
+
+    /** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+    private String md5checksum;
+
+    /** $column.columnComment */
+    private Long tsfilesize1;
+
+    /** $column.columnComment */
+    private Long tsfilesize2;
+
+    /** $column.columnComment */
+    private Long tsfilesize3;
+
+    /** 预览视频id */
+    private String previewVid;
+
+    /** 是否为源文件,否:0,是:1 */
+    private String keepsource;
+
+    /** 分类名称 */
+    private String cataName;
+
+    /** 用户默认播放视频 */
+    private String defaultVideo;
+
+    /** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+    private String hlsLevel;
+
+    /** 视频截图大图地址 */
+    private String imagesB;
+
+    /** 视频截图 */
+    private String images;
+
+    /** 视频截图小图url */
+    private String imageUrls;
+
+    /** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+    private String fileSize;
+
+    /** $column.columnComment */
+    private String hls;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+    private Uploader uploader;
+
+}

+ 165 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideo.java

@@ -0,0 +1,165 @@
+package com.zhongzheng.modules.polyv.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 保利威视频信息对象 polyv_video
+ * 
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("polyv_video")
+public class PolyvVideo implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** $column.columnComment */
+    @TableId(value = "polyv_id")
+    private Long polyvId;
+
+    /** 视频id */
+    private String vid;
+
+    /** 视频标签 */
+    private String tag;
+
+    /** MP4源文件 */
+    private String mp4;
+
+    /** 视频宽度 */
+    private Long playerWidth;
+
+    /** 标题 */
+    private String title;
+
+    /** 视频码率数 */
+    private Integer df;
+
+    /** 播放次数 */
+    private String times;
+
+    /** 流畅码率mp4格式视频地址 */
+    private String mp4_1;
+
+    /** 高清码率mp4格式视频地址 */
+    private String mp4_2;
+
+    /** 分类id, 如1为根目录 */
+    private Integer cataid;
+
+    /** 超清码率mp4格式视频地址 */
+    private String map4_3;
+
+    /** 返回flash连接 */
+    private String swfLink;
+
+    /** 视频状态 */
+    private String status;
+
+    /** 加密视频为1,非加密为0 */
+    private Integer seed;
+
+    /** 流畅码率flv格式视频地址 */
+    private String flv1;
+
+    /** 高清码率flv格式视频地址 */
+    private String flv2;
+
+    /** 超清码率flv格式视频地址 */
+    private String flv3;
+
+    /** 暂无含义 */
+    private String sourceFile;
+
+    /** 时长 */
+    private String duration;
+
+    /** 视频首图 */
+    private String firstImage;
+
+    /** 最佳分辨率 */
+    private String originalDefinition;
+
+    /** 视频描述 */
+    private String context;
+
+    /** 视频高度 */
+    private String playerheight;
+
+    /** 视频上传日期 */
+    private Long ptime;
+
+    /** 源视频文件大小,单位为:bytes */
+    private String sourceFilesize;
+
+    /** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+    private String md5checksum;
+
+    /** $column.columnComment */
+    private Long tsfilesize1;
+
+    /** $column.columnComment */
+    private Long tsfilesize2;
+
+    /** $column.columnComment */
+    private Long tsfilesize3;
+
+    /** 预览视频id */
+    private String previewVid;
+
+    /** 是否为源文件,否:0,是:1 */
+    private String keepsource;
+
+    /** 分类名称 */
+    private String cataName;
+
+    /** 用户默认播放视频 */
+    private String defaultVideo;
+
+    /** 上传者邮箱 */
+    private String uploaderEmail;
+
+    /** 上传者名称 */
+    private String uploaderName;
+
+    /** 上传者角色,如管理员,上传者,主账号 */
+    private String uploaderRole;
+
+    /** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+    private String hlsLevel;
+
+    /** 视频截图大图地址 */
+    private String imagesB;
+
+    /** 视频截图 */
+    private String images;
+
+    /** 视频截图小图url */
+    private String imageUrls;
+
+    /** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+    private String fileSize;
+
+    /** $column.columnComment */
+    private String hls;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/Uploader.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.polyv.domain;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author change
+ */
+@Data
+public class Uploader {
+
+        /** 上传者邮箱 */
+        private String email;
+
+        /** 上传者名称 */
+        private String name;
+
+        /** 上传者角色,如管理员,上传者,主账号 */
+        private String role;
+    }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/mapper/PolyvVideoMapper.java

@@ -0,0 +1,16 @@
+package com.zhongzheng.modules.polyv.mapper;
+
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+
+/**
+ * 保利威视频信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+public interface PolyvVideoMapper extends BaseMapper<PolyvVideo> {
+
+    PolyvVideo selectByVID(String VId);
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvVideoService.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.polyv.service;
+
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 保利威视频信息Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+public interface IPolyvVideoService extends IService<PolyvVideo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	PolyvVideoQuerVo queryById(String polyvId) throws Exception;
+
+	/**
+	 * 查询列表
+	 */
+	List<PolyvVideoVo> queryList(PolyvVideoQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入保利威视频信息
+	 * @param bo 保利威视频信息新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(PolyvVideoAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改保利威视频信息
+	 * @param bo 保利威视频信息编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(PolyvVideoEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 211 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvVideoServiceImpl.java

@@ -0,0 +1,211 @@
+package com.zhongzheng.modules.polyv.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.ContentType;
+import cn.hutool.http.HttpStatus;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
+import com.zhongzheng.common.utils.polyv.PolyvUtils;
+import com.zhongzheng.modules.polyv.domain.PolyvVideDo;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
+import net.bytebuddy.asm.Advice;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 保利威视频信息Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Service
+public class PolyvVideoServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVideo> implements IPolyvVideoService {
+
+    @Value("${poliv.token.userid}")
+    private String poliv_token_userid;
+
+    @Value("${poliv.token.writetoken}")
+    private String poliv_token_writetoken;
+
+    @Value("${poliv.token.readtoken}")
+    private String poliv_token_readtoken;
+
+    @Value("${poliv.token.secretkey}")
+    private String poliv_token_secretkey;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public PolyvVideoQuerVo queryById(String VId) throws Exception {
+        PolyvVideo polyvVideo = baseMapper.selectByVID(VId);
+        //找不到发送请求获得视频,并加入数据库
+        if (polyvVideo == null){
+            polyvbRequest(VId);
+            polyvVideo = baseMapper.selectByVID(VId);
+        }
+        PolyvVideoQuerVo polyvVideoQuerVo = VoTOQueryVo(polyvVideo);
+        return polyvVideoQuerVo;
+    }
+
+    private PolyvVideoQuerVo VoTOQueryVo(PolyvVideo polyvVideo) {
+        PolyvVideoQuerVo polyvVideoQuerVo = BeanUtil.toBean(polyvVideo, PolyvVideoQuerVo.class);
+        polyvVideoQuerVo.setImagesB(JSONArray.parseArray(polyvVideo.getImagesB(), String.class));
+        polyvVideoQuerVo.setImages(JSONArray.parseArray(polyvVideo.getImages(), String.class));
+        polyvVideoQuerVo.setImageUrls(JSONArray.parseArray(polyvVideo.getImageUrls(), String.class));
+        polyvVideoQuerVo.setFileSize(JSONArray.parseArray(polyvVideo.getFileSize(), String.class));
+        polyvVideoQuerVo.setHls(JSONArray.parseArray(polyvVideo.getHls(), String.class));
+        return polyvVideoQuerVo;
+    }
+
+
+
+    public void polyvbRequest(String VId) throws Exception {
+        //获得保利威sign
+        Long ptime = System.currentTimeMillis();
+        Map<String,String> map = new HashMap<>();
+        map.put("vid",VId);
+        map.put("ptime",ptime.toString());
+        String sign = PolyvUtils.getSign(map, poliv_token_secretkey);
+
+        //发送请求
+        String param = "vid="+VId+"&ptime="+ptime+"&sign="+sign;
+        String polyvVide = HttpUtils.sendGet("http://api.polyv.net/v2/video/" + poliv_token_userid + "/get-video-msg", param);
+        JSONObject jsonObject = JSONObject.parseObject(polyvVide);
+        //非200抛出异常
+        if (HttpStatus.HTTP_OK != Convert.toInt(jsonObject.get("code"))){
+            throw new RuntimeException(Convert.toStr(jsonObject.get("message")));
+        }
+
+        //将数据存于数据库
+        JSONArray jsonArray=jsonObject.getJSONArray("data");
+        List<PolyvVideDo> ist=jsonArray.toJavaList(PolyvVideDo.class);
+        ist.stream().forEach(i -> {
+            PolyvVideo polyvVideo = BeanUtil.toBean(i, PolyvVideo.class);
+            polyvVideo.setUploaderEmail(i.getUploader().getEmail());
+            polyvVideo.setUploaderName(i.getUploader().getName());
+            polyvVideo.setUploaderRole(i.getUploader().getRole());
+            polyvVideo.setCreateTime(DateUtils.getNowTime());
+            polyvVideo.setUpdateTime(DateUtils.getNowTime());
+            this.save(polyvVideo);
+        });
+    }
+    @Override
+    public List<PolyvVideoVo> queryList(PolyvVideoQueryBo bo) {
+        LambdaQueryWrapper<PolyvVideo> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(bo.getVid()), PolyvVideo::getVid, bo.getVid());
+        lqw.eq(StrUtil.isNotBlank(bo.getTag()), PolyvVideo::getTag, bo.getTag());
+        lqw.eq(StrUtil.isNotBlank(bo.getMp4()), PolyvVideo::getMp4, bo.getMp4());
+        lqw.eq(bo.getPlayerWidth() != null, PolyvVideo::getPlayerWidth, bo.getPlayerWidth());
+        lqw.eq(StrUtil.isNotBlank(bo.getTitle()), PolyvVideo::getTitle, bo.getTitle());
+        lqw.eq(bo.getDf() != null, PolyvVideo::getDf, bo.getDf());
+        lqw.eq(StrUtil.isNotBlank(bo.getTimes()), PolyvVideo::getTimes, bo.getTimes());
+        lqw.eq(StrUtil.isNotBlank(bo.getMp4_1()), PolyvVideo::getMp4_1, bo.getMp4_1());
+        lqw.eq(StrUtil.isNotBlank(bo.getMp4_2()), PolyvVideo::getMp4_2, bo.getMp4_2());
+        lqw.eq(bo.getCataid() != null, PolyvVideo::getCataid, bo.getCataid());
+        lqw.eq(StrUtil.isNotBlank(bo.getMp4_3()), PolyvVideo::getMap4_3, bo.getMp4_3());
+        lqw.eq(StrUtil.isNotBlank(bo.getSwfLink()), PolyvVideo::getSwfLink, bo.getSwfLink());
+        lqw.eq(StrUtil.isNotBlank(bo.getStatus()), PolyvVideo::getStatus, bo.getStatus());
+        lqw.eq(bo.getSeed() != null, PolyvVideo::getSeed, bo.getSeed());
+        lqw.eq(StrUtil.isNotBlank(bo.getFlv1()), PolyvVideo::getFlv1, bo.getFlv1());
+        lqw.eq(StrUtil.isNotBlank(bo.getFlv2()), PolyvVideo::getFlv2, bo.getFlv2());
+        lqw.eq(StrUtil.isNotBlank(bo.getFlv3()), PolyvVideo::getFlv3, bo.getFlv3());
+        lqw.eq(StrUtil.isNotBlank(bo.getSourceFile()), PolyvVideo::getSourceFile, bo.getSourceFile());
+        lqw.eq(StrUtil.isNotBlank(bo.getDuration()), PolyvVideo::getDuration, bo.getDuration());
+        lqw.eq(StrUtil.isNotBlank(bo.getFirstImage()), PolyvVideo::getFirstImage, bo.getFirstImage());
+        lqw.eq(StrUtil.isNotBlank(bo.getOriginalDefinition()), PolyvVideo::getOriginalDefinition, bo.getOriginalDefinition());
+        lqw.eq(StrUtil.isNotBlank(bo.getContext()), PolyvVideo::getContext, bo.getContext());
+        lqw.eq(StrUtil.isNotBlank(bo.getPlayerheight()), PolyvVideo::getPlayerheight, bo.getPlayerheight());
+        lqw.eq(bo.getPtime() != null, PolyvVideo::getPtime, bo.getPtime());
+        lqw.eq(StrUtil.isNotBlank(bo.getSourceFilesize()), PolyvVideo::getSourceFilesize, bo.getSourceFilesize());
+        lqw.eq(StrUtil.isNotBlank(bo.getMd5checksum()), PolyvVideo::getMd5checksum, bo.getMd5checksum());
+        lqw.eq(bo.getTsfilesize1() != null, PolyvVideo::getTsfilesize1, bo.getTsfilesize1());
+        lqw.eq(bo.getTsfilesize2() != null, PolyvVideo::getTsfilesize2, bo.getTsfilesize2());
+        lqw.eq(bo.getTsfilesize3() != null, PolyvVideo::getTsfilesize3, bo.getTsfilesize3());
+        lqw.eq(StrUtil.isNotBlank(bo.getPreviewVid()), PolyvVideo::getPreviewVid, bo.getPreviewVid());
+        lqw.eq(StrUtil.isNotBlank(bo.getKeepsource()), PolyvVideo::getKeepsource, bo.getKeepsource());
+        lqw.like(StrUtil.isNotBlank(bo.getCataName()), PolyvVideo::getCataName, bo.getCataName());
+        lqw.eq(StrUtil.isNotBlank(bo.getDefaultVideo()), PolyvVideo::getDefaultVideo, bo.getDefaultVideo());
+        lqw.eq(StrUtil.isNotBlank(bo.getUploaderEmail()), PolyvVideo::getUploaderEmail, bo.getUploaderEmail());
+        lqw.like(StrUtil.isNotBlank(bo.getUploaderName()), PolyvVideo::getUploaderName, bo.getUploaderName());
+        lqw.eq(StrUtil.isNotBlank(bo.getUploaderRole()), PolyvVideo::getUploaderRole, bo.getUploaderRole());
+        lqw.eq(StrUtil.isNotBlank(bo.getHlsLevel()), PolyvVideo::getHlsLevel, bo.getHlsLevel());
+        lqw.eq(StrUtil.isNotBlank(bo.getImagesB()), PolyvVideo::getImagesB, bo.getImagesB());
+        lqw.eq(StrUtil.isNotBlank(bo.getImages()), PolyvVideo::getImages, bo.getImages());
+        lqw.eq(StrUtil.isNotBlank(bo.getImageUrls()), PolyvVideo::getImageUrls, bo.getImageUrls());
+        lqw.eq(StrUtil.isNotBlank(bo.getFileSize()), PolyvVideo::getFileSize, bo.getFileSize());
+        lqw.eq(StrUtil.isNotBlank(bo.getHls()), PolyvVideo::getHls, bo.getHls());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<PolyvVideoVo> entity2Vo(Collection<PolyvVideo> collection) {
+        List<PolyvVideoVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, PolyvVideoVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<PolyvVideo> page = (Page<PolyvVideo>)collection;
+            Page<PolyvVideoVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(PolyvVideoAddBo bo) {
+        PolyvVideo add = BeanUtil.toBean(bo, PolyvVideo.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(PolyvVideoEditBo bo) {
+        PolyvVideo update = BeanUtil.toBean(bo, PolyvVideo.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(PolyvVideo entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 196 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/vo/PolyvVideoQuerVo.java

@@ -0,0 +1,196 @@
+package com.zhongzheng.modules.polyv.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 保利威视频信息视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@ApiModel("保利威视频信息视图Quer对象")
+public class PolyvVideoQuerVo {
+    private static final long serialVersionUID = 1L;
+
+    /** $pkColumn.columnComment */
+    @ApiModelProperty("$pkColumn.columnComment")
+    private Long polyvId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    @ApiModelProperty("视频id")
+    private String vid;
+    /** 视频标签 */
+    @Excel(name = "视频标签")
+    @ApiModelProperty("视频标签")
+    private String tag;
+    /** MP4源文件 */
+    @Excel(name = "MP4源文件")
+    @ApiModelProperty("MP4源文件")
+    private String mp4;
+    /** 视频宽度 */
+    @Excel(name = "视频宽度")
+    @ApiModelProperty("视频宽度")
+    private Long playerWidth;
+    /** 标题 */
+    @Excel(name = "标题")
+    @ApiModelProperty("标题")
+    private String title;
+    /** 视频码率数 */
+    @Excel(name = "视频码率数")
+    @ApiModelProperty("视频码率数")
+    private Integer df;
+    /** 播放次数 */
+    @Excel(name = "播放次数")
+    @ApiModelProperty("播放次数")
+    private String times;
+    /** 流畅码率mp4格式视频地址 */
+    @Excel(name = "流畅码率mp4格式视频地址")
+    @ApiModelProperty("流畅码率mp4格式视频地址")
+    private String mp4_1;
+    /** 高清码率mp4格式视频地址 */
+    @Excel(name = "高清码率mp4格式视频地址")
+    @ApiModelProperty("高清码率mp4格式视频地址")
+    private String mp4_2;
+    /** 分类id, 如1为根目录 */
+    @Excel(name = "分类id, 如1为根目录")
+    @ApiModelProperty("分类id, 如1为根目录")
+    private Integer cataid;
+    /** 超清码率mp4格式视频地址 */
+    @Excel(name = "超清码率mp4格式视频地址")
+    @ApiModelProperty("超清码率mp4格式视频地址")
+    private String mp4_3;
+    /** 返回flash连接 */
+    @Excel(name = "返回flash连接")
+    @ApiModelProperty("返回flash连接")
+    private String swfLink;
+    /** 视频状态 */
+    @Excel(name = "视频状态")
+    @ApiModelProperty("视频状态")
+    private String status;
+    /** 加密视频为1,非加密为0 */
+    @Excel(name = "加密视频为1,非加密为0")
+    @ApiModelProperty("加密视频为1,非加密为0")
+    private Integer seed;
+    /** 流畅码率flv格式视频地址 */
+    @Excel(name = "流畅码率flv格式视频地址")
+    @ApiModelProperty("流畅码率flv格式视频地址")
+    private String flv1;
+    /** 高清码率flv格式视频地址 */
+    @Excel(name = "高清码率flv格式视频地址")
+    @ApiModelProperty("高清码率flv格式视频地址")
+    private String flv2;
+    /** 超清码率flv格式视频地址 */
+    @Excel(name = "超清码率flv格式视频地址")
+    @ApiModelProperty("超清码率flv格式视频地址")
+    private String flv3;
+    /** 暂无含义 */
+    @Excel(name = "暂无含义")
+    @ApiModelProperty("暂无含义")
+    private String sourceFile;
+    /** 时长 */
+    @Excel(name = "时长")
+    @ApiModelProperty("时长")
+    private String duration;
+    /** 视频首图 */
+    @Excel(name = "视频首图")
+    @ApiModelProperty("视频首图")
+    private String firstImage;
+    /** 最佳分辨率 */
+    @Excel(name = "最佳分辨率")
+    @ApiModelProperty("最佳分辨率")
+    private String originalDefinition;
+    /** 视频描述 */
+    @Excel(name = "视频描述")
+    @ApiModelProperty("视频描述")
+    private String context;
+    /** 视频高度 */
+    @Excel(name = "视频高度")
+    @ApiModelProperty("视频高度")
+    private String playerheight;
+    /** 视频上传日期 */
+    @Excel(name = "视频上传日期")
+    @ApiModelProperty("视频上传日期")
+    private Long ptime;
+    /** 源视频文件大小,单位为:bytes */
+    @Excel(name = "源视频文件大小,单位为:bytes")
+    @ApiModelProperty("源视频文件大小,单位为:bytes")
+    private String sourceFilesize;
+    /** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+    @Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    @ApiModelProperty("上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    private String md5checksum;
+    /** $column.columnComment */
+    @Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize1;
+    /** $column.columnComment */
+    @Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize2;
+    /** $column.columnComment */
+    @Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+    @ApiModelProperty("$column.columnComment")
+    private Long tsfilesize3;
+    /** 预览视频id */
+    @Excel(name = "预览视频id")
+    @ApiModelProperty("预览视频id")
+    private String previewVid;
+    /** 是否为源文件,否:0,是:1 */
+    @Excel(name = "是否为源文件,否:0,是:1")
+    @ApiModelProperty("是否为源文件,否:0,是:1")
+    private String keepsource;
+    /** 分类名称 */
+    @Excel(name = "分类名称")
+    @ApiModelProperty("分类名称")
+    private String cataName;
+    /** 用户默认播放视频 */
+    @Excel(name = "用户默认播放视频")
+    @ApiModelProperty("用户默认播放视频")
+    private String defaultVideo;
+    /** 上传者邮箱 */
+    @Excel(name = "上传者邮箱")
+    @ApiModelProperty("上传者邮箱")
+    private String uploaderEmail;
+    /** 上传者名称 */
+    @Excel(name = "上传者名称")
+    @ApiModelProperty("上传者名称")
+    private String uploaderName;
+    /** 上传者角色,如管理员,上传者,主账号 */
+    @Excel(name = "上传者角色,如管理员,上传者,主账号")
+    @ApiModelProperty("上传者角色,如管理员,上传者,主账号")
+    private String uploaderRole;
+    /** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+    @Excel(name = "加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+    @ApiModelProperty("加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+    private String hlsLevel;
+    /** 视频截图大图地址 */
+    @Excel(name = "视频截图大图地址")
+    @ApiModelProperty("视频截图大图地址")
+    private  List<String> imagesB;
+    /** 视频截图 */
+    @Excel(name = "视频截图")
+    @ApiModelProperty("视频截图")
+    private  List<String> images;
+    /** 视频截图小图url */
+    @Excel(name = "视频截图小图url")
+    @ApiModelProperty("视频截图小图url")
+    private  List<String> imageUrls;
+    /** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+    @Excel(name = "编码后各个清晰度视频的文件大小" , readConverterExp = "单=位:字节")
+    @ApiModelProperty("编码后各个清晰度视频的文件大小(单位:字节),类型为array")
+    private List<String> fileSize;
+    /** $column.columnComment */
+    @Excel(name = "编码后各个清晰度视频的文件大小" , readConverterExp = "$column.readConverterExp()")
+    @ApiModelProperty("$column.columnComment")
+    private  List<String> hls;
+
+}

+ 196 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/vo/PolyvVideoVo.java

@@ -0,0 +1,196 @@
+package com.zhongzheng.modules.polyv.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 保利威视频信息视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+@Data
+@ApiModel("保利威视频信息视图对象")
+public class PolyvVideoVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long polyvId;
+
+	/** 视频id */
+	@Excel(name = "视频id")
+	@ApiModelProperty("视频id")
+	private String vid;
+	/** 视频标签 */
+	@Excel(name = "视频标签")
+	@ApiModelProperty("视频标签")
+	private String tag;
+	/** MP4源文件 */
+	@Excel(name = "MP4源文件")
+	@ApiModelProperty("MP4源文件")
+	private String mp4;
+	/** 视频宽度 */
+	@Excel(name = "视频宽度")
+	@ApiModelProperty("视频宽度")
+	private Long playerWidth;
+	/** 标题 */
+	@Excel(name = "标题")
+	@ApiModelProperty("标题")
+	private String title;
+	/** 视频码率数 */
+	@Excel(name = "视频码率数")
+	@ApiModelProperty("视频码率数")
+	private Integer df;
+	/** 播放次数 */
+	@Excel(name = "播放次数")
+	@ApiModelProperty("播放次数")
+	private String times;
+	/** 流畅码率mp4格式视频地址 */
+	@Excel(name = "流畅码率mp4格式视频地址")
+	@ApiModelProperty("流畅码率mp4格式视频地址")
+	private String mp4_1;
+	/** 高清码率mp4格式视频地址 */
+	@Excel(name = "高清码率mp4格式视频地址")
+	@ApiModelProperty("高清码率mp4格式视频地址")
+	private String mp4_2;
+	/** 分类id, 如1为根目录 */
+	@Excel(name = "分类id, 如1为根目录")
+	@ApiModelProperty("分类id, 如1为根目录")
+	private Integer cataid;
+	/** 超清码率mp4格式视频地址 */
+	@Excel(name = "超清码率mp4格式视频地址")
+	@ApiModelProperty("超清码率mp4格式视频地址")
+	private String mp4_3;
+	/** 返回flash连接 */
+	@Excel(name = "返回flash连接")
+	@ApiModelProperty("返回flash连接")
+	private String swfLink;
+	/** 视频状态 */
+	@Excel(name = "视频状态")
+	@ApiModelProperty("视频状态")
+	private String status;
+	/** 加密视频为1,非加密为0 */
+	@Excel(name = "加密视频为1,非加密为0")
+	@ApiModelProperty("加密视频为1,非加密为0")
+	private Integer seed;
+	/** 流畅码率flv格式视频地址 */
+	@Excel(name = "流畅码率flv格式视频地址")
+	@ApiModelProperty("流畅码率flv格式视频地址")
+	private String flv1;
+	/** 高清码率flv格式视频地址 */
+	@Excel(name = "高清码率flv格式视频地址")
+	@ApiModelProperty("高清码率flv格式视频地址")
+	private String flv2;
+	/** 超清码率flv格式视频地址 */
+	@Excel(name = "超清码率flv格式视频地址")
+	@ApiModelProperty("超清码率flv格式视频地址")
+	private String flv3;
+	/** 暂无含义 */
+	@Excel(name = "暂无含义")
+	@ApiModelProperty("暂无含义")
+	private String sourceFile;
+	/** 时长 */
+	@Excel(name = "时长")
+	@ApiModelProperty("时长")
+	private String duration;
+	/** 视频首图 */
+	@Excel(name = "视频首图")
+	@ApiModelProperty("视频首图")
+	private String firstImage;
+	/** 最佳分辨率 */
+	@Excel(name = "最佳分辨率")
+	@ApiModelProperty("最佳分辨率")
+	private String originalDefinition;
+	/** 视频描述 */
+	@Excel(name = "视频描述")
+	@ApiModelProperty("视频描述")
+	private String context;
+	/** 视频高度 */
+	@Excel(name = "视频高度")
+	@ApiModelProperty("视频高度")
+	private String playerheight;
+	/** 视频上传日期 */
+	@Excel(name = "视频上传日期")
+	@ApiModelProperty("视频上传日期")
+	private Long ptime;
+	/** 源视频文件大小,单位为:bytes */
+	@Excel(name = "源视频文件大小,单位为:bytes")
+	@ApiModelProperty("源视频文件大小,单位为:bytes")
+	private String sourceFilesize;
+	/** 上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整 */
+	@Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	@ApiModelProperty("上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	private String md5checksum;
+	/** $column.columnComment */
+	@Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize1;
+	/** $column.columnComment */
+	@Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize2;
+	/** $column.columnComment */
+	@Excel(name = "上传到POLYV云平台的视频源文件的MD5值,可以用来校验是否上传错误或完整")
+	@ApiModelProperty("$column.columnComment")
+	private Long tsfilesize3;
+	/** 预览视频id */
+	@Excel(name = "预览视频id")
+	@ApiModelProperty("预览视频id")
+	private String previewVid;
+	/** 是否为源文件,否:0,是:1 */
+	@Excel(name = "是否为源文件,否:0,是:1")
+	@ApiModelProperty("是否为源文件,否:0,是:1")
+	private String keepsource;
+	/** 分类名称 */
+	@Excel(name = "分类名称")
+	@ApiModelProperty("分类名称")
+	private String cataName;
+	/** 用户默认播放视频 */
+	@Excel(name = "用户默认播放视频")
+	@ApiModelProperty("用户默认播放视频")
+	private String defaultVideo;
+	/** 上传者邮箱 */
+	@Excel(name = "上传者邮箱")
+	@ApiModelProperty("上传者邮箱")
+	private String uploaderEmail;
+	/** 上传者名称 */
+	@Excel(name = "上传者名称")
+	@ApiModelProperty("上传者名称")
+	private String uploaderName;
+	/** 上传者角色,如管理员,上传者,主账号 */
+	@Excel(name = "上传者角色,如管理员,上传者,主账号")
+	@ApiModelProperty("上传者角色,如管理员,上传者,主账号")
+	private String uploaderRole;
+	/** 加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权 */
+	@Excel(name = "加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+	@ApiModelProperty("加密等级 open:非授权加密 web:web授权 app:app授权 wxa_app:小程序授权")
+	private String hlsLevel;
+	/** 视频截图大图地址 */
+	@Excel(name = "视频截图大图地址")
+	@ApiModelProperty("视频截图大图地址")
+	private String imagesB;
+	/** 视频截图 */
+	@Excel(name = "视频截图")
+	@ApiModelProperty("视频截图")
+	private String images;
+	/** 视频截图小图url */
+	@Excel(name = "视频截图小图url")
+	@ApiModelProperty("视频截图小图url")
+	private String imageUrls;
+	/** 编码后各个清晰度视频的文件大小(单位:字节),类型为array */
+	@Excel(name = "编码后各个清晰度视频的文件大小" , readConverterExp = "单=位:字节")
+	@ApiModelProperty("编码后各个清晰度视频的文件大小(单位:字节),类型为array")
+	private String fileSize;
+	/** $column.columnComment */
+	@Excel(name = "编码后各个清晰度视频的文件大小" , readConverterExp = "$column.readConverterExp()")
+	@ApiModelProperty("$column.columnComment")
+	private String hls;
+
+}

+ 61 - 0
zhongzheng-system/src/main/resources/mapper/modules/polyv/PolyvVideoMapper.xml

@@ -0,0 +1,61 @@
+<?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.zhongzheng.modules.polyv.mapper.PolyvVideoMapper">
+
+    <resultMap type="com.zhongzheng.modules.polyv.domain.PolyvVideo" id="PolyvVideoResult">
+        <result property="polyvId" column="polyv_id"/>
+        <result property="vid" column="vid"/>
+        <result property="tag" column="tag"/>
+        <result property="mp4" column="mp4"/>
+        <result property="playerWidth" column="player_width"/>
+        <result property="title" column="title"/>
+        <result property="df" column="df"/>
+        <result property="times" column="times"/>
+        <result property="mp4_1" column="mp4_1"/>
+        <result property="mp4_2" column="mp4_2"/>
+        <result property="cataid" column="cataid"/>
+        <result property="map4_3" column="map4_3"/>
+        <result property="swfLink" column="swf_link"/>
+        <result property="status" column="status"/>
+        <result property="seed" column="seed"/>
+        <result property="flv1" column="flv1"/>
+        <result property="flv2" column="flv2"/>
+        <result property="flv3" column="flv3"/>
+        <result property="sourceFile" column="source_file"/>
+        <result property="duration" column="duration"/>
+        <result property="firstImage" column="first_image"/>
+        <result property="originalDefinition" column="original_definition"/>
+        <result property="context" column="context"/>
+        <result property="playerheight" column="playerheight"/>
+        <result property="ptime" column="ptime"/>
+        <result property="sourceFilesize" column="source_filesize"/>
+        <result property="md5checksum" column="md5checksum"/>
+        <result property="tsfilesize1" column="tsfilesize1"/>
+        <result property="tsfilesize2" column="tsfilesize2"/>
+        <result property="tsfilesize3" column="tsfilesize3"/>
+        <result property="previewVid" column="preview_vid"/>
+        <result property="keepsource" column="keepsource"/>
+        <result property="cataName" column="cata_name"/>
+        <result property="defaultVideo" column="default_video"/>
+        <result property="uploaderEmail" column="uploader_email"/>
+        <result property="uploaderName" column="uploader_name"/>
+        <result property="uploaderRole" column="uploader_role"/>
+        <result property="hlsLevel" column="hls_level"/>
+        <result property="imagesB" column="images_b"/>
+        <result property="images" column="images"/>
+        <result property="imageUrls" column="image_urls"/>
+        <result property="fileSize" column="file_size"/>
+        <result property="hls" column="hls"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <select id="selectByVID" parameterType="Long"  resultMap="PolyvVideoResult">
+        select * from polyv_video where 1=1
+        <if test="Vid != null and Vid != ''">
+            AND vid = #{Vid}
+        </if>
+    </select>
+</mapper>