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