feat(device): 实现设备与账号绑定管理机制

- 引入 ClientAccountDevice 表管理设备与账号绑定关系
- 重构设备注册逻辑,支持多账号绑定同一设备
- 新增设备配额检查,基于账号维度限制设备数量
-优化设备移除逻辑,仅解除绑定而非物理删除- 改进设备列表查询,通过账号ID关联获取设备信息
- 更新心跳任务,支持向设备绑定的所有账号发送心跳
- 调整设备API参数,增加username字段用于权限校验
-修复HTTP请求编码问题,统一使用UTF-8字符集
- 增强错误处理,携带错误码信息便于前端识别
- 移除设备表中的username字段,解耦设备与用户名关联
This commit is contained in:
2025-10-22 09:51:55 +08:00
parent 901d67d2dc
commit 17b6a7b9f9
29 changed files with 589 additions and 277 deletions

View File

@@ -18,11 +18,17 @@ const PLATFORM_LABEL: Record<PlatformKey, string> = {
}
const accounts = ref<BanmaAccount[]>([])
const accountLimit = ref({ limit: 1, count: 0 })
async function load() {
const username = getUsernameFromToken()
const res = await zebraApi.getAccounts(username)
const [res, limitRes] = await Promise.all([
zebraApi.getAccounts(username),
zebraApi.getAccountLimit(username)
])
const list = (res as any)?.data ?? res
accounts.value = Array.isArray(list) ? list : []
const limitData = (limitRes as any)?.data ?? limitRes
accountLimit.value = { limit: limitData?.limit ?? 1, count: limitData?.count ?? 0 }
}
// 暴露方法供父组件调用
@@ -74,10 +80,10 @@ export default defineComponent({ name: 'AccountManager' })
<div class="top">
<img src="/icon/image.png" class="hero" alt="logo" />
<div class="head-main">
<div class="main-title">在线账号管理3/3</div>
<div class="main-title">在线账号管理{{ accountLimit.count }}/{{ accountLimit.limit }}</div>
<div class="main-sub">
您当前订阅可同时托管3家 Shopee 店铺<br>
如需扩增同时托管店铺数 <span class="upgrade">升级订阅</span>
您当前订阅可同时托管{{ accountLimit.limit }}个斑马账号<br>
<span v-if="accountLimit.limit < 3">如需扩增账号数量,请 <span class="upgrade">升级订阅</span></span>
</div>
</div>
</div>