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

---
 src/main/resources/mapper/film/FilmWorksMapper.xml |   92 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 1 deletions(-)

diff --git a/src/main/resources/mapper/film/FilmWorksMapper.xml b/src/main/resources/mapper/film/FilmWorksMapper.xml
index 45a3347..9b19ce0 100644
--- a/src/main/resources/mapper/film/FilmWorksMapper.xml
+++ b/src/main/resources/mapper/film/FilmWorksMapper.xml
@@ -6,15 +6,51 @@
         SELECT
         t.*,
         c.name AS  nickname,
-        c.cover AS  avatar
+        c.cover AS  avatar,
+        COALESCE(l.like_count, 0) AS vo_like_count,
+        COALESCE(com.comment_count, 0) AS vo_comment_count,
+        COALESCE(col.collect_count, 0) AS vo_collect_count,
+        CASE WHEN l_user.status = 1 THEN 1 ELSE 0 END AS liked,
+        CASE WHEN col_user.status = 1 THEN 1 ELSE 0 END AS collected
         FROM
         film_works t
         LEFT JOIN
         t_customer_info c
         ON
         t.create_by = c.user_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS like_count
+        FROM film_likes
+        WHERE status = 1
+        GROUP BY film_id
+        ) l ON t.id = l.film_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS comment_count
+        FROM film_comments
+        WHERE state = 1
+        GROUP BY film_id
+        ) com ON t.id = com.film_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS collect_count
+        FROM film_collects
+        WHERE status = 1
+        GROUP BY film_id
+        ) col ON t.id = col.film_id
+        LEFT JOIN (
+        SELECT film_id, status
+        FROM film_likes
+        WHERE create_by = #{dto.userId}
+        ) l_user ON t.id = l_user.film_id
+        LEFT JOIN (
+        SELECT film_id, status
+        FROM film_collects
+        WHERE create_by = #{dto.userId}
+        ) col_user ON t.id = col_user.film_id
         WHERE
         t.deleted = 0
+        <if test="dto.id != null and dto.id != ''">
+            AND t.id  = #{dto.id}
+        </if>
         <if test="dto.nameCn != null and dto.nameCn != ''">
             AND t.name_cn LIKE CONCAT('%', #{dto.nameCn}, '%')
         </if>
@@ -48,4 +84,58 @@
         t.update_time DESC
     </select>
 
+
+    <select id="selectInfoById" resultType="com.mzl.flower.dto.response.film.FilmWorksVO">
+        SELECT
+        t.*,
+        c.name AS  nickname,
+        c.cover AS  avatar,
+        COALESCE(l.like_count, 0) AS vo_like_count,
+        COALESCE(com.comment_count, 0) AS vo_comment_count,
+        COALESCE(col.collect_count, 0) AS vo_collect_count,
+        CASE WHEN l_user.status = 1 THEN 1 ELSE 0 END AS liked,
+        CASE WHEN col_user.status = 1 THEN 1 ELSE 0 END AS collected
+        FROM
+        film_works t
+        LEFT JOIN
+        t_customer_info c
+        ON
+        t.create_by = c.user_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS like_count
+        FROM film_likes
+        WHERE status = 1
+        GROUP BY film_id
+        ) l ON t.id = l.film_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS comment_count
+        FROM film_comments
+        WHERE state = 1
+        GROUP BY film_id
+        ) com ON t.id = com.film_id
+        LEFT JOIN (
+        SELECT film_id, COUNT(*) AS collect_count
+        FROM film_collects
+        WHERE status = 1
+        GROUP BY film_id
+        ) col ON t.id = col.film_id
+        LEFT JOIN (
+        SELECT film_id, status
+        FROM film_likes
+        WHERE create_by = #{userId}
+        ) l_user ON t.id = l_user.film_id
+        LEFT JOIN (
+        SELECT film_id, status
+        FROM film_collects
+        WHERE create_by = #{userId}
+        ) col_user ON t.id = col_user.film_id
+        WHERE
+        t.deleted = 0
+        <if test="id != null and id != ''">
+            AND t.id  = #{id}
+        </if>
+        ORDER BY
+        t.update_time DESC
+    </select>
+
 </mapper>

--
Gitblit v1.9.3