## 后端更改 ### 新增功能 - 添加手机号+密码登录 API (`POST /user/login-with-password`) - 新增 LoginWithPasswordDto 验证手机号格式和密码长度 - 实现 loginWithPassword 服务方法,使用 bcrypt 验证密码 - 返回 JWT tokens(accessToken + refreshToken) ### 代码优化 - 修复 phone.validator.ts 中的 TypeScript 类型错误(Object -> object) ## 前端更改 ### 新增功能 - 实现手机号+密码登录页面 (phone_login_page.dart) - 完整的表单验证(手机号格式、密码长度) - 集成 AccountService.loginWithPassword API - 登录成功后自动更新认证状态并跳转主页 ### 账号服务优化 - 在 AccountService 中添加 loginWithPassword 方法 - 调用后端 login-with-password API - 自动保存认证数据(tokens、用户信息) - 使用 _savePhoneAuthData 统一保存逻辑 ### UI 文案更新 - 向导页文案修改:"创建账号" → "注册账号" - 更新标题、副标题和按钮文本 - 添加"恢复账号"按钮,跳转到手机号密码登录页 ## 已验证功能 ✅ 前端代码编译通过(0 errors, 仅有非关键警告) ✅ 后端代码编译通过(0 errors, 仅有非关键警告) ✅ 30天登录状态保持(JWT refresh token 已配置为30天) ✅ 自动路由逻辑(有登录状态直接进入主页) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .claude | ||
| database | ||
| docs | ||
| prisma | ||
| scripts | ||
| src | ||
| test | ||
| .dockerignore | ||
| .env.development | ||
| .env.example | ||
| .env.production | ||
| .env.test | ||
| .eslintrc.js | ||
| .gitignore | ||
| .prettierrc | ||
| Dockerfile | ||
| Identity_Service_Context_dir_Architecture.png | ||
| README.md | ||
| deploy.sh | ||
| docker-compose.yml | ||
| nest-cli.json | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
README.md
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. 安装依赖
npm install
2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件配置数据库等信息
3. 初始化数据库
npm run prisma:generate
npm run prisma:migrate
4. 启动服务
# 开发模式
npm run start:dev
# 生产模式
npm run build
npm run start:prod
5. Docker部署
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 |
领域不变式
- 手机号在系统内唯一(可为空)
- 账户序列号全局唯一且递增
- 每个账户最多5个设备同时登录
- KYC认证通过后身份信息不可修改
- 每个区块链地址只能绑定一个账户
- 推荐人序列号一旦设置终生不可修改
- 助记词必须加密存储,只在创建时返回一次
- 三条链的钱包地址必须从同一个助记词派生
License
Proprietary