feat(weibo): 增加工作台独占与快捷操作

This commit is contained in:
yml2213
2026-11-08 16:39:32 +08:00
parent d566518478
commit c8b62e5267
10 changed files with 341 additions and 29 deletions
@@ -17,7 +17,7 @@ status: implemented
- **账号管理**:全局微博账号池,负责 CK 导入、生命周期、标签、批量操作和资料维护。
- **微博工作台**:每个用户自己的账号子集,只展示自己导入的账号,用于绑定、充值、兑换和日常操作。
工作台采用斗鱼模式:**账号实体仍然全局唯一,工作台只保存用户与账号的映射**。同一个账号可以被多人分别加入自己的工作台,工作台增删互不影响;底层 CK 刷新后,所有引用该账号的工作台看到同一份最新资料。
工作台采用斗鱼模式:**账号实体仍然全局唯一,工作台只保存用户与账号的映射**。同一个全局账号同一时间只能被一个用户加入工作台;当前使用人移出后,其他人才可以加入。
## 2. 数据模型
@@ -33,6 +33,7 @@ weibo_workbench_accounts
created_at
UNIQUE(user_id, account_id)
UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
```
删除账号或用户时,对应工作台映射级联删除,不保留孤儿记录。
@@ -57,7 +58,7 @@ UNIQUE(user_id, account_id)
| GET | `/api/weibo/accounts` | `weibo:view` | 全局账号池分页列表 |
| GET | `/api/weibo/workbench/accounts` | `weibo:workbench` | 当前用户工作台账号分页列表 |
| GET | `/api/weibo/workbench/pool` | `weibo:workbench` | 可加入当前工作台且尚未加入的账号 |
| POST | `/api/weibo/workbench/accounts` | `weibo:workbench` | 批量加入工作台,幂等 |
| POST | `/api/weibo/workbench/accounts` | `weibo:workbench` | 批量加入工作台;已被其他用户占用时返回 409 |
| POST | `/api/weibo/workbench/accounts/remove` | `weibo:workbench` | 批量移出工作台,不影响账号池和其他用户 |
| POST | `/api/weibo/accounts/batch-tag` | `weibo:manage` | 账号管理页批量设置标签 |
@@ -86,12 +87,23 @@ UNIQUE(user_id, account_id)
- 复用账号能力,但列表只显示当前用户工作台映射。
- 「导入账号」从账号池选择账号加入。
- 「导入外部 CK」会先写入全局账号池,再自动加入当前工作台。
- 从账号池只显示当前未被任何用户占用的账号。
- 支持单个/批量移出工作台,不删除账号池数据。
- 绑定二维码、充值、兑换、功能查询继续复用现有账号接口。
## 6. 数据隔离边界
- 工作台列表、账号池候选和增删接口都按当前登录用户过滤。
- 工作台列表和增删接口都按当前登录用户过滤。
- 账号池候选排除所有已被其他用户占用的账号。
- 加入/移出只操作 `weibo_workbench_accounts`,不修改账号归属或 CK。
- 账号池仍由全局权限控制;客服可以看到账号管理入口,但不能删除账号。
- 外部单协作继续引用全局账号 ID,不受个人工作台选择影响。
## 7. CK 重复导入
同一微博 UID 在全局池中只允许存在一条账号记录。
- 默认重复导入:不覆盖现有 CK,返回 `skipped=1`。
- 勾选「重复账号时更新 CK」:覆盖现有账号 CK 和最新资料,但**不新建账号**。
- 若账号已被其他人的工作台占用,其他用户不能更新 CK,必须由当前使用人操作。
- 无论是否更新,全局账号记录始终只有一条。