80 lines
3.2 KiB
Markdown
80 lines
3.2 KiB
Markdown
# 05 店铺中心
|
||
|
||
## 模块职责
|
||
|
||
将店铺密钥、店铺账号、最低价配置和店铺相关基础操作组织为店铺中心。最低价 ASIN 的复杂数据操作在 `04-asin-data-center.md` 定义,本文件只描述店铺侧入口和基础店铺管理边界。
|
||
|
||
覆盖页面:
|
||
|
||
- 店铺密钥:`shop-keys`
|
||
- 店铺管理:`shop-manage`
|
||
- 店铺分组选择器和店铺账号编辑
|
||
- 店铺凭证展示、遮罩和安全操作
|
||
|
||
## 依赖关系
|
||
|
||
上游:菜单树和用户权限;Java 店铺控制器;分组/用户选择器;下载和 confirm 基础组件。
|
||
|
||
旧实现:
|
||
|
||
- `admin.html` 的 `panel-shop-keys`、`panel-shop-manage`。
|
||
- `admin.js:loadShopKeys`、`loadShopManage`、`loadShopManageGroups`、`renderShopPasswordCell`、`bindShopKeyActions`、`bindShopManageActions`。
|
||
|
||
Java API 主要来源:
|
||
|
||
- `ShopKeyController`:`/api/admin/shop-keys`、`/api/admin/shop-key`。
|
||
- `ShopManageController`:`/api/admin/shop-manages`、`/api/admin/shop-manage`、凭证和分组接口。
|
||
|
||
## 核心接口:原实现 → 目标实现
|
||
|
||
| 功能 | 原实现 | 目标实现 |
|
||
|---|---|---|
|
||
| 店铺密钥列表 | `admin.js:loadShopKeys` | `ShopKeysPage.vue` + `/api/admin/shop-keys` |
|
||
| 新增/编辑密钥 | 原生 modal + DOM 表单 | Element Plus Dialog + `/api/admin/shop-key` |
|
||
| 店铺列表 | `admin.js:loadShopManage` | `ShopManagePage.vue` + `/api/admin/shop-manages` |
|
||
| 店铺新增/编辑/删除 | DOM modal、手写确认 | Dialog/Drawer + `/api/admin/shop-manage` |
|
||
| 店铺凭证 | `renderShopPasswordCell` | 显式遮罩组件,按需显示 |
|
||
| 店铺分组 | 旧多处 select 和自定义下拉 | 可复用 `ShopGroupSelect`,数据来源统一 |
|
||
|
||
## 内部结构
|
||
|
||
```text
|
||
ShopCenter
|
||
├── ShopKeysPage
|
||
│ ├── FilterBar
|
||
│ ├── KeysTable
|
||
│ └── KeyEditorDialog
|
||
└── ShopManagePage
|
||
├── FilterBar
|
||
├── ShopsTable
|
||
├── ShopEditorDrawer
|
||
├── ShopGroupSelect
|
||
└── CredentialReveal
|
||
```
|
||
|
||
敏感字段生命周期:
|
||
|
||
1. 默认以遮罩或掩码展示。
|
||
2. 用户主动点击后才显示短时内容。
|
||
3. 不写入 Pinia、localStorage、URL 或日志。
|
||
4. API 返回失败或离开页面时清理临时明文。
|
||
|
||
## 类型映射
|
||
|
||
| 原字段 | 目标类型/规则 |
|
||
|---|---|
|
||
| `shop_name`、`mall_name` | `ShopSummary` |
|
||
| `zn_username`、账号、密码 | `ShopCredential`,敏感字段分离 |
|
||
| `group_id` | `number | null`,统一转成表单值 |
|
||
| 紫鸟令牌/密钥 | `SensitiveString`,禁止进入通用日志 |
|
||
| 店铺分页响应 | `PaginatedResult<ShopSummary>` |
|
||
|
||
## 迁移/实现注意事项
|
||
|
||
1. 页面级权限只决定是否显示和进入店铺中心,不新增“查看密码”“编辑店铺”等按钮权限模型。
|
||
2. 后端现有角色和数据权限校验必须保持;前端隐藏按钮不是安全措施。
|
||
3. 编辑店铺和店铺密钥的表单不能共用一个无类型的大对象,避免提交多余字段。
|
||
4. 删除、重置密钥、覆盖账号等不可逆操作必须使用明确的确认文案。
|
||
5. 分组数据加载应有缓存但必须有失效机制;页面切换不应重复创建无限轮询或请求。
|
||
6. 店铺凭证不能出现在错误消息、网络日志、埋点和前端异常上报中。
|