feat(admin): 新增后台用户列表与详情操作

This commit is contained in:
yml2213
2026-10-30 13:06:45 +08:00
parent cd66bca9d5
commit 3297fd69ff
10 changed files with 1054 additions and 4 deletions
+2 -2
View File
@@ -194,9 +194,9 @@ dist/assets/AdminLayout-*.js 36.87 kB │ gzip 13.02 kB
## 5. 已知限制
1. 移动端订单列表/详情与消息中心已接入真实接口;下单、支付、交接、归还、结账等操作仍待迁移。
2. 后台已完成仪表盘、订单列表/详情、商品列表/详情与商品审核,其余页面仍为统一占位。
2. 后台已完成仪表盘、订单列表/详情、商品列表/详情与审核、用户列表/详情与人工操作,其余页面仍为统一占位。
3. 分销后台已完成主题、Logo、登录页与 Shell 轻改,页面结构未重写。
4. 后台菜单权限码按后端逐个核对:订单 `order:list` / `order:view`,商品 `listing:view` / `listing:approve` / `listing:reject` / `listing:offline`;其余页面仍需核对。
4. 后台菜单权限码按后端逐个核对:订单 `order:list` / `order:view`,商品 `listing:view` / `listing:approve` / `listing:reject` / `listing:offline`,用户 `user:view` / `user:freeze` / `user:unfreeze` / `user:deposit_free` / `user:growth_points` / `user:manual_realname` / `user:revoke_realname` / `user:wallet_adjust`;其余页面仍需核对。
5. SVG 中文尚未转曲。
6. 入口包已降至 495 kB(gzip 161 kB);AntD 共享基础设施仍在入口,后续可拆独立入口。
7. 移动端、订单、分销轻改与首屏优化均已提交;商品管理与审核在本批次提交。
+82
View File
@@ -0,0 +1,82 @@
# Phase 2 验收报告(后台用户管理)
> 日期:2026-10-30
> 项目:解忧商行(hfb_jysh)
> 范围:`/console-jy8k3m/users`
> 结论:**本切片通过,用户列表、详情抽屉与人工操作已接真实接口**
---
## 1. 接口与权限
| 能力 | 接口 | 权限码 |
| --- | --- | --- |
| 用户列表 | `GET /api/admin/users` | `user:view` |
| 冻结 | `POST /api/admin/users/:id/freeze` | `user:freeze` |
| 解冻 | `POST /api/admin/users/:id/unfreeze` | `user:unfreeze` |
| 免押额度 | `POST /api/admin/users/:id/deposit-free-quota` | `user:deposit_free` |
| 成长值 | `POST /api/admin/users/:id/growth-points` | `user:growth_points` |
| 实名补录 | `POST /api/admin/users/:id/manual-realname` | `user:manual_realname` |
| 撤销实名 | `POST /api/admin/users/:id/revoke-realname` | `user:revoke_realname` |
| 余额调账 | `POST /api/admin/users/:id/wallet/adjust` | `user:wallet_adjust` |
前端菜单权限沿用 `user:view`,与后端正向一致。后端未提供用户详情接口,详情抽屉直接使用列表 `UserDTO`,避免多余请求。
## 2. 用户列表
`frontend/src/features/admin/AdminUsersPage.tsx`
- 筛选:关键词(手机号 / 昵称 / 用户 ID)、账号状态、是否有免押额度
- 列:用户(昵称/手机号/UID)、实名与风险、余额、免押额度、成长、业务量、账号状态、注册时间、详情
- 分页 10 / 20 / 50,翻页保留旧数据
- 点击昵称、行或「详情」打开抽屉
- 无 `user:view` 时隐藏详情入口
## 3. 用户详情抽屉
`frontend/src/features/admin/AdminUserDetailDrawer.tsx`
- 标题区:昵称、手机号、UID、账号/实名/风险标签
- 分段:账号概览、钱包、免押额度、成长与活跃
- 快捷入口:订单明细(`/orders?user_id=`,需 `order:list`)、商品明细(`/listings?owner_id=`,需 `listing:view`)
- 操作按钮按权限与状态显示:
- 正常用户 + `user:freeze`:冻结(必填原因)
- 冻结用户 + `user:unfreeze`:解冻(必填原因)
- `user:deposit_free`:设置手动免押额度(元 → 分)
- `user:growth_points`:调整成长值(目标值 + 原因)
- 未实名 + `user:manual_realname`:实名补录(姓名 / 证件号 / 原因)
- 已实名 + `user:revoke_realname`:撤销实名(必填原因)
- `user:wallet_adjust`:加款/扣款、金额、原因、外部流水号
- 操作成功后更新抽屉数据并刷新列表
## 4. 配套改动
- `AdminListingsPage` 支持从 URL 读取 `owner_id` 与 `keyword`,供用户详情跳转商品明细。
- `admin/labels.ts` 新增用户状态、实名状态、风险状态映射。
- `admin/api.ts` 新增用户列表与全部人工操作接口。
## 5. 验证结果
```text
npx tsc --noEmit 通过
npm run build 通过(入口 495.51 kB,gzip 161.02 kB)
GET /api/admin/users?page=1&page_size=5 ok,返回 UserDTO 全字段
GET /console-jy8k3m/users 200
GET /console-jy8k3m/listings?owner_id=1 200
```
开发库当前仅 1 个用户,冻结、调账、实名等写操作未执行,避免污染开发数据;按钮权限与请求体已按后端 DTO 核对。
## 6. 已知限制
1. 后端无用户详情接口,抽屉无法独立刷新单个用户,依赖列表数据与操作返回值。
2. 未提供风险状态人工调整(后端暂无对应接口)。
3. 调账、冻结等操作未接入二次审批或批量处理。
4. 审计日志页面尚未迁移,操作记录只能在数据层核对。
## 7. 下一步建议
1. 后台财务看板与退款/提现审核。
2. 后台申诉仲裁。
3. 商品审核调价与转移号主。
4. 移动端下单、支付与交接/归还/结账。
+1 -1
View File
@@ -395,7 +395,7 @@ hfb_jysh/
### Phase 4:管理后台核心(4–5 周)
> 状态:**进行中(2026-10-30)**。已完成仪表盘、订单列表/详情、商品列表/详情与商品审核;退款、提现、用户、申诉与系统配置待迁移。
> 状态:**进行中(2026-10-30)**。已完成仪表盘、订单列表/详情、商品列表/详情与审核、用户列表/详情与人工操作;退款、提现、申诉与系统配置待迁移。
- 后台登录、工作台、订单列表、订单详情。
- 商品列表、商品详情、审核。