139 lines
5.0 KiB
Markdown
139 lines
5.0 KiB
Markdown
# TenantUI 个人中心(第一版)需求草案
|
||
|
||
> 更新时间:2026-02-09
|
||
> 结论来源:当前 Swagger + 数据库表结构与抽样数据(不改代码)
|
||
|
||
## 1. 背景与目标
|
||
|
||
当前租户端右上角已新增“个人中心”入口,但页面还是占位。
|
||
目标是先定义一版可落地的“个人中心可查询内容”,明确:
|
||
|
||
1. 哪些内容数据库已有且有数据。
|
||
2. 哪些内容前端可直接复用现有接口。
|
||
3. 哪些内容需要后端补接口。
|
||
|
||
## 2. 当前接口现状(Swagger)
|
||
|
||
已按规范拉取最新 Swagger:`https://api-tenant-dev.laosankeji.com/swagger/v1/swagger.json`。
|
||
|
||
当前仅 7 个路径:
|
||
|
||
- `/api/tenant/v1/auth/login`
|
||
- `/api/tenant/v1/auth/menu`
|
||
- `/api/tenant/v1/auth/permissions`
|
||
- `/api/tenant/v1/auth/profile`
|
||
- `/api/tenant/v1/auth/refresh`
|
||
- `/api/tenant/v1/Health`
|
||
- `/api/tenant/v1/merchant/info`
|
||
|
||
结论:个人中心能直接用的接口主要是 `/auth/profile`、`/auth/permissions`、`/merchant/info`。
|
||
|
||
## 3. 数据源盘点(按库)
|
||
|
||
### 3.1 账号与权限(takeout_identity)
|
||
|
||
- `identity_users`:账号、昵称、头像、手机号、邮箱、最后登录、失败次数、锁定时间、是否强制改密、状态、门户。
|
||
- `user_roles` + `roles`:用户角色关系、角色名称与角色编码。
|
||
- `permissions` + `role_permissions`:权限项和角色权限关系。
|
||
|
||
### 3.2 商户与租户(takeout_app)
|
||
|
||
- `merchants`:品牌名、联系方式、经营模式、状态、是否冻结、加入/审核时间等。
|
||
- `merchant_documents`:资质类型、状态、证号、有效期。
|
||
- `tenant_subscriptions` + `tenant_packages`:套餐名、生效/到期、续费、计费日期。
|
||
- `tenant_quota_usages`:额度上限与已用量。
|
||
- `tenant_billing_statements` + `tenant_payments`:账单与支付记录。
|
||
- `tenants`:租户基础信息(名称、联系人、状态、有效期等)。
|
||
|
||
### 3.3 日志与记录(takeout_logs)
|
||
|
||
- `operation_logs`:操作类型、操作对象、操作者、成功与否、时间。
|
||
- `merchant_audit_logs`:商户审核动作历史。
|
||
- `merchant_change_logs`:商户字段变更历史。
|
||
- `tenant_audit_logs`:租户审核动作历史。
|
||
|
||
## 4. 个人中心可查询内容建议(优先级)
|
||
|
||
## P0(先做,首版上线)
|
||
|
||
1. **我的账号**
|
||
- 账号、昵称、头像、手机号、邮箱、注册时间。
|
||
- 数据源:`identity_users`。
|
||
2. **账号安全**
|
||
- 最近登录时间、登录失败次数、锁定状态、是否强制改密。
|
||
- 数据源:`identity_users`。
|
||
3. **我的角色与权限概览**
|
||
- 角色名称/编码、权限数量。
|
||
- 数据源:`user_roles`、`roles`、`role_permissions`。
|
||
4. **我的归属信息**
|
||
- 租户名称、商户名称、商户状态、套餐名称、到期时间。
|
||
- 数据源:`identity_users` + `tenants` + `merchants` + `tenant_subscriptions` + `tenant_packages`。
|
||
|
||
## P1(增强)
|
||
|
||
1. **套餐与配额**
|
||
- 门店数、账号数、存储、短信、订单额度(上限/已用)。
|
||
- 数据源:`tenant_packages` + `tenant_quota_usages`。
|
||
2. **账单与支付**
|
||
- 最近账单、应付/实付、支付状态、支付方式、支付时间。
|
||
- 数据源:`tenant_billing_statements` + `tenant_payments`。
|
||
3. **资质状态摘要**
|
||
- 资质类型、审核状态、到期提醒。
|
||
- 数据源:`merchant_documents`。
|
||
|
||
## P2(后续)
|
||
|
||
1. **消息中心**:通知、公告、已读状态。
|
||
2. **我的操作日志**:只看当前用户自身操作。
|
||
3. **变更与审核轨迹**:用于追溯关键操作。
|
||
|
||
## 5. 页面信息架构建议(前端)
|
||
|
||
个人中心建议拆 4 个标签页:
|
||
|
||
1. `基础信息`
|
||
2. `账号安全`
|
||
3. `套餐与配额`
|
||
4. `账单与记录`
|
||
|
||
> 首版可先渲染前两页,后两页按接口进度逐步放开。
|
||
|
||
## 6. 接口落地建议(给后端)
|
||
|
||
建议补 1 个聚合接口 + 若干分页子接口,减少前端拼装成本。
|
||
|
||
### 6.1 聚合接口(建议优先)
|
||
|
||
- `GET /api/tenant/v1/personal/overview`
|
||
- 返回:账号信息 + 安全信息 + 归属信息 + 套餐摘要 + 配额摘要。
|
||
|
||
### 6.2 子接口(按需)
|
||
|
||
- `GET /api/tenant/v1/personal/roles`
|
||
- `GET /api/tenant/v1/personal/billing/statements`
|
||
- `GET /api/tenant/v1/personal/billing/payments`
|
||
- `GET /api/tenant/v1/personal/operations`
|
||
- `GET /api/tenant/v1/personal/notifications`
|
||
|
||
## 7. 安全与展示口径
|
||
|
||
1. 手机号、邮箱建议脱敏展示(如 `135****5407`)。
|
||
2. 严禁返回密码哈希、完整敏感审计参数。
|
||
3. 日志类接口默认仅返回“当前登录用户可见范围”。
|
||
4. 所有 ID 在前端按字符串处理,避免 long 精度问题。
|
||
|
||
## 8. 推荐实施顺序
|
||
|
||
1. 后端先给 `personal/overview`。
|
||
2. 前端完成“基础信息 + 账号安全”可用页。
|
||
3. 再接“套餐配额”和“账单记录”分页。
|
||
4. 最后补“消息与操作轨迹”。
|
||
|
||
---
|
||
|
||
如确认本草案,可继续输出:
|
||
|
||
- 字段级 DTO 草案(请求/响应)。
|
||
- 页面原型字段清单(每个卡片显示哪些字段)。
|
||
- 前后端任务拆分(按 P0/P1/P2)。
|