From 95eb28c414a93000baa96784de0f096be0789fac Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 16 Dec 2021 17:30:21 +0800
Subject: [PATCH] add /vide/list

---
 src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java |   11 +++
 src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java          |    5 +
 src/main/resources/mapper/video/VideoMasterInfoMapper.xml                       |   23 +++++++
 src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java                        |   32 ++++++++++
 src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java              |    1 
 src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java           |   39 +++++++++++++
 src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java                          |   39 +++++++++++++
 src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java            |    4 +
 src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java         |    6 ++
 9 files changed, 160 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index 0fc2ee5..ad4a481 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -13,6 +13,7 @@
         InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
         registration.addPathPatterns("/api/**");
         registration.excludePathPatterns("/api/login/**");
+        registration.excludePathPatterns("/api/video/**");
         registration.excludePathPatterns("/api/member/vipCostInfo");
         registration.excludePathPatterns("/api/member/appVersion");
     }
diff --git a/src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java b/src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java
new file mode 100644
index 0000000..bd17963
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java
@@ -0,0 +1,39 @@
+package cc.mrbird.febs.video.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.video.dto.VideoListDto;
+import cc.mrbird.febs.video.service.IVideoMasterInfoService;
+import cc.mrbird.febs.video.vo.VideoListVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author wzy
+ * @date 2021-12-16
+ **/
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/video")
+@Api(value = "ApiVideoController", tags = "视频接口类")
+public class ApiVideoController {
+
+    private final IVideoMasterInfoService videoMasterInfoService;
+
+    @ApiOperation(value = "获取视频列表", notes = "获取视频列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = VideoListVo.class)
+    })
+    @PostMapping(value = "/list")
+    public FebsResponse videoInPage(@RequestBody VideoListDto videoListDto) {
+        return new FebsResponse().success().data(this.videoMasterInfoService.findVideoList(videoListDto));
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java b/src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java
new file mode 100644
index 0000000..312301b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.video.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-12-16
+ **/
+@Data
+@ApiModel(value = "VideoListDto", description = "视频列表请求参数")
+public class VideoListDto {
+
+    @ApiModelProperty(value = "一页多少个", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "分类ID", example = "1,2,3")
+    private String cateIds;
+
+    @ApiModelProperty(value = "搜索参数")
+    private String query;
+
+    @ApiModelProperty(value = "是否免费 1/免费 2/会员", example = "1")
+    private Integer isFree;
+
+    @ApiModelProperty(hidden = true)
+    private Integer isUp;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java b/src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java
index 9caf4a4..038815d 100644
--- a/src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java
+++ b/src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java
@@ -28,6 +28,11 @@
     private String thumb;
 
     /**
+     * 视频时长
+     */
+    private String timeLength;
+
+    /**
      * 是否同步修改
      */
     @TableField(exist = false)
diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java
index 5c844cc..2dfa8dc 100644
--- a/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java
@@ -1,6 +1,8 @@
 package cc.mrbird.febs.video.mapper;
 
+import cc.mrbird.febs.video.dto.VideoListDto;
 import cc.mrbird.febs.video.entity.VideoMasterInfoEntity;
+import cc.mrbird.febs.video.vo.VideoListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,4 +13,6 @@
     IPage<VideoMasterInfoEntity> selectInPage(@Param("record") VideoMasterInfoEntity record, Page<VideoMasterInfoEntity> page);
 
     VideoMasterInfoEntity selectEntityById(@Param("id") Long id);
+
+    IPage<VideoListVo> selectVideoListInPage(@Param("record") VideoListDto videoListDto, Page<VideoListVo> page);
 }
diff --git a/src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java b/src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java
index 69da01c..5969ac0 100644
--- a/src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java
+++ b/src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java
@@ -1,9 +1,13 @@
 package cc.mrbird.febs.video.service;
 
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.video.dto.VideoListDto;
 import cc.mrbird.febs.video.entity.VideoMasterInfoEntity;
+import cc.mrbird.febs.video.vo.VideoListVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
 
 public interface IVideoMasterInfoService extends IService<VideoMasterInfoEntity> {
 
@@ -16,5 +20,7 @@
     VideoMasterInfoEntity findById(Long id);
 
     void changeIsUp(Long id);
+
+    List<VideoListVo> findVideoList(VideoListDto videoListDto);
 }
 
diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
index 0b6bdea..f5cf45c 100644
--- a/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.video.dto.VideoListDto;
 import cc.mrbird.febs.video.entity.VideoMasterDataEntity;
 import cc.mrbird.febs.video.entity.VideoMasterInfoEntity;
 import cc.mrbird.febs.video.entity.VideoMasterItemsEntity;
@@ -12,6 +13,7 @@
 import cc.mrbird.febs.video.mapper.VideoMasterItemsMapper;
 import cc.mrbird.febs.video.mapper.VideoMasterSourceMapper;
 import cc.mrbird.febs.video.service.IVideoMasterInfoService;
+import cc.mrbird.febs.video.vo.VideoListVo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -141,4 +143,13 @@
 
         this.baseMapper.updateById(masterInfo);
     }
