From 6fe5122c10a1952fb31a4aae22b39bc1c3e9fd78 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 20 Dec 2021 11:17:05 +0800 Subject: [PATCH] fix playCnt --- src/main/java/cc/mrbird/febs/video/service/IVideoMasterDataService.java | 9 ++++ src/main/java/cc/mrbird/febs/video/mapper/VideoMasterDataMapper.java | 2 + src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterDataServiceImpl.java | 62 +++++++++++++++++++++++++++++++ src/main/resources/mapper/video/VideoMasterDataMapper.xml | 5 ++ src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java | 11 +++++ 5 files changed, 89 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterDataMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterDataMapper.java index 60ba365..969f581 100644 --- a/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterDataMapper.java +++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoMasterDataMapper.java @@ -7,4 +7,6 @@ public interface VideoMasterDataMapper extends BaseMapper<VideoMasterDataEntity> { VideoMasterDataEntity selectDataByMasterId(@Param("masterId") Long masterId); + + VideoMasterDataEntity selectDataByMasterIdForUpdate(@Param("masterId") Long master); } diff --git a/src/main/java/cc/mrbird/febs/video/service/IVideoMasterDataService.java b/src/main/java/cc/mrbird/febs/video/service/IVideoMasterDataService.java new file mode 100644 index 0000000..feb5652 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/video/service/IVideoMasterDataService.java @@ -0,0 +1,9 @@ +package cc.mrbird.febs.video.service; + +import cc.mrbird.febs.video.entity.VideoMasterDataEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface IVideoMasterDataService extends IService<VideoMasterDataEntity> { + + void modifyVideoData(Long masterId, int cnt, int type); +} diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterDataServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterDataServiceImpl.java new file mode 100644 index 0000000..a83f2b6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterDataServiceImpl.java @@ -0,0 +1,62 @@ +package cc.mrbird.febs.video.service.impl; + +import cc.mrbird.febs.video.entity.VideoMasterDataEntity; +import cc.mrbird.febs.video.mapper.VideoMasterDataMapper; +import cc.mrbird.febs.video.service.IVideoMasterDataService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author wzy + * @date 2021-12-20 + **/ +@Slf4j +@Service +@RequiredArgsConstructor +public class VideoMasterDataServiceImpl extends ServiceImpl<VideoMasterDataMapper, VideoMasterDataEntity> implements IVideoMasterDataService { + + + @Override + public synchronized void modifyVideoData(Long masterId, int cnt, int type) { + VideoMasterDataEntity data = this.baseMapper.selectDataByMasterIdForUpdate(masterId); + if (data == null) { + data = new VideoMasterDataEntity(); + data.setMasterId(masterId); + data.setCollectCnt(0); + data.setPlayCnt(0); + data.setStarCnt(0); + } + + int targetCnt = 0; + switch (type) { + // 播放量 + case 1: + targetCnt = data.getPlayCnt() + cnt; + if (targetCnt < 0) { + targetCnt = 0; + } + data.setPlayCnt(targetCnt); + break; + // 收藏量 + case 2: + targetCnt = data.getCollectCnt() + cnt; + if (targetCnt < 0) { + targetCnt = 0; + } + data.setCollectCnt(targetCnt); + break; + // 点赞量 + case 3: + targetCnt = data.getStarCnt() + cnt; + if (targetCnt < 0) { + targetCnt = 0; + } + data.setStarCnt(targetCnt); + break; + } + + this.baseMapper.updateById(data); + } +} 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 fcef6c5..8f40ed5 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 @@ -13,6 +13,7 @@ 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; @@ -48,6 +49,7 @@ 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) { @@ -180,6 +182,7 @@ videoInfoVo.setStarCnt(data.getStarCnt()); if (loginUser != null) { + // 是否点赞 VideoCommentLikeEntity commentLike = this.videoCommentLikeMapper.selectCommentLikeByMemberIdAndRelateId(loginUser.getId(), videoInfoEntity.getId()); if (commentLike != null) { videoInfoVo.setIsLike(1); @@ -187,6 +190,7 @@ videoInfoVo.setIsLike(2); } + // 是否收藏 VideoCollectionEntity collection = this.videoCollectionMapper.selectVideoCollectionByVideoIdAndMemberId(videoInfoEntity.getId(), loginUser.getId()); if (collection != null) { videoInfoVo.setIsCollect(1); @@ -195,12 +199,15 @@ } } + // 视频是否需要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); @@ -222,6 +229,10 @@ 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) { diff --git a/src/main/resources/mapper/video/VideoMasterDataMapper.xml b/src/main/resources/mapper/video/VideoMasterDataMapper.xml index 8b5aaba..99f7870 100644 --- a/src/main/resources/mapper/video/VideoMasterDataMapper.xml +++ b/src/main/resources/mapper/video/VideoMasterDataMapper.xml @@ -6,4 +6,9 @@ select * from video_master_data where master_id=#{masterId} </select> + + <select id="selectDataByMasterIdForUpdate" resultType="cc.mrbird.febs.video.entity.VideoMasterDataEntity"> + select * from video_master_data + where master_id=#{masterId} for update + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1