Helius
2021-12-16 95eb28c414a93000baa96784de0f096be0789fac
add /vide/list
3 files added
6 files modified
160 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java 39 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/dto/VideoListDto.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/entity/VideoMasterSourceEntity.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/mapper/VideoMasterInfoMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/vo/VideoListVo.java 39 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/video/VideoMasterInfoMapper.xml 23 ●●●●● 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>