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