games-development-ai/contracts/db-schemas/V1.0.0__create_game_project.sql
zizi 063ec4edf2 docs(rename): ③ 文档/契约漂移清理——contracts+docs+根文档 yudao 标识同步 com.wanxiang.huijing(follow-up,脚本)
- 范围:全仓除已完成的 game-cloud/game-admin(及排除区);91 文件
- cn.iocoder.yudao→com.wanxiang.huijing / cn.wanxiang.game→com.wanxiang.huijing.game / cn.iocoder.cloud→com.wanxiang / Yudao*→Huijing* / bare yudao→huijing
- 含 contracts/api-schemas(apiInterface FQCN)、docs/architecture+agent-specs(含中文名,git ls-files -z 修复)、AGENTS.md/CLAUDE.md 等根文档
- 保留不动:上游归属 URL(gitee/github yudaocode·YunaiV,改则断链+违反署名)、game-cloud Flyway 迁移注释(保 checksum)、lockfile(装包重生)
- 纯文档/字符串,零构建影响(game-cloud/game-admin 字节码未动)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 14:32:44 +00:00

121 lines
9.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================================================
-- 契约 #2 DB 迁移 | 模块project黄金模板模块| ownerWS1
-- 文件V1.0.0__create_game_project.sqlFlyway已合入禁止修改回滚写新补偿迁移
-- 内容project 模块核心表 —— 游戏/版本/审核记录 + 双轨专区 Zone + 按 Zone 分区
-- 约定InnoDB + utf8mb4显式列含 Huijing 审计列;状态机用 tinyint非法流转由服务端拒绝
-- 错误码段project = 1-100-***-***
-- =============================================================================
-- -----------------------------------------------------------------------------
-- 表game_project —— 游戏项目主表Game 实体,含状态机)
-- 状态机 status0草稿 → 1审核中 →(2通过/3拒绝)→ 4已发布 →(5下架/6封禁)
-- 合法流转由 ProjectService 校验DO 层不承载校验
-- -----------------------------------------------------------------------------
CREATE TABLE `game_project` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '游戏项目 ID= GamePackage.gameId',
`creator_user_id` BIGINT NOT NULL COMMENT '创作者用户 IDDataPermission创作者只见自己数据',
`title` VARCHAR(60) NOT NULL DEFAULT '' COMMENT '标题',
`summary` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '简介',
`cover_url` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '封面图 URL首屏卡片展示',
`tags` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '标签逗号分隔≤10 个)',
`template_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '玩法模板 ID',
`age_rating` VARCHAR(8) NOT NULL DEFAULT 'all' COMMENT '适龄提示all/8+/12+/16+(发布前必填,门禁⑦)',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态机0草稿 1审核中 2已通过 3已拒绝 4已发布 5已下架 6已封禁',
`current_version_id` BIGINT NULL COMMENT '当前生效版本 IDgame_version.id',
`launch_zone_id` BIGINT NULL COMMENT '发布去向专区 IDlaunchZone←G1',
`featured` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否精选池0否 1是',
`play_count` BIGINT NOT NULL DEFAULT 0 COMMENT '累计试玩数telemetry 回写)',
`like_count` BIGINT NOT NULL DEFAULT 0 COMMENT '累计点赞数',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者Huijing 审计列)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除0未删 1已删',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 IDHuijing 多租户兼容MVP 单租户=0',
PRIMARY KEY (`id`),
KEY `idx_creator_status` (`creator_user_id`, `status`) COMMENT '我的项目列表查询',
KEY `idx_status_update` (`status`, `update_time`) COMMENT '审核队列/精选按状态+时间',
KEY `idx_launch_zone` (`launch_zone_id`) COMMENT '按 Zone 分区'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '游戏项目主表';
-- -----------------------------------------------------------------------------
-- 表game_version —— 游戏版本表GameVersion版本管理 + 草稿/发布)
-- -----------------------------------------------------------------------------
CREATE TABLE `game_version` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '版本 ID= GamePackage.versionId',
`game_id` BIGINT NOT NULL COMMENT '所属游戏 ID',
`version_no` INT NOT NULL DEFAULT 1 COMMENT '版本号(同游戏内递增)',
`gen_task_id` VARCHAR(64) NULL COMMENT '生成任务 IDaigc',
`package_url` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'GamePackagemanifestOSS URL按 /games/{gameId}/versions/{versionId}/ 版本化',
`bundle_size` BIGINT NOT NULL DEFAULT 0 COMMENT '包总字节(编译期门禁)',
`checksum` CHAR(64) NOT NULL DEFAULT '' COMMENT '整包 sha256Manifest 完整性校验)',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '版本状态0草稿 1已编译 2预览就绪 3已发布',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 ID',
PRIMARY KEY (`id`),
KEY `idx_game_version` (`game_id`, `version_no`) COMMENT '按游戏查版本'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '游戏版本表';
-- -----------------------------------------------------------------------------
-- 表game_review_record —— 审核记录表ReviewRecord含锁风门 Gate 二态)
-- -----------------------------------------------------------------------------
CREATE TABLE `game_review_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '审核记录 ID',
`game_id` BIGINT NOT NULL COMMENT '游戏 ID',
`version_id` BIGINT NOT NULL COMMENT '版本 ID',
`reviewer_user_id` BIGINT NULL COMMENT '审核人 ID人工审核',
`decision` TINYINT NOT NULL COMMENT '审核决策1通过 2拒绝 3下架',
`gate_result` VARCHAR(16) NOT NULL DEFAULT 'pass' COMMENT '锁风门 Gate 二态pass/block←G2owner=compliance 聚合裁决)',
`reason` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '拒绝/下架理由(回填给创作者)',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 ID',
PRIMARY KEY (`id`),
KEY `idx_game` (`game_id`, `create_time`) COMMENT '按游戏查审核历史'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '审核记录表';
-- -----------------------------------------------------------------------------
-- 表game_zone —— 专区表(双轨 Zone官方精选 / UGC 普通←G1owner=project
-- -----------------------------------------------------------------------------
CREATE TABLE `game_zone` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '专区 ID',
`name` VARCHAR(64) NOT NULL COMMENT '专区名称',
`type` TINYINT NOT NULL COMMENT '专区类型双轨1官方精选 2UGC普通',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态0停用 1启用',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 ID',
PRIMARY KEY (`id`),
KEY `idx_type_status` (`type`, `status`, `sort`) COMMENT '按双轨类型取启用专区'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '专区表(双轨)';
-- -----------------------------------------------------------------------------
-- 表game_project_zone —— 游戏↔专区关系表(按 Zone 分区推荐/浏览←G1
-- -----------------------------------------------------------------------------
CREATE TABLE `game_project_zone` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '关系 ID',
`game_id` BIGINT NOT NULL COMMENT '游戏 ID',
`zone_id` BIGINT NOT NULL COMMENT '专区 ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户 ID',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_game_zone` (`game_id`, `zone_id`) COMMENT '同一游戏不重复归入同一专区',
KEY `idx_zone` (`zone_id`) COMMENT 'feed 按 Zone 分区取游戏'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '游戏专区关系表';
-- 初始化双轨专区种子(官方精选 + UGC 广场),供 feed 双专区浏览
INSERT INTO `game_zone` (`name`, `type`, `sort`, `creator`) VALUES
('官方精选', 1, 1, 'system'),
('创作广场', 2, 2, 'system');