113 lines
3.5 KiB
Plaintext
113 lines
3.5 KiB
Plaintext
// =============================================================================
|
||
// Admin Service - Prisma Schema
|
||
// =============================================================================
|
||
|
||
generator client {
|
||
provider = "prisma-client-js"
|
||
}
|
||
|
||
datasource db {
|
||
provider = "postgresql"
|
||
url = env("DATABASE_URL")
|
||
}
|
||
|
||
// =============================================================================
|
||
// App Version Management
|
||
// =============================================================================
|
||
|
||
model AppVersion {
|
||
id String @id @default(uuid())
|
||
platform Platform
|
||
versionCode Int // Android: versionCode, iOS: CFBundleVersion
|
||
versionName String // 用户可见版本号,如 "1.2.3"
|
||
buildNumber String // 构建号
|
||
downloadUrl String // APK/IPA 下载地址
|
||
fileSize BigInt // 文件大小(字节)
|
||
fileSha256 String // 文件 SHA-256 校验和
|
||
minOsVersion String? // 最低操作系统版本要求
|
||
changelog String // 更新日志
|
||
isForceUpdate Boolean @default(false) // 是否强制更新
|
||
isEnabled Boolean @default(true) // 是否启用
|
||
releaseDate DateTime? // 发布日期
|
||
createdAt DateTime @default(now())
|
||
updatedAt DateTime @updatedAt
|
||
createdBy String // 创建人ID
|
||
updatedBy String? // 更新人ID
|
||
|
||
@@index([platform, isEnabled])
|
||
@@index([platform, versionCode])
|
||
@@map("app_versions")
|
||
}
|
||
|
||
enum Platform {
|
||
ANDROID
|
||
IOS
|
||
}
|
||
|
||
// =============================================================================
|
||
// Notification System (通知系统)
|
||
// =============================================================================
|
||
|
||
/// 系统通知 - 管理员发布的公告/通知
|
||
model Notification {
|
||
id String @id @default(uuid())
|
||
title String // 通知标题
|
||
content String // 通知内容
|
||
type NotificationType // 通知类型
|
||
priority NotificationPriority @default(NORMAL) // 优先级
|
||
targetType TargetType @default(ALL) // 目标用户类型
|
||
imageUrl String? // 可选的图片URL
|
||
linkUrl String? // 可选的跳转链接
|
||
isEnabled Boolean @default(true) // 是否启用
|
||
publishedAt DateTime? // 发布时间(null表示草稿)
|
||
expiresAt DateTime? // 过期时间(null表示永不过期)
|
||
createdAt DateTime @default(now())
|
||
updatedAt DateTime @updatedAt
|
||
createdBy String // 创建人ID
|
||
|
||
// 用户已读记录
|
||
readRecords NotificationRead[]
|
||
|
||
@@index([isEnabled, publishedAt])
|
||
@@index([type])
|
||
@@map("notifications")
|
||
}
|
||
|
||
/// 用户已读记录
|
||
model NotificationRead {
|
||
id String @id @default(uuid())
|
||
notificationId String
|
||
userSerialNum String // 用户序列号
|
||
readAt DateTime @default(now())
|
||
|
||
notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)
|
||
|
||
@@unique([notificationId, userSerialNum])
|
||
@@index([userSerialNum])
|
||
@@map("notification_reads")
|
||
}
|
||
|
||
/// 通知类型
|
||
enum NotificationType {
|
||
SYSTEM // 系统通知
|
||
ACTIVITY // 活动通知
|
||
REWARD // 收益通知
|
||
UPGRADE // 升级通知
|
||
ANNOUNCEMENT // 公告
|
||
}
|
||
|
||
/// 通知优先级
|
||
enum NotificationPriority {
|
||
LOW
|
||
NORMAL
|
||
HIGH
|
||
URGENT
|
||
}
|
||
|
||
/// 目标用户类型
|
||
enum TargetType {
|
||
ALL // 所有用户
|
||
NEW_USER // 新用户
|
||
VIP // VIP用户
|
||
}
|