From 8b02c916fec8819f4f1b27b21a26cca6c41b5f5d Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 14 七月 2025 09:54:05 +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