feat: 迁移自定义功能至 1.5.9.9 版本

包含音乐源限制、CI 防 OOM 优化、数据库连接池优化、管理端权限及 UI 细节定制等功能
This commit is contained in:
2026-09-12 19:26:42 +08:00
parent 34f0679117
commit 1106aeea6c
161 changed files with 18963 additions and 27900 deletions
+4 -5
View File
@@ -1,12 +1,12 @@
import { createError, defineEventHandler, getQuery } from 'h3'
import { db } from '~/drizzle/db'
import { songs, users, votes, songReplayRequests } from '~/drizzle/schema'
import { count, countDistinct, desc, eq, sql } from 'drizzle-orm'
import { count, desc, eq, sql } from 'drizzle-orm'
export default defineEventHandler(async (event) => {
// 检查认证和权限
const user = event.context.user
if (!user || !['SONG_ADMIN', 'ADMIN', 'SUPER_ADMIN'].includes(user.role)) {
if (!user || !['ADMIN', 'SUPER_ADMIN'].includes(user.role)) {
throw createError({
statusCode: 403,
message: '需要管理员权限'
@@ -30,15 +30,14 @@ export default defineEventHandler(async (event) => {
artist: songs.artist,
requesterName: users.name,
requesterUsername: users.username,
// insert-only 模型下同一用户可能有多条申请,按申请人去重计数
count: countDistinct(songReplayRequests.userId)
count: count(songReplayRequests.id)
})
.from(songs)
.leftJoin(users, eq(songs.requesterId, users.id))
.leftJoin(songReplayRequests, eq(songs.id, songReplayRequests.songId))
.where(semester && semester !== 'all' ? eq(songs.semester, semester) : sql`1=1`)
.groupBy(songs.id, songs.title, songs.artist, users.name, users.username)
.orderBy(desc(countDistinct(songReplayRequests.userId)))
.orderBy(desc(count(songReplayRequests.id)))
.limit(limit)
} else {
// 按投票数排行(默认)