feat(密钥管理): 列表按用户聚合三字段列 + 代理配置服务端上报
- Java:后台列表一行一用户(货源查询密钥/外观专利密钥/代理设置),行级状态三项全通过才算通过;检测/清空改为按用户;搜索仅按用户名(去 UID);新增代理检测(经用户代理请求自家域名)与代理掩码(隐去账密) - 后台前端:三字段列改版 + 行级状态筛选 + 用户名筛选 - 桌面前端:登录加载密钥时补报本地代理(只填空缺不覆盖)、保存/清空代理实时上报
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import { http } from './http'
|
||||
import { unwrap } from './envelope'
|
||||
|
||||
export interface AdminUserSecretItem {
|
||||
id: number
|
||||
userId: number
|
||||
username: string
|
||||
/** 单模块状态(脱敏值 + 连通性)。 */
|
||||
export interface AdminUserSecretModule {
|
||||
moduleKey: string
|
||||
moduleLabel: string
|
||||
masked: string
|
||||
@@ -14,12 +12,23 @@ export interface AdminUserSecretItem {
|
||||
checkMessage: string
|
||||
checkLatencyMs: number | null
|
||||
checkedAt: string | null
|
||||
source: string
|
||||
updatedAt: string | null
|
||||
}
|
||||
|
||||
/** 一行一用户:三个字段列 + 行级状态(三类都检测通过才算 passed)。 */
|
||||
export interface AdminUserSecretRow {
|
||||
userId: number
|
||||
username: string
|
||||
similarAsin: AdminUserSecretModule
|
||||
appearancePatent: AdminUserSecretModule
|
||||
proxy: AdminUserSecretModule
|
||||
status: string
|
||||
statusMessage: string
|
||||
updatedAt: string | null
|
||||
}
|
||||
|
||||
export interface AdminUserSecretPage {
|
||||
items: AdminUserSecretItem[]
|
||||
items: AdminUserSecretRow[]
|
||||
total: number
|
||||
page: number
|
||||
pageSize: number
|
||||
@@ -27,34 +36,35 @@ export interface AdminUserSecretPage {
|
||||
|
||||
export interface UserSecretQuery {
|
||||
keyword?: string
|
||||
moduleKey?: string
|
||||
checkStatus?: string
|
||||
page: number
|
||||
pageSize: number
|
||||
}
|
||||
|
||||
/** 分页查询用户密钥(脱敏):GET /api/admin/user-secrets */
|
||||
/** 分页查询用户密钥(一行一用户):GET /api/admin/user-secrets */
|
||||
export async function fetchUserSecretList(params: UserSecretQuery): Promise<AdminUserSecretPage> {
|
||||
const { data } = await http.get('/api/admin/user-secrets', { params })
|
||||
return unwrap<AdminUserSecretPage>(data)
|
||||
}
|
||||
|
||||
/** 立即检测指定密钥:POST /api/admin/user-secrets/{id}/check */
|
||||
export async function checkUserSecret(id: number) {
|
||||
const { data } = await http.post(`/api/admin/user-secrets/${id}/check`)
|
||||
return unwrap<{
|
||||
moduleKey: string
|
||||
checkStatus: string
|
||||
checkCode: string
|
||||
checkMessage: string
|
||||
checkLatencyMs: number | null
|
||||
checkedAt: string | null
|
||||
viaProxy: boolean
|
||||
}>(data)
|
||||
/** 立即检测该用户全部已配置项:POST /api/admin/user-secrets/{userId}/check */
|
||||
export async function checkUserSecret(userId: number) {
|
||||
const { data } = await http.post(`/api/admin/user-secrets/${userId}/check`)
|
||||
return unwrap<
|
||||
Array<{
|
||||
moduleKey: string
|
||||
checkStatus: string
|
||||
checkCode: string
|
||||
checkMessage: string
|
||||
checkLatencyMs: number | null
|
||||
checkedAt: string | null
|
||||
viaProxy: boolean
|
||||
}>
|
||||
>(data)
|
||||
}
|
||||
|
||||
/** 清空指定用户密钥:DELETE /api/admin/user-secrets/{id} */
|
||||
export async function deleteUserSecret(id: number): Promise<void> {
|
||||
const { data } = await http.delete(`/api/admin/user-secrets/${id}`)
|
||||
/** 清空该用户全部密钥与代理配置:DELETE /api/admin/user-secrets/{userId} */
|
||||
export async function deleteUserSecret(userId: number): Promise<void> {
|
||||
const { data } = await http.delete(`/api/admin/user-secrets/${userId}`)
|
||||
unwrap<unknown>(data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user