Files
one-pipe-system/src/api/modules/account.ts
luo e41adb4505
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 45s
fix: some
2026-10-29 17:17:02 +08:00

131 lines
3.8 KiB
TypeScript

/**
* 账号相关 API - 匹配后端实际接口
*/
import { BaseService } from '../BaseService'
import { getNewLoginPasswordError } from '@/utils/validation/loginPassword'
import type {
PlatformAccount,
AccountQueryParams,
CreatePlatformAccountParams,
BaseResponse,
PaginationResponse,
WecomAccountBindingRequest
} from '@/types/api'
export class AccountService extends BaseService {
static bindWecom(id: number, data: WecomAccountBindingRequest): Promise<BaseResponse> {
return this.put<BaseResponse>(`/api/admin/accounts/${id}/wecom-binding`, data)
}
// ========== 账号管理 (Account Management) ==========
/**
* 获取账号列表
* GET /api/admin/accounts
* @param params 查询参数
*/
static getAccounts(params?: AccountQueryParams): Promise<PaginationResponse<PlatformAccount>> {
return this.getPage<PlatformAccount>('/api/admin/accounts', params)
}
/**
* 创建账号
* POST /api/admin/accounts
* @param data 账号数据
*/
static createAccount(
data: CreatePlatformAccountParams
): Promise<BaseResponse<{ id?: number; ID?: number }>> {
return this.create('/api/admin/accounts', data)
}
/**
* 更新账号
* PUT /api/admin/accounts/{id}
* @param id 账号ID
* @param data 账号数据
*/
static updateAccount(
id: number,
data: Partial<CreatePlatformAccountParams>
): Promise<BaseResponse> {
const payload = { ...data }
if (payload.password === '') delete payload.password
if (payload.password !== undefined) {
const error = getNewLoginPasswordError(payload.password)
if (error) return Promise.reject(new Error(error))
}
return this.update(`/api/admin/accounts/${id}`, payload)
}
/**
* 删除账号
* DELETE /api/admin/accounts/{id}
* @param id 账号ID
*/
static deleteAccount(id: number): Promise<BaseResponse> {
return this.remove(`/api/admin/accounts/${id}`)
}
/**
* 获取账号详情
* GET /api/admin/accounts/{id}
* @param id 账号ID
*/
static getAccountDetail(id: number): Promise<BaseResponse<PlatformAccount>> {
return this.getOne<PlatformAccount>(`/api/admin/accounts/${id}`)
}
/**
* 获取账号的角色列表
* GET /api/admin/accounts/{id}/roles
* @param id 账号ID
* @returns 返回角色对象数组
*/
static getAccountRoles(id: number): Promise<BaseResponse<any[]>> {
return this.get<BaseResponse<any[]>>(`/api/admin/accounts/${id}/roles`)
}
/**
* 为账号分配角色
* POST /api/admin/accounts/{id}/roles
* @param id 账号ID
* @param roleIds 角色ID列表
*/
static assignRolesToAccount(id: number, roleIds: number[]): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/admin/accounts/${id}/roles`, { role_ids: roleIds })
}
/**
* 移除账号的单个角色
* DELETE /api/admin/accounts/{account_id}/roles/{role_id}
* @param accountId 账号ID
* @param roleId 角色ID
*/
static removeRoleFromAccount(accountId: number, roleId: number): Promise<BaseResponse> {
return this.delete<BaseResponse>(`/api/admin/accounts/${accountId}/roles/${roleId}`)
}
/**
* 修改账号密码
* PUT /api/admin/accounts/{id}/password
* @param id 账号ID
* @param password 新密码
*/
static updateAccountPassword(id: number, password: string): Promise<BaseResponse> {
const error = getNewLoginPasswordError(password)
if (error) return Promise.reject(new Error(error))
return this.put<BaseResponse>(`/api/admin/accounts/${id}/password`, { new_password: password })
}
/**
* 修改账号状态
* PUT /api/admin/accounts/{id}/status
* @param id 账号ID
* @param status 状态 (0:禁用, 1:启用)
*/
static updateAccountStatus(id: number, status: 0 | 1): Promise<BaseResponse> {
return this.put<BaseResponse>(`/api/admin/accounts/${id}/status`, { status })
}
}