sync(theme-3): 同步 main 最新 API/Admin 与玩家端逻辑

从 main 同步站内信手动发送、媒体库选择、列表子路由重构等 API/Admin 改动;玩家端仅合并 ADMIN_CUSTOM 富文本、消息预览与充值截图压缩逻辑,保留 theme-3 样式。
This commit is contained in:
2026-06-22 14:11:47 +08:00
parent f92c5e8a59
commit d8e08aaed0
50 changed files with 4653 additions and 1186 deletions

View File

@@ -816,22 +816,44 @@ model DepositOrderAuditLog {
}
model PlayerMessage {
id BigInt @id @default(autoincrement())
userId BigInt @map("user_id")
type String @db.VarChar(32)
title String @db.VarChar(256)
body String @db.Text
payload Json?
readAt DateTime? @map("read_at")
createdAt DateTime @default(now()) @map("created_at")
id BigInt @id @default(autoincrement())
userId BigInt @map("user_id")
type String @db.VarChar(32)
title String @db.VarChar(256)
body String @db.Text
payload Json?
broadcastId BigInt? @map("broadcast_id")
readAt DateTime? @map("read_at")
createdAt DateTime @default(now()) @map("created_at")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
broadcast PlayerMessageBroadcast? @relation(fields: [broadcastId], references: [id], onDelete: Cascade)
@@index([userId, createdAt(sort: Desc)])
@@index([userId, readAt])
@@index([broadcastId])
@@map("player_messages")
}
model PlayerMessageBroadcast {
id BigInt @id @default(autoincrement())
title String @db.VarChar(256)
body String @db.Text
translations Json? @map("translations")
targetType String @map("target_type") @db.VarChar(16)
targetUserId BigInt? @map("target_user_id")
targetUsername String? @map("target_username") @db.VarChar(64)
recipientCount Int @default(0) @map("recipient_count")
createdById BigInt? @map("created_by_id")
createdByUsername String? @map("created_by_username") @db.VarChar(64)
createdAt DateTime @default(now()) @map("created_at")
messages PlayerMessage[]
@@index([createdAt(sort: Desc)])
@@map("player_message_broadcasts")
}
// ============ System Config & Audit ============
model SystemConfig {