# Identity Service RWA用户身份上下文微服务 - 基于DDD架构的NestJS实现 ## 技术栈 - **框架**: NestJS + TypeScript - **ORM**: Prisma - **消息队列**: Kafka - **缓存**: Redis (ioredis) - **区块链**: ethers.js + @scure/bip32 + bech32 ## 项目结构 ``` src/ ├── api/ # 表现层 │ ├── controllers/ # 控制器 │ └── dto/ # 请求/响应DTO ├── application/ # 应用层 │ ├── commands/ # 命令对象 │ └── services/ # 应用服务 ├── domain/ # 领域层 │ ├── aggregates/ # 聚合根 │ ├── entities/ # 实体 │ ├── events/ # 领域事件 │ ├── repositories/ # 仓储接口 │ ├── services/ # 领域服务 │ └── value-objects/ # 值对象 ├── infrastructure/ # 基础设施层 │ ├── persistence/ # 持久化 │ ├── redis/ # Redis服务 │ ├── kafka/ # Kafka事件发布 │ └── external/ # 外部服务 ├── shared/ # 共享层 │ ├── decorators/ # 装饰器 │ ├── guards/ # 守卫 │ ├── filters/ # 过滤器 │ └── exceptions/ # 异常类 └── config/ # 配置 ``` ## 核心功能 - ✅ 用户账户自动创建(首次打开APP) - ✅ 多设备管理与授权(最多5个设备) - ✅ 三链钱包地址生成(KAVA/DST/BSC) - ✅ 助记词生成与加密存储 - ✅ 序列号+助记词恢复账户 - ✅ 序列号+手机号恢复账户 - ✅ KYC实名认证 - ✅ 推荐码生成与验证 - ✅ Token自动刷新机制 ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置环境变量 ```bash cp .env.example .env # 编辑 .env 文件配置数据库等信息 ``` ### 3. 初始化数据库 ```bash npm run prisma:generate npm run prisma:migrate ``` ### 4. 启动服务 ```bash # 开发模式 npm run start:dev # 生产模式 npm run build npm run start:prod ``` ### 5. Docker部署 ```bash docker-compose up -d ``` ## API文档 启动服务后访问: http://localhost:3000/api/docs ## 主要API | 方法 | 路径 | 说明 | |------|------|------| | POST | /user/auto-create | 自动创建账户 | | POST | /user/recover-by-mnemonic | 助记词恢复 | | POST | /user/recover-by-phone | 手机号恢复 | | POST | /user/auto-login | 自动登录 | | GET | /user/my-profile | 我的资料 | | GET | /user/my-devices | 我的设备 | | POST | /user/bind-phone | 绑定手机号 | | POST | /user/submit-kyc | 提交KYC | ## 领域不变式 1. 手机号在系统内唯一(可为空) 2. 账户序列号全局唯一且递增 3. 每个账户最多5个设备同时登录 4. KYC认证通过后身份信息不可修改 5. 每个区块链地址只能绑定一个账户 6. 推荐人序列号一旦设置终生不可修改 7. 助记词必须加密存储,只在创建时返回一次 8. 三条链的钱包地址必须从同一个助记词派生 ## License Proprietary