125 lines
3.2 KiB
Markdown
125 lines
3.2 KiB
Markdown
# 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
|