java/wangpan-common/target/classes/com/wangpan/common/dal/mapper/TmdbCacheMapper.xml
liRQ 1f498d2396 feat: 完成网盘电影刮削系统全量功能开发
本次提交完成了整个网盘电影刮削系统的功能开发,包含以下核心改动:
1.  新增个人资料模块,支持用户修改用户名和头像上传
2.  实现电影刮削状态查询接口,可查看刮削进度、结果和失败原因
3.  完善每日推荐功能,支持当日固定推荐结果缓存
4.  新增图标清理定时任务,自动清理过期图标文件
5.  优化数据库查询映射,修复关联表查询错误
6.  统一各服务配置,移除调试日志并升级加密配置
7.  新增MinIO工具类和文件上传支持
8.  完善接口文档,补充所有新增API的说明示例
2026-06-25 18:25:08 +08:00

91 lines
4.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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">
<!-- TMDB刮削缓存 Mapper XML存放复杂SQL简单CRUD由MyBatis-Plus BaseMapper自动提供 -->
<mapper namespace="com.wangpan.common.dal.mapper.TmdbCacheMapper">
<!-- 根据电影ID查询有效缓存 -->
<select id="findByMovieId" resultType="com.wangpan.common.dal.dataobject.TmdbCacheDO">
SELECT * FROM wp_tmdb_cache WHERE movie_id = #{movieId} AND status = 'active'
</select>
<!-- 根据TMDB ID查询有效缓存列表 -->
<select id="findByTmdbId" resultType="com.wangpan.common.dal.dataobject.TmdbCacheDO">
SELECT * FROM wp_tmdb_cache WHERE tmdb_id = #{tmdbId} AND status = 'active'
</select>
<!-- 分页查询用户缓存(含关联电影标题) -->
<select id="queryByUserId" resultType="java.util.Map">
SELECT c.*, m.title AS movie_title
FROM wp_tmdb_cache c
LEFT JOIN wp_drive_movie m ON c.movie_id = m.id
WHERE c.user_id = #{userId} AND c.status = 'active'
ORDER BY c.cache_time DESC
LIMIT #{pageSize} OFFSET #{pageNo}
</select>
<!-- 查询所有过期的缓存ID列表 -->
<select id="findExpiredCaches" resultType="java.lang.Long">
SELECT id FROM wp_tmdb_cache WHERE cache_time &lt; #{expireBefore} AND status = 'active'
</select>
<!-- 新增或更新缓存记录UPSERT -->
<insert id="saveOrUpdate" parameterType="map">
INSERT INTO wp_tmdb_cache (
movie_id, user_id, tmdb_id, title, original_title, overview,
release_date, poster_path, backdrop_path, local_poster_url,
tmdb_rating, vote_count, runtime, genres, directors, casts,
original_language, production_countries, status, cache_time
) VALUES (
#{data.movieId}, #{data.userId}, #{data.tmdbId}, #{data.title}, #{data.originalTitle}, #{data.overview},
#{data.releaseDate}, #{data.posterPath}, #{data.backdropPath}, #{data.localPosterUrl},
#{data.tmdbRating}, #{data.voteCount}, #{data.runtime}, #{data.genres}, #{data.directors}, #{data.casts},
#{data.originalLanguage}, #{data.productionCountries}, 'active', NOW()
)
ON DUPLICATE KEY UPDATE
tmdb_id = VALUES(tmdb_id),
title = VALUES(title),
original_title = VALUES(original_title),
overview = VALUES(overview),
release_date = VALUES(release_date),
poster_path = VALUES(poster_path),
backdrop_path = VALUES(backdrop_path),
local_poster_url = VALUES(local_poster_url),
tmdb_rating = VALUES(tmdb_rating),
vote_count = VALUES(vote_count),
runtime = VALUES(runtime),
genres = VALUES(genres),
directors = VALUES(directors),
casts = VALUES(casts),
original_language = VALUES(original_language),
production_countries = VALUES(production_countries),
status = 'active',
cache_time = NOW()
</insert>
<!-- 批量将缓存标记为过期 -->
<update id="markAsExpired">
UPDATE wp_tmdb_cache SET status = 'expired' WHERE id IN
<foreach collection="cacheIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 删除指定电影的缓存 -->
<delete id="deleteByMovieId">
DELETE FROM wp_tmdb_cache WHERE movie_id = #{movieId}
</delete>
<!-- 获取用户的缓存统计信息 -->
<select id="getStatistics" resultType="java.util.Map">
SELECT
COUNT(*) AS totalCached,
SUM(CASE WHEN cache_time >= DATE_SUB(NOW(), INTERVAL 1 DAY) THEN 1 ELSE 0 END) AS todayCached,
SUM(CASE WHEN cache_time &lt; DATE_SUB(NOW(), INTERVAL 7 DAY) THEN 1 ELSE 0 END) AS expiredCount
FROM wp_tmdb_cache
WHERE user_id = #{userId}
</select>
</mapper>