+
+    @Override
+    public List<VideoListVo> findVideoList(VideoListDto videoListDto) {
+        Page<VideoListVo> page = new Page<>(videoListDto.getPageNum(), videoListDto.getPageSize());
+
+        videoListDto.setIsUp(AppContants.FLAG_INT_Y);
+        IPage<VideoListVo> data = this.baseMapper.selectVideoListInPage(videoListDto, page);
+        return data.getRecords();
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java b/src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java
new file mode 100644
index 0000000..a1529f9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java
@@ -0,0 +1,39 @@
+package cc.mrbird.febs.video.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-12-16
+ **/
+@Data
+@ApiModel(value = "VideoListVo", description = "视频列表返回参数类")
+public class VideoListVo {
+
+    @ApiModelProperty(value = "视频ID")
+    private Long id;
+
+    @ApiModelProperty(value = "视频标题")
+    private String title;
+
+    @ApiModelProperty(value = "缩略图")
+    private String thumb;
+
+    @ApiModelProperty(value = "视频编码")
+    private String code;
+
+    @ApiModelProperty(value = "简介")
+    private String intro;
+
+    @ApiModelProperty(value = "是否免费 1/免费 2/会员")
+    private Integer isFree;
+
+    @ApiModelProperty(value = "时长")
+    private String timeLength;
+
+    @ApiModelProperty(value = "剧集数量")
+    private Integer itemCnt;
+
+}
diff --git a/src/main/resources/mapper/video/VideoMasterInfoMapper.xml b/src/main/resources/mapper/video/VideoMasterInfoMapper.xml
index d22497f..0ffcb3d 100644
--- a/src/main/resources/mapper/video/VideoMasterInfoMapper.xml
+++ b/src/main/resources/mapper/video/VideoMasterInfoMapper.xml
@@ -47,4 +47,27 @@
         where a.id=b.master_id and a.id=#{id} and b.source_id=c.id
     </select>
 
+    <select id="selectVideoListInPage" resultType="cc.mrbird.febs.video.vo.VideoListVo">
+        select
+            a.*,
+            count(b.id) itemCnt,
+            (select c.time_length from video_master_source c where b.source_id=c.id limit 1) timeLength
+        from video_master_info a
+            inner join video_master_items b on a.id=b.master_id
+            inner join video_master_data d on a.id=d.master_id
+        <where>
+                1=1
+            <if test="record.isUp != null">
+                and a.is_up = #{record.isUp}
+            </if>
+            <if test="record.isFree != null">
+                and a.is_free = #{record.isFree}
+            </if>
+            <if test="record.query != null and record.query != ''">
+                and title like concat('%', #{record.query}, '%')
+            </if>
+        </where>
+        group by a.id
+        order by d.play_cnt desc, a.created_time desc
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1