refactor(admin): Rework content governance and video review workspace
This commit is contained in:
@@ -3,6 +3,42 @@ import type { AdminUser, PageResult, PageParams } from '@/types'
|
||||
|
||||
export type { AdminUser }
|
||||
|
||||
function normalizeAdmin(raw: any): AdminUser {
|
||||
const firstRole = Array.isArray(raw?.roles) ? raw.roles[0] : undefined
|
||||
|
||||
return {
|
||||
id: Number(raw?.id || 0),
|
||||
username: raw?.username || '',
|
||||
nickname: raw?.realName || raw?.nickname || raw?.username || '',
|
||||
avatar: raw?.avatar || '',
|
||||
email: raw?.email || '',
|
||||
phone: raw?.phone || '',
|
||||
role: firstRole?.code === 'ADMIN_SUPER' ? 'admin' : 'manager',
|
||||
roleName: firstRole?.name || '',
|
||||
status: Number(raw?.status ?? 0),
|
||||
lastLoginTime: raw?.lastLoginTime || '',
|
||||
lastLoginIp: raw?.lastLoginIp || '',
|
||||
createTime: raw?.createTime || ''
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeAdminPage(raw: any, page: number, size: number): PageResult<AdminUser> {
|
||||
const records = Array.isArray(raw?.records) ? raw.records.map(normalizeAdmin) : []
|
||||
const total = Number(raw?.total || records.length || 0)
|
||||
const shouldPaginateLocally = (!raw?.total || raw.total === 0) && records.length > size
|
||||
const pagedRecords = shouldPaginateLocally
|
||||
? records.slice((page - 1) * size, page * size)
|
||||
: records
|
||||
|
||||
return {
|
||||
records: pagedRecords,
|
||||
total: shouldPaginateLocally ? records.length : total,
|
||||
size: Number(raw?.size || size),
|
||||
current: Number(raw?.current || page),
|
||||
pages: Number(raw?.pages || Math.ceil((shouldPaginateLocally ? records.length : total) / size) || 1)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员管理 API
|
||||
*/
|
||||
@@ -10,15 +46,19 @@ export const adminApi = {
|
||||
/**
|
||||
* 获取管理员列表
|
||||
*/
|
||||
getList(params: PageParams & { keyword?: string }): Promise<PageResult<AdminUser>> {
|
||||
return request.get('/user/list', params)
|
||||
async getList(params: PageParams & { keyword?: string }): Promise<PageResult<AdminUser>> {
|
||||
const page = params.page || 1
|
||||
const size = params.size || 10
|
||||
const result = await request.get<any>('/user/list', params)
|
||||
return normalizeAdminPage(result, page, size)
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取管理员详情
|
||||
*/
|
||||
getDetail(id: number): Promise<AdminUser> {
|
||||
return request.get(`/user/${id}`)
|
||||
async getDetail(id: number): Promise<AdminUser> {
|
||||
const result = await request.get<any>(`/user/${id}`)
|
||||
return normalizeAdmin(result)
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -32,7 +72,14 @@ export const adminApi = {
|
||||
phone?: string
|
||||
role?: string
|
||||
}): Promise<void> {
|
||||
return request.post('/user', data)
|
||||
return request.post('/user', {
|
||||
username: data.username,
|
||||
password: data.password,
|
||||
realName: data.nickname,
|
||||
email: data.email,
|
||||
phone: data.phone,
|
||||
roleIds: [data.role === 'admin' ? 1 : 2]
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -40,12 +87,23 @@ export const adminApi = {
|
||||
*/
|
||||
update(data: {
|
||||
id: number
|
||||
username: string
|
||||
nickname?: string
|
||||
email?: string
|
||||
phone?: string
|
||||
role?: string
|
||||
}): Promise<void> {
|
||||
return request.put('/user', data)
|
||||
const payload: Record<string, any> = {
|
||||
id: data.id,
|
||||
username: data.username,
|
||||
realName: data.nickname,
|
||||
roleIds: [data.role === 'admin' ? 1 : 2]
|
||||
}
|
||||
|
||||
if (data.email) payload.email = data.email
|
||||
if (data.phone) payload.phone = data.phone
|
||||
|
||||
return request.put('/user', payload)
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -66,6 +124,10 @@ export const adminApi = {
|
||||
* 重置密码
|
||||
*/
|
||||
resetPassword(id: number): Promise<void> {
|
||||
return request.put(`/user/${id}/reset-password`)
|
||||
return request.put(`/user/${id}/reset-password`, undefined, {
|
||||
params: {
|
||||
newPassword: 'admin123'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user