src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/video/VideoMasterInfoMapper.xml | ●●●●● patch | view | raw | blame | history |
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"); } src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java
New file @@ -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)); } } src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java
@@ -28,6 +28,11 @@ private String thumb; /** * 视频时长 */ private String timeLength; /** * 是否同步修改 */ @TableField(exist = false) 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); } 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); } 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(); } } src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java
New file @@ -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; } 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>