feat(music): 实现热门音乐功能并优化性能

- 新增 HotMusicController 提供热门音乐接口
- 实现基于新热度算法的热门音乐列表获取
- 添加手动刷新缓存接口
- 新增 MusicService 接口和 MusicServiceImpl 实现类
- 使用 Redis 缓存热门音乐列表,提高响应速度
- 引入 HotScoreUtil 工具类计算热度分数
- 在 Music 实体中添加点赞数、收藏数、评论数和热度分数字段
- 更新数据库结构,增加相关字段
- 使用异步任务定期更新热门音乐缓存
This commit is contained in:
ikmkj
2025-07-25 21:08:18 +08:00
parent 0f483a2399
commit 7c976b760a
7 changed files with 282 additions and 18 deletions

View File

@@ -61,17 +61,25 @@ CREATE TABLE `comment` (
-- ----------------------------
DROP TABLE IF EXISTS `music`;
CREATE TABLE `music` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '音乐ID',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐名称',
`cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面URL',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐文件URL',
`lyric` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌词',
`duration` int NULL DEFAULT 0 COMMENT '时长(秒)',
`play_count` bigint NULL DEFAULT 0 COMMENT '播放次数',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`album` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '音乐ID',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐名称',
`cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面URL',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐文件URL',
`lyric` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌词',
`duration` int NULL DEFAULT 0 COMMENT '时长(秒)',
`album` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
-- Interaction and Hot Score Fields
`play_count` bigint NULL DEFAULT 0 COMMENT '播放次数',
`like_count` int NULL DEFAULT 0 COMMENT '点赞数',
`collect_count` int NULL DEFAULT 0 COMMENT '收藏数',
`comment_count` int NULL DEFAULT 0 COMMENT '评论数',
`hot_score` double NULL DEFAULT 0.0 COMMENT '热度分数',
-- Timestamps
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '音乐表' ROW_FORMAT = Dynamic;
-- ----------------------------