管理端新增冠军盘列表/编辑、展开懒加载与 ECharts 修复;各列表页去掉重复标题。玩家端支持多赛事冠军盘、分批加载与语言切换刷新。API 扩展 outright CRUD 与列表性能优化。 Co-authored-by: Cursor <cursoragent@cursor.com>
6.7 KiB
6.7 KiB
默认数据说明
执行 pnpm db:migrate 后数据库仅有表结构;执行 pnpm db:seed 后会写入下文演示数据。
种子脚本位置:apps/api/prisma/seed.ts。
注意:以下为开发演示用途。生产环境务必修改密码、
JWT_SECRET,勿直接使用默认账号。
migrate 与 seed 的区别
| 命令 | 作用 |
|---|---|
pnpm db:migrate |
按 Prisma 迁移建表 / 改表(用户、赛事、盘口、注单等) |
pnpm db:seed |
在已有表结构中写入演示账号、赛事、赔率、内容等 |
推荐顺序:先 db:migrate,再 db:seed。
种子多为 upsert:重复执行一般不会重复创建用户,但会补全赛事、48 强夺冠盘等。
一、默认账号
| 用户名 | 密码 | 角色 | 说明 |
|---|---|---|---|
admin |
Admin@123 |
平台管理员 | 绑定 SUPER_ADMIN 角色 |
agent1 |
Agent@123 |
一级代理 | 授信额度 100,000 |
agent2 |
Agent@123 |
二级代理 | 上级为 agent1,授信 30,000 |
player1 |
Player@123 |
玩家 | 挂靠 agent1 |
| 入口 | 地址 |
|---|---|
| 管理后台(admin / agent1 / agent2) | http://localhost:5174 |
| 玩家前台(player1) | http://localhost:5173 |
| 接口 | 路径 |
|---|---|
| 管理端登录 | POST /api/manage/auth/login |
| 玩家端登录 | POST /api/player/auth/login |
二、默认环境与端口
| 项 | 默认值 |
|---|---|
| API | http://localhost:3000 ,全局前缀 /api |
| Swagger | http://localhost:3000/api/docs |
| 管理后台 | http://localhost:5174 |
| 玩家前台 | http://localhost:5173 |
| Docker PostgreSQL | 用户/密码/库:thebet365 @ localhost:5432 |
| Docker Redis | localhost:6379(当前 API 逻辑以 Postgres 为主) |
apps/api/.env 模板见根目录 .env.example,主要项:
| 变量 | 示例 | 说明 |
|---|---|---|
DATABASE_URL |
postgresql://thebet365:thebet365@localhost:5432/thebet365 |
数据库连接 |
JWT_SECRET |
长随机串 | 生产必须修改 |
JWT_PLAYER_EXPIRES |
24h |
玩家 Token |
JWT_ADMIN_EXPIRES |
2h |
管理员 Token |
JWT_AGENT_EXPIRES |
8h |
代理 Token |
PORT |
3000 |
API 端口 |
UPLOAD_DIR |
空 | 默认 apps/api/uploads |
三、默认赛事与盘口
联赛
| 代码 | 名称 |
|---|---|
EPL |
英超 / Premier League |
WC2026 |
2026 世界杯(加拿大、墨西哥、美国) |
已发布场次(约 9 场)
- 英超 2 场:如曼联 vs 切尔西(开球时间为相对当前的演示时间)
- 世界杯 7 场:如墨西哥-南非、美国-巴拉圭、法国-阿根廷等(2026-06 固定日期)
每场在尚无盘口时会自动创建演示玩法,包括但不限于:
- 全场 / 半场:独赢、让球、大小、单双
- 全场 / 半场 / 下半场:波胆(多档比分选项)
赔率均为种子脚本中的示例数值,可在管理后台赛事相关流程中调整(非冠军盘)。
世界杯 48 强夺冠盘
| 项 | 说明 |
|---|---|
| 数据来源 | apps/api/src/domains/catalog/wc2026-outright-teams.ts |
| 队伍数 | 48 支,含排名与中英文名 |
| 默认赔率 | 如法国 4.95、英格兰 6.3、苏格兰 2500 等 |
| 玩家端 | 投注页 /bet → 「优胜冠军」:按后台已发布赛事折叠展示,多赛事可分别展开;选项过多时点击 加载更多(须玩家账号) |
| 管理端 | 菜单 「优胜冠军」 → 选择赛事 → 可增删队伍、改赔率;世界杯可 导入 48 强基准 |
| 恢复基准 | 优胜冠军 页点击 「导入世界杯 48 强」 与代码表对齐 |
pnpm db:seed 会以 forceCanonical: true 同步 48 强;已有选项的赔率仅在「应用基准」或重新 seed 时按文件覆盖。
四、玩家演示数据(player1)
| 项 | 默认值 |
|---|---|
| 可用余额 | 88,888.88 |
| 账变流水 | 2 笔演示充值(DEMO-DEP-001 / DEMO-DEP-002) |
| 语言偏好 | zh-CN |
| 示例注单 | DEMO-BET-001:待结算单关;DEMO-BET-002:已赢且已结算单关 |
五、运营内容(玩家首页)
| 类型 | 数量 | 说明 |
|---|---|---|
| Banner | 3 | 欢迎投注、首存礼遇、热门赛事 |
| 走马灯(TICKER) | 1 | 欢迎语 + 理性投注提示 |
| 公告(NOTICE) | 1 | 每周一 04:00–05:00 维护通知 |
图片路径示例:/uploads/banners/welcome.svg 等。
重复执行 seed 时,已存在的同类内容可能因 catch 跳过,不会无限重复插入。
六、权限与库内多语言
角色与权限
- 角色:
SUPER_ADMIN(超级管理员) - 权限示例:
users.create、users.view、agents.create、agents.view、wallet.deposit、wallet.withdraw、matches.manage、settlement.confirm、cashback.confirm、content.manage、reports.view
i18n_messages 表
种子仅写入少量玩家端 key(中 / 英 / 马来),例如 nav.home、bet.place_bet。
管理后台与玩家端大部分文案在代码内(admin-messages、player 内 vue-i18n),不全部存数据库。
七、管理后台默认行为
| 项 | 默认 |
|---|---|
| 界面语言 | 中文 zh-CN(localStorage 键 admin_locale) |
| 可选语言 | 中文、English、Bahasa Melayu |
| 登录页 | 若开启「快速登录(调试)」可一键 admin / agent |
八、玩家端看不到「优胜冠军」时
- 使用 玩家账号 登录(
player1/Player@123),代理或管理员账号无法访问GET /player/outrights。 - 确认 API 已启动:
pnpm dev:api。 - 确认已种子:
pnpm db:seed(或管理端 优胜冠军 → 导入世界杯 48 强)。 - 进入 投注 页,点顶部 优胜冠军(不是「赛事」标签)。
- 浏览器 F12 → Network,看
/api/player/outrights是否 200 且data数组非空。
后台有数据、玩家端没有:多为玩家接口原先只查 OPEN 盘口,与后台查询不一致;现已改为与管理端「优胜冠军」页共用 OutrightService 数据源。修改后需 重启 API。
九、如何查看 / 重置
# 可视化浏览所有表
pnpm db:studio
# 重新写入种子(不删表,多为 upsert)
pnpm db:seed
仅想恢复 48 强夺冠赔率 为代码基准:管理后台 → 优胜冠军 → 导入世界杯 48 强。
清空数据库后重来:
docker compose down -v # 会删除 Docker 数据卷,慎用
docker compose up -d
pnpm db:migrate
pnpm db:seed