src/main/java/cc/mrbird/febs/video/controller/ApiVideoController.java
@@ -1,6 +1,10 @@ package cc.mrbird.febs.video.controller; import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.video.dto.ApiVideoCollectionDto; import cc.mrbird.febs.video.dto.ApiVideoHistoryDto; import cc.mrbird.febs.video.dto.ApiVideoLikeDto; import cc.mrbird.febs.video.dto.VideoListDto; import cc.mrbird.febs.video.service.IVideoMasterInfoService; import cc.mrbird.febs.video.vo.VideoInfoVo; @@ -11,6 +15,7 @@ import io.swagger.annotations.ApiResponses; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; /** @@ -30,7 +35,7 @@ @ApiResponses({ @ApiResponse(code = 200, message = "success", response = VideoListVo.class) }) @PostMapping(value = "/list") @PostMapping(value = "/videoCollectionlist") public FebsResponse videoInPage(@RequestBody VideoListDto videoListDto) { return new FebsResponse().success().data(this.videoMasterInfoService.findVideoList(videoListDto)); } @@ -43,4 +48,23 @@ public FebsResponse videoInfo(@PathVariable("videoId") Long videoId, @RequestParam(value = "itemId", required = false) Long itemId) { return new FebsResponse().success().data(this.videoMasterInfoService.findVideoInfo(videoId, itemId)); } @ApiOperation(value = "收藏", notes = "收藏") @PostMapping(value = "/videoCollection") public FebsResponse videoCollection(@RequestBody ApiVideoCollectionDto apiVideoCollectionDto) { return videoMasterInfoService.videoCollection(apiVideoCollectionDto); } @ApiOperation(value = "点赞", notes = "点赞") @PostMapping(value = "/videoLike") public FebsResponse videoLike(@RequestBody ApiVideoLikeDto apiVideoLikeDto) { return videoMasterInfoService.videoLike(apiVideoLikeDto); } @ApiOperation(value = "删除历史观看记录", notes = "删除历史观看记录") @PostMapping(value = "/delVideoHistory") public FebsResponse delVideoHistory(@RequestBody ApiVideoHistoryDto apiVideoHistoryDto) { return videoMasterInfoService.delVideoHistory(apiVideoHistoryDto); } } src/main/java/cc/mrbird/febs/video/dto/ApiVideoCollectionDto.java
New file @@ -0,0 +1,17 @@ package cc.mrbird.febs.video.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @Data @ApiModel(value = "ApiVideoCollectionDto", description = "接收参数类") public class ApiVideoCollectionDto { @NotBlank(message = "视频ID不能为空") @ApiModelProperty(value = "视频ID", example = "10") private Long videoId; } src/main/java/cc/mrbird/febs/video/dto/ApiVideoHistoryDto.java
New file @@ -0,0 +1,13 @@ package cc.mrbird.febs.video.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "ApiVideoHistoryDto", description = "接收参数类") public class ApiVideoHistoryDto { @ApiModelProperty(value = "观看历史IDS", example = "1,2,3") private String ids; } src/main/java/cc/mrbird/febs/video/dto/ApiVideoLikeDto.java
New file @@ -0,0 +1,21 @@ package cc.mrbird.febs.video.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @Data @ApiModel(value = "ApiVideoLikeDto", description = "接收参数类") public class ApiVideoLikeDto { @NotBlank(message = "类型不能为空") @ApiModelProperty(value = "类型;1/视频 2/评论", example = "1") private Integer type; @NotBlank(message = "关联id不能为空") @ApiModelProperty(value = "关联id", example = "10") private Long relateId; } src/main/java/cc/mrbird/febs/video/mapper/VideoCollectionMapper.java
@@ -14,4 +14,6 @@ IPage<ApiMyVideoCollectionVo> selectApiVideoCollectionInPage(IPage<ApiMyVideoCollectionVo> page, @Param("record")ApiMyVideoCollectionDto apiMyVideoCollectionDto); IPage<ApiMyVideoHistoryVo> selectApiMyVideoHistoryInPage(IPage<ApiMyVideoHistoryVo> page, @Param("record")ApiMyVideoHistoryDto apiMyVideoHistoryDto); VideoCollectionEntity selectVideoCollectionByVideoIdAndMemberId(@Param("videoId")Long videoId, @Param("memberId")Long id); } src/main/java/cc/mrbird/febs/video/mapper/VideoCommentInfoMapper.java
New file @@ -0,0 +1,7 @@ package cc.mrbird.febs.video.mapper; import cc.mrbird.febs.video.entity.VideoCommentInfoEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface VideoCommentInfoMapper extends BaseMapper<VideoCommentInfoEntity> { } src/main/java/cc/mrbird/febs/video/mapper/VideoCommentLikeMapper.java
New file @@ -0,0 +1,11 @@ package cc.mrbird.febs.video.mapper; import cc.mrbird.febs.video.entity.VideoCommentLikeEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; public interface VideoCommentLikeMapper extends BaseMapper<VideoCommentLikeEntity> { VideoCommentLikeEntity selectCommentLikeByMemberIdAndRelateId(@Param("memberId")Long id, @Param("relateId")Long relateId); } src/main/java/cc/mrbird/febs/video/mapper/VideoHistoryMapper.java
New file @@ -0,0 +1,12 @@ package cc.mrbird.febs.video.mapper; import cc.mrbird.febs.video.entity.VideoHistoryEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import java.util.List; public interface VideoHistoryMapper extends BaseMapper<VideoHistoryEntity> { int delVideoHistoryByIdsAndMemberId(@Param("list")List<String> idList, @Param("memberId")Long id); } src/main/java/cc/mrbird/febs/video/service/IVideoMasterInfoService.java
@@ -1,6 +1,10 @@ package cc.mrbird.febs.video.service; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.video.dto.ApiVideoCollectionDto; import cc.mrbird.febs.video.dto.ApiVideoHistoryDto; import cc.mrbird.febs.video.dto.ApiVideoLikeDto; import cc.mrbird.febs.video.dto.VideoListDto; import cc.mrbird.febs.video.entity.VideoMasterInfoEntity; import cc.mrbird.febs.video.vo.VideoInfoVo; @@ -25,5 +29,11 @@ List<VideoListVo> findVideoList(VideoListDto videoListDto); VideoInfoVo findVideoInfo(Long videoId, Long itemId); FebsResponse videoCollection(ApiVideoCollectionDto apiVideoCollectionDto); FebsResponse videoLike(ApiVideoLikeDto apiVideoLikeDto); FebsResponse delVideoHistory(ApiVideoHistoryDto apiVideoHistoryDto); } src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
@@ -1,11 +1,15 @@ package cc.mrbird.febs.video.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; 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.common.utils.LoginUserUtil; import cc.mrbird.febs.video.conversion.VideoConversion; import cc.mrbird.febs.video.conversion.VideoMemberConversion; import cc.mrbird.febs.video.dto.ApiVideoCollectionDto; import cc.mrbird.febs.video.dto.ApiVideoHistoryDto; import cc.mrbird.febs.video.dto.ApiVideoLikeDto; import cc.mrbird.febs.video.dto.VideoListDto; import cc.mrbird.febs.video.entity.*; import cc.mrbird.febs.video.mapper.*; @@ -15,6 +19,7 @@ import cc.mrbird.febs.video.vo.VideoListVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -38,6 +43,10 @@ private final VideoMasterItemsMapper videoMasterItemsMapper; private final VideoMasterSourceMapper videoMasterSourceMapper; private final VideoMasterDataMapper videoMasterDataMapper; private final VideoCollectionMapper videoCollectionMapper; private final VideoCommentInfoMapper videoCommentInfoMapper; private final VideoCommentLikeMapper videoCommentLikeMapper; private final VideoHistoryMapper videoHistoryMapper; private final VideoMemberMapper videoMemberMapper; @Override @@ -197,4 +206,92 @@ videoInfoVo.setTimeLength(currentItem.getTimeLength()); return videoInfoVo; } @Override public FebsResponse videoCollection(ApiVideoCollectionDto apiVideoCollectionDto) { Long id = LoginUserUtil.getLoginUser().getId(); Long videoId = apiVideoCollectionDto.getVideoId(); VideoMasterInfoEntity videoMasterInfoEntity = this.baseMapper.selectById(videoId); if(videoMasterInfoEntity == null){ throw new FebsException("视频不存在"); } VideoCollectionEntity videoCollection = videoCollectionMapper.selectVideoCollectionByVideoIdAndMemberId(videoId, id); if(videoCollection != null){ videoCollectionMapper.deleteById(videoCollection.getId()); //收藏数-1 VideoMasterDataEntity videoMasterDataEntity = videoMasterDataMapper.selectDataByMasterId(videoId); int collectCnt = videoMasterDataEntity.getCollectCnt(); videoMasterDataEntity.setCollectCnt((collectCnt - 1) <= 0 ? 0:(collectCnt - 1)); videoMasterDataMapper.updateById(videoMasterDataEntity); return new FebsResponse().success().message("已取消收藏"); }else{ VideoCollectionEntity videoCollectionEntity = new VideoCollectionEntity(); videoCollectionEntity.setMemberId(id); videoCollectionEntity.setVideoId(videoId); videoCollectionMapper.insert(videoCollectionEntity); //收藏数+1 VideoMasterDataEntity videoMasterDataEntity = videoMasterDataMapper.selectDataByMasterId(videoId); int collectCnt = videoMasterDataEntity.getCollectCnt(); videoMasterDataEntity.setCollectCnt((collectCnt + 1) <= 0 ? 0:(collectCnt + 1)); videoMasterDataMapper.updateById(videoMasterDataEntity); return new FebsResponse().success().message("已收藏"); } } @Override public FebsResponse videoLike(ApiVideoLikeDto apiVideoLikeDto) { Long id = LoginUserUtil.getLoginUser().getId(); Integer type = apiVideoLikeDto.getType(); Long relateId = apiVideoLikeDto.getRelateId(); VideoCommentLikeEntity videoCommentLikeEntity = videoCommentLikeMapper.selectCommentLikeByMemberIdAndRelateId(id,relateId); if(videoCommentLikeEntity != null){ if(1 == type){ //视频 VideoMasterInfoEntity videoMasterInfoEntity = this.baseMapper.selectById(relateId); if(videoMasterInfoEntity == null){ throw new FebsException("视频不存在"); } videoCommentLikeMapper.deleteById(videoCommentLikeEntity.getId()); //点赞数-1 VideoMasterDataEntity videoMasterDataEntity = videoMasterDataMapper.selectDataByMasterId(relateId); int starCnt = videoMasterDataEntity.getStarCnt(); videoMasterDataEntity.setStarCnt((starCnt - 1) <= 0 ? 0:(starCnt - 1)); videoMasterDataMapper.updateById(videoMasterDataEntity); return new FebsResponse().success().message("已取消点赞"); }else if(2 == type){ //评论 VideoCommentInfoEntity videoCommentInfoEntity = videoCommentInfoMapper.selectById(relateId); if(videoCommentInfoEntity == null){ throw new FebsException("评论不存在"); } videoCommentLikeMapper.deleteById(videoCommentLikeEntity.getId()); return new FebsResponse().success().message("已取消点赞"); }else{ throw new FebsException("网络繁忙"); } }else{ VideoCommentLikeEntity videoCommentLike = new VideoCommentLikeEntity(); videoCommentLike.setType(type); videoCommentLike.setRelateId(relateId); videoCommentLike.setMemberId(id); videoCommentLikeMapper.insert(videoCommentLike); //点赞数+1 VideoMasterDataEntity videoMasterDataEntity = videoMasterDataMapper.selectDataByMasterId(relateId); int starCnt = videoMasterDataEntity.getStarCnt(); videoMasterDataEntity.setStarCnt((starCnt + 1) <= 0 ? 0:(starCnt + 1)); videoMasterDataMapper.updateById(videoMasterDataEntity); return new FebsResponse().success().message("已点赞"); } } @Override public FebsResponse delVideoHistory(ApiVideoHistoryDto apiVideoHistoryDto) { Long id = LoginUserUtil.getLoginUser().getId(); String ids = apiVideoHistoryDto.getIds(); List<String> idList = StrUtil.split(ids, ','); videoHistoryMapper.delVideoHistoryByIdsAndMemberId(idList,id); return new FebsResponse().success().message("成功"); } } src/main/resources/mapper/modules/VideoCollectionMapper.xml
@@ -39,4 +39,14 @@ order by a.created_time desc </select> <select id="selectVideoCollectionByVideoIdAndMemberId" resultType="cc.mrbird.febs.video.entity.VideoCollectionEntity"> select a.* from video_collection a where a.member_id = #{memberId} and a.video_id = #{videoId} </select> </mapper> src/main/resources/mapper/modules/VideoCommentLikeMapper.xml
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cc.mrbird.febs.video.mapper.VideoCommentLikeMapper"> <select id="selectCommentLikeByMemberIdAndRelateId" resultType="cc.mrbird.febs.video.entity.VideoCommentLikeEntity"> select * from video_comment_like where member_id = #{memberId} and relate_id = #{relateId} </select> </mapper> src/main/resources/mapper/modules/VideoHistoryMapper.xml
New file @@ -0,0 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cc.mrbird.febs.video.mapper.VideoHistoryMapper"> <delete id="delVideoHistoryByIdsAndMemberId"> delete from video_history where member_id = #{memberId} and id in <foreach collection="list" item="item" open="(" close=")" separator=","> #{item} </foreach> </delete> </mapper>