<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.mzl.flower.mapper.film.FilmWorksMapper">
|
|
<select id="queryPage" 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 = #{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}
|
</if>
|
<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.createDateBegin != null">
|
<![CDATA[
|
AND t.create_time >= #{dto.createDateBegin}
|
]]>
|
</if>
|
<if test="dto.createDateEnd != null">
|
<![CDATA[
|
AND t.create_time <= #{dto.createDateEnd}
|
]]>
|
</if>
|
<if test="dto.keywords != null and dto.keywords != ''">
|
AND (t.name_cn LIKE CONCAT('%', #{dto.keywords}, '%')
|
OR t.name_en LIKE CONCAT('%', #{dto.keywords}, '%')
|
OR t.keywords LIKE CONCAT('%', #{dto.keywords}, '%')
|
OR t.synopsis LIKE CONCAT('%', #{dto.keywords}, '%')
|
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>
|
|
</mapper>
|