feat(admin): 管理端列表分页、控制台图表与赛事导入

- 玩家/代理/赛事/注单/审计列表分页,默认每页 10 条,无页面滚动条布局

- ECharts 控制台概览、注单管理中文化与列宽优化

- zhibo 赛事字段迁移与导入,玩家编辑可改所属代理

- 管理端 API 分页与 dashboard 统计接口

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 13:49:31 +08:00
parent 2c356b2048
commit 80adc0e928
45 changed files with 6564 additions and 499 deletions

View File

@@ -0,0 +1,21 @@
-- AlterTable
ALTER TABLE "teams" ADD COLUMN IF NOT EXISTS "external_id" INTEGER,
ADD COLUMN IF NOT EXISTS "logo_url" VARCHAR(500);
-- AlterTable
ALTER TABLE "matches" ADD COLUMN IF NOT EXISTS "official_match_no" INTEGER,
ADD COLUMN IF NOT EXISTS "stage" VARCHAR(32),
ADD COLUMN IF NOT EXISTS "group_name" VARCHAR(8),
ADD COLUMN IF NOT EXISTS "live_match_id" BIGINT,
ADD COLUMN IF NOT EXISTS "addition_match_id" BIGINT,
ADD COLUMN IF NOT EXISTS "channel_id" VARCHAR(64),
ADD COLUMN IF NOT EXISTS "match_name" VARCHAR(200),
ADD COLUMN IF NOT EXISTS "venue_json" JSONB,
ADD COLUMN IF NOT EXISTS "kickoff_json" JSONB,
ADD COLUMN IF NOT EXISTS "external_status" VARCHAR(32);
-- CreateIndex
CREATE UNIQUE INDEX IF NOT EXISTS "teams_external_id_key" ON "teams"("external_id");
-- CreateIndex
CREATE UNIQUE INDEX IF NOT EXISTS "matches_live_match_id_key" ON "matches"("live_match_id");

View File

@@ -227,12 +227,14 @@ model League {
}
model Team {
id BigInt @id @default(autoincrement())
sportType String @default("FOOTBALL") @map("sport_type") @db.VarChar(20)
code String @unique @db.VarChar(64)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
id BigInt @id @default(autoincrement())
sportType String @default("FOOTBALL") @map("sport_type") @db.VarChar(20)
code String @unique @db.VarChar(64)
externalId Int? @unique @map("external_id")
logoUrl String? @map("logo_url") @db.VarChar(500)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
homeMatches Match[] @relation("HomeTeam")
awayMatches Match[] @relation("AwayTeam")
@@ -256,23 +258,33 @@ model EntityTranslation {
}
model Match {
id BigInt @id @default(autoincrement())
sportType String @default("FOOTBALL") @map("sport_type") @db.VarChar(20)
leagueId BigInt @map("league_id")
homeTeamId BigInt @map("home_team_id")
awayTeamId BigInt @map("away_team_id")
startTime DateTime @map("start_time")
status String @default("DRAFT") @db.VarChar(32)
isHot Boolean @default(false) @map("is_hot")
displayOrder Int @default(0) @map("display_order")
publishTime DateTime? @map("publish_time")
closeTime DateTime? @map("close_time")
isOutright Boolean @default(false) @map("is_outright")
createdBy BigInt? @map("created_by")
updatedBy BigInt? @map("updated_by")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
id BigInt @id @default(autoincrement())
sportType String @default("FOOTBALL") @map("sport_type") @db.VarChar(20)
leagueId BigInt @map("league_id")
homeTeamId BigInt @map("home_team_id")
awayTeamId BigInt @map("away_team_id")
startTime DateTime @map("start_time")
status String @default("DRAFT") @db.VarChar(32)
isHot Boolean @default(false) @map("is_hot")
displayOrder Int @default(0) @map("display_order")
publishTime DateTime? @map("publish_time")
closeTime DateTime? @map("close_time")
isOutright Boolean @default(false) @map("is_outright")
officialMatchNo Int? @map("official_match_no")
stage String? @db.VarChar(32)
groupName String? @map("group_name") @db.VarChar(8)
liveMatchId BigInt? @unique @map("live_match_id")
additionMatchId BigInt? @map("addition_match_id")
channelId String? @map("channel_id") @db.VarChar(64)
matchName String? @map("match_name") @db.VarChar(200)
venueJson Json? @map("venue_json")
kickoffJson Json? @map("kickoff_json")
externalStatus String? @map("external_status") @db.VarChar(32)
createdBy BigInt? @map("created_by")
updatedBy BigInt? @map("updated_by")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
league League @relation(fields: [leagueId], references: [id])
homeTeam Team @relation("HomeTeam", fields: [homeTeamId], references: [id])