From fb514e661e644bc40dba3d2413a64ff5e86bf6be Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 11 六月 2025 11:02:29 +0800
Subject: [PATCH] add: 点赞、收藏功能补充

---
 src/main/java/com/mzl/flower/service/film/impl/FilmLikesServiceImpl.java |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/film/impl/FilmLikesServiceImpl.java b/src/main/java/com/mzl/flower/service/film/impl/FilmLikesServiceImpl.java
index 6a511bb..e9aa6df 100644
--- a/src/main/java/com/mzl/flower/service/film/impl/FilmLikesServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/film/impl/FilmLikesServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
 import com.mzl.flower.dto.request.film.FilmLikesDTO;
 import com.mzl.flower.dto.request.film.FilmLikesQueryDTO;
 import com.mzl.flower.dto.response.film.FilmLikesVO;
@@ -40,20 +41,32 @@
 
     @Override
     public Boolean updateFilmLikes(FilmLikesDTO filmLikesDTO) {
-        LocalDateTime now = LocalDateTime.now();
+
         // 没有,新增
-        FilmLikes filmLikes = null;
-        if (filmLikesDTO == null) {
+        FilmLikes filmLikes = filmLikesMapper.getFilmLikesByfilmIdAndCreateBy(filmLikesDTO.getFilmId(), SecurityUtils.getUserId());
+        if (filmLikes == null) {
             filmLikes = new FilmLikes();
             filmLikes.setFilmId(filmLikesDTO.getFilmId());
             filmLikes.setStatus(true);
+            filmLikes.setCreateBy(SecurityUtils.getUserId());
             if (filmLikesMapper.insert(filmLikes) <= 0) {
                 throw new ValidationException("添加评论点赞失败");
             }
         } else {
             // 状态取反
-            filmLikesDTO.setStatus(!filmLikesDTO.getStatus());
-            if (filmLikesMapper.updateById(filmLikes) <= 0) {
+            filmLikes.setStatus(!filmLikes.getStatus());
+            filmLikes.update(SecurityUtils.getUserId());
+
+            // 校验主键是否存在
+            if (filmLikes.getId() == null) {
+                throw new ValidationException("主键 ID 不能为空");
+            }
+            int affectedRows = filmLikesMapper.updateStatusById(
+                    filmLikes.getId(),         // 确保 id 是 Long 类型
+                    filmLikes.getStatus(),
+                    SecurityUtils.getUserId()  // 更新人
+            );
+            if (affectedRows <= 0) {
                 throw new ValidationException("更新评论点赞状态失败");
             }
         }

--
Gitblit v1.9.3