games-development-ai/contracts/db-schemas/V12.0.0__create_game_community.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

86 lines
8.6 KiB
SQL
Raw 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 迁移 | 主题community 通知底座(站内信 + 创作者等级 + 新人奖励触发HJ-WAVE4-EXEC-001 §4.1| ownerWS5
-- 文件V12.0.0__create_game_community.sqlFlyway只新增已合入禁止修改回滚写新补偿迁移 V12.0.1
-- 设计依据docs/agent-specs/2026-06-11-Wave4-community-biz-execution.md §4.1D-B 通知底座最小集,覆盖 5/5 P0P-NTF-01/02/03/05 + P-INC-01
-- 内容community 三张新表(引架构 Doc B community 章节):
-- 1. game_community_message —— 站内消息中心四类聚合1系统 2公告 3审核 4收益P-NTF-01/02/03/05 投递落点T-CMU-06
-- 2. game_community_level —— 创作者等级P-INC-01 计数权威落点 published_countT-CMU-11 等级引擎);
-- 3. game_community_reward —— 新人奖励触发记录P-INC-01本波只写触发记录真实发放/记账留 M4
-- 守门①(必守,沿用 V10/V11 守门):本 V12 只放仓根 contracts/db-schemas/(授权源)
-- + huijing-server 执行目录(唯一执行副本),不放任何单模块 -server/db/migration/(避免同版本 V12 出现在多个 classpath jar 触发 Flyway 重复校验失败)。
-- 守门②:含中文 SQLmini-desktop 执行必须 --default-character-set=utf8mb4防乱码
-- 约定InnoDB + utf8mb4显式列 + 列级中文 COMMENT状态机用 TINYINT非法流转由 Service 校验、DO 层不承载;
-- 每表强制 Huijing 6 审计列creator / create_time / updater / update_time / deleted BIT(1) / tenant_id BIGINT全 NOT NULLMVP 单租户 tenant_id=0
-- 归属隔离列 user_id / creator_user_id 由 Mapper 强制以 getLoginUserId() 作 WHERE 谓词 enforce可信边界非 @DataPermission禁裸 select*。
-- 错误码段community = 1-107-***-***(落 -api 的 ErrorCodeConstants.java见 community.yaml
-- 系统身份写:通知由上游同进程 @Primary notify 落库(系统身份 LoginUser id=0creator/updater 写 '0' 防 NOT NULL 拒绝。
-- =============================================================================
-- -----------------------------------------------------------------------------
-- 表1game_community_message —— 站内消息中心P-NTF-01/02/03/05 投递落点T-CMU-06
-- 四类消息聚合1系统 2公告 3审核 4收益归属隔离 = Mapper 强制 user_id = getLoginUserId() 谓词,用户只见自己消息。
-- -----------------------------------------------------------------------------
CREATE TABLE `game_community_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息 ID',
`user_id` BIGINT NOT NULL COMMENT '收件人用户 ID归属隔离Mapper 强制以 getLoginUserId() 作 WHERE 谓词,用户只见自己消息)',
`type` TINYINT NOT NULL COMMENT '消息类型1系统 2公告 3审核 4收益',
`biz_ref` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '业务关联键(如 gameId/taskId/settleId供前端跳转',
`title` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '消息标题',
`content` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '消息正文(审核拒绝含原因)',
`read_status` TINYINT NOT NULL DEFAULT 0 COMMENT '已读状态0未读 1已读',
`read_time` DATETIME NULL COMMENT '已读时间',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者Huijing 审计列;系统身份投递=0',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者(系统身份写=0防 NOT NULL 拒绝)',
`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 '租户 IDMVP 单租户=0',
PRIMARY KEY (`id`),
KEY `idx_user_read` (`user_id`, `read_status`, `create_time`) COMMENT '我的消息中心列表(按已读态+时间倒序)',
KEY `idx_user_type` (`user_id`, `type`, `create_time`) COMMENT '按四类聚合查询'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '站内消息中心四类聚合T-CMU-06';
-- -----------------------------------------------------------------------------
-- 表2game_community_level —— 创作者等级P-INC-01 计数权威落点 published_countT-CMU-11
-- published_count 权威源 = project 发布成功后同进程 notify 原子累加MVP 仅维护计数 + 新人里程碑,分层留 P1。
-- -----------------------------------------------------------------------------
CREATE TABLE `game_community_level` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '等级记录 ID',
`creator_user_id` BIGINT NOT NULL COMMENT '创作者用户 ID',
`level` TINYINT NOT NULL DEFAULT 1 COMMENT '创作者等级1小白MVP 仅维护计数+新人里程碑,分层留 P1',
`published_count` INT NOT NULL DEFAULT 0 COMMENT '已发布作品数(计数权威源=project 发布成功 notify 原子累加)',
`last_milestone` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '末次已触发里程碑键(如 publish_3幂等防重复触发',
`last_milestone_time` DATETIME NULL 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`),
UNIQUE KEY `uk_creator` (`creator_user_id`, `deleted`, `tenant_id`) COMMENT '一创作者一条等级记录(幂等初始化)'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '创作者等级T-CMU-11 等级引擎)';
-- -----------------------------------------------------------------------------
-- 表3game_community_reward —— 新人奖励触发记录P-INC-01本波只写触发记录真实发放留 M4
-- 幂等同创作者同里程碑只触发一次uk_creator_milestone 防重复发钱status=0 触发待发放为本波终态1 已发放留 M4 回写。
-- -----------------------------------------------------------------------------
CREATE TABLE `game_community_reward` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '奖励触发记录 ID',
`creator_user_id` BIGINT NOT NULL COMMENT '创作者用户 ID',
`milestone` VARCHAR(32) NOT NULL COMMENT '里程碑键(如 publish_3 发满3作品',
`reward_type` TINYINT NOT NULL COMMENT '奖励类型1流量包 2现金',
`reward_amount` BIGINT NOT NULL DEFAULT 0 COMMENT '奖励额度(流量包=曝光量;现金=分BIGINT 防浮点;与 trade 同口径)',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '发放状态0已触发待发放本波终态 1已发放M4 回写)',
`granted_ref` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'M4 发放回执trade 流水 id / feed 流量包 id本波空',
`creator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者(系统身份触发=0',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者(系统身份写=0',
`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`),
UNIQUE KEY `uk_creator_milestone` (`creator_user_id`, `milestone`, `deleted`, `tenant_id`) COMMENT '同创作者同里程碑只触发一次(幂等防重复发钱)',
KEY `idx_status` (`status`) COMMENT 'M4 待发放扫描'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '新人奖励触发记录P-INC-01发放留 M4';