From 790d073559bfc15e9d1130fb9d51e9d673985cc7 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期五, 13 六月 2025 13:45:47 +0800
Subject: [PATCH] add: 评论开发

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

diff --git a/src/main/resources/mapper/film/FilmWorksMapper.xml b/src/main/resources/mapper/film/FilmWorksMapper.xml
index 45a3347..fdcdac5 100644
--- a/src/main/resources/mapper/film/FilmWorksMapper.xml
+++ b/src/main/resources/mapper/film/FilmWorksMapper.xml
@@ -6,17 +6,56 @@
         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>
+        <if test="dto.nameEn != null and dto.nameEn != ''">
+            AND t.name_en LIKE CONCAT('%', #{dto.nameEn}, '%')
         </if>
         <if test="dto.status != null and dto.status != ''">
             AND t.status = #{dto.status}
@@ -24,8 +63,17 @@
         <if test="dto.type != null and dto.type != ''">
             AND t.type = #{dto.type}
         </if>
+        <if test="dto.userType != null and dto.userType != ''">
+            AND t.user_type = #{dto.userType}
+        </if>
+        <if test="dto.releaseYear != null and dto.releaseYear != ''">
+            AND t.release_year = #{dto.releaseYear}
+        </if>
         <if test="dto.classify != null and dto.classify != ''">
             AND t.classify = #{dto.classify}
+        </if>
+        <if test="dto.category != null and dto.category != ''">
+            AND t.keywords LIKE CONCAT('%', #{dto.category}, '%')
         </if>
         <if test="dto.createDateBegin != null">
             <![CDATA[
@@ -45,6 +93,60 @@
             OR t.director LIKE CONCAT('%', #{dto.keywords}, '%'))
         </if>
         ORDER BY
+        t.sticky_weight 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>
 

--
Gitblit v1.9.3