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