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