diff --git a/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/README.md b/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/README.md new file mode 100644 index 00000000..88168011 --- /dev/null +++ b/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/README.md @@ -0,0 +1,31 @@ +# 系统种子用户 Migration + +## 目的 + +创建一个系统种子用户,用作根推荐人,解决"第一个用户无法注册"的问题。 + +## 种子用户信息 + +- **User ID**: `1` (固定ID) +- **Account Sequence**: `SYSTEM00001` +- **推荐码**: `GENESIS` +- **昵称**: `系统` +- **状态**: ACTIVE +- **手机号**: NULL(系统用户不需要手机号) + +## 使用方式 + +第一批用户在注册时,使用推荐码 **GENESIS** 即可完成注册。 + +## 特点 + +1. ✅ 保持了推荐码必填的业务逻辑 +2. ✅ 所有用户都有完整的推荐关系链 +3. ✅ 系统用户只提供推荐码功能,不参与其他业务 +4. ✅ 使用固定 UUID,方便识别和管理 + +## 注意事项 + +- 此用户不应该被删除 +- 此用户不能登录(没有手机号和密码) +- 此用户的推荐码 `GENESIS` 可以被无限次使用 diff --git a/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/migration.sql b/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/migration.sql new file mode 100644 index 00000000..81e0f4a7 --- /dev/null +++ b/backend/services/identity-service/prisma/migrations/20251220070000_add_system_seed_user/migration.sql @@ -0,0 +1,37 @@ +-- CreateSystemSeedUser: 创建系统种子用户作为根推荐人 +-- 这个用户只用于提供推荐码,不具备登录和其他功能 + +-- 插入系统种子用户 +-- userId: 1 (固定ID) +-- accountSequence: SYSTEM00001 (系统账号标识) +-- referralCode: GENESIS (创世推荐码) +-- nickname: 系统 (必填字段) +INSERT INTO "user_accounts" ( + "user_id", + "account_sequence", + "referral_code", + "nickname", + "phone_number", + "kyc_status", + "status", + "registered_at", + "created_at", + "updated_at" +) VALUES ( + 1, -- 使用 ID 1 作为系统用户 + 'SYSTEM00001', + 'GENESIS', + '系统', -- 必填字段 + NULL, -- 系统用户不需要手机号 + 'NOT_VERIFIED', + 'ACTIVE', + NOW(), + NOW(), + NOW() +) ON CONFLICT (user_id) DO NOTHING; -- 如果已存在则跳过 + +-- 重置自增序列,确保后续用户从 100000000 开始(之前的 migration 设置) +-- 这样可以避免与系统用户 ID 冲突 +SELECT setval(pg_get_serial_sequence('user_accounts', 'user_id'), + GREATEST(100000000, (SELECT MAX(user_id) FROM user_accounts)), + false);