From 6c920885a9bc407f2f05e204ae9769631c4c80e7 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Wed, 22 Dec 2021 15:02:56 +0800 Subject: [PATCH] 20211216 --- src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java | 221 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 213 insertions(+), 8 deletions(-) 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..ad975c6 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 @@ -1,19 +1,26 @@ 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.video.entity.VideoMasterDataEntity; -import cc.mrbird.febs.video.entity.VideoMasterInfoEntity; -import cc.mrbird.febs.video.entity.VideoMasterItemsEntity; -import cc.mrbird.febs.video.entity.VideoMasterSourceEntity; -import cc.mrbird.febs.video.mapper.VideoMasterDataMapper; -import cc.mrbird.febs.video.mapper.VideoMasterInfoMapper; -import cc.mrbird.febs.video.mapper.VideoMasterItemsMapper; -import cc.mrbird.febs.video.mapper.VideoMasterSourceMapper; +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.*; +import cc.mrbird.febs.video.service.IVideoMasterDataService; import cc.mrbird.febs.video.service.IVideoMasterInfoService; +import cc.mrbird.febs.video.vo.VideoInfoItemVo; +import cc.mrbird.febs.video.vo.VideoInfoVo; +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; @@ -23,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -37,6 +45,12 @@ 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; + private final IVideoMasterDataService videoMasterDataService; @Override public IPage<VideoMasterInfoEntity> findInPage(VideoMasterInfoEntity info, QueryRequest request) { @@ -141,4 +155,195 @@ 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(); + } + + @Override + public VideoInfoVo findVideoInfo(Long videoId, Long itemId) { + VideoMasterInfoEntity videoInfoEntity = this.baseMapper.selectEntityById(videoId); + if (videoInfoEntity == null) { + throw new FebsException("视频不存在"); + } + + VideoMemberEntity loginUser = LoginUserUtil.getLoginUser(); + VideoInfoVo videoInfoVo = VideoConversion.INSTANCE.videoInfoEntityToInfoVo(videoInfoEntity); + List<VideoInfoItemVo> items = VideoConversion.INSTANCE.videoItemEntitiesToItemVoes(videoInfoEntity.getItems()); + videoInfoVo.setItems(items); + + VideoMasterDataEntity data = this.videoMasterDataMapper.selectDataByMasterId(videoInfoEntity.getId()); + videoInfoVo.setPlayCnt(data.getPlayCnt()); + videoInfoVo.setCollectCnt(data.getCollectCnt()); + videoInfoVo.setStarCnt(data.getStarCnt()); + + if (loginUser != null) { + // 是否点赞 + VideoCommentLikeEntity commentLike = this.videoCommentLikeMapper.selectCommentLikeByMemberIdAndRelateId(loginUser.getId(), videoInfoEntity.getId()); + if (commentLike != null) { + videoInfoVo.setIsLike(1); + } else { + videoInfoVo.setIsLike(2); + } + + // 是否收藏 + VideoCollectionEntity collection = this.videoCollectionMapper.selectVideoCollectionByVideoIdAndMemberId(videoInfoEntity.getId(), loginUser.getId()); + if (collection != null) { + videoInfoVo.setIsCollect(1); + } else { + videoInfoVo.setIsCollect(2); + } + } + + // 视频是否需要vip + if (AppContants.FLAG_INT_N.equals(videoInfoEntity.getIsFree())) { + // 判断用户是否登录 + if (loginUser == null) { + videoInfoVo.setNotLogin(AppContants.FLAG_INT_N); + return videoInfoVo; + } + + // 判断用户是否为vip + VideoMemberEntity member = this.videoMemberMapper.selectById(loginUser.getId()); + if (AppContants.FLAG_INT_N.equals(member.getIsVip())) { + videoInfoVo.setNotVip(AppContants.FLAG_INT_N); + return videoInfoVo; + } + } + + + VideoMasterItemsEntity currentItem = this.videoMasterItemsMapper.selectItemByVideoIdAndItemId(videoId, itemId); + if (currentItem == null) { + throw new FebsException("视频不存在"); + } + + videoInfoVo.setNotLogin(AppContants.FLAG_INT_Y); + videoInfoVo.setNotVip(AppContants.FLAG_INT_Y); + videoInfoVo.setSubTitle(currentItem.getName()); + videoInfoVo.setVideoUrl(currentItem.getVideoUrl()); + videoInfoVo.setThumb(currentItem.getThumb()); + videoInfoVo.setItemId(currentItem.getId()); + videoInfoVo.setTimeLength(currentItem.getTimeLength()); + + // 增加播放量 + this.videoMasterDataService.modifyVideoData(videoInfoEntity.getId(), 1, 1); + + // 历史记录 + if (loginUser != null) { + VideoHistoryEntity history = this.videoHistoryMapper.selectByMemberIdAndVideoId(loginUser.getId(), videoInfoEntity.getId()); + if (history == null) { + history = new VideoHistoryEntity(); + history.setVideoId(videoInfoEntity.getId()); + history.setMemberId(loginUser.getId()); + history.setVideoItemId(currentItem.getId()); + this.videoHistoryMapper.insert(history); + } else { + history.setUpdatedTime(new Date()); + history.setVideoItemId(currentItem.getId()); + this.videoHistoryMapper.updateById(history); + } + } + + 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 + this.videoMasterDataService.modifyVideoData(videoMasterInfoEntity.getId(), -1, 2); +// 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 + + this.videoMasterDataService.modifyVideoData(videoMasterInfoEntity.getId(), 1, 2); +// 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); + + VideoMasterInfoEntity videoMasterInfoEntity = this.baseMapper.selectById(relateId); + if(videoCommentLikeEntity != null){ + if(1 == type){ + //视频 + if(videoMasterInfoEntity == null){ + throw new FebsException("视频不存在"); + } + videoCommentLikeMapper.deleteById(videoCommentLikeEntity.getId()); + //点赞数-1 + this.videoMasterDataService.modifyVideoData(videoMasterInfoEntity.getId(), -1, 3); +// 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 + + this.videoMasterDataService.modifyVideoData(videoMasterInfoEntity.getId(), 1, 3); +// 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("成功"); + } } -- Gitblit v1.9.1