/** * 账号相关 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 { return this.put(`/api/admin/accounts/${id}/wecom-binding`, data) } // ========== 账号管理 (Account Management) ========== /** * 获取账号列表 * GET /api/admin/accounts * @param params 查询参数 */ static getAccounts(params?: AccountQueryParams): Promise> { return this.getPage('/api/admin/accounts', params) } /** * 创建账号 * POST /api/admin/accounts * @param data 账号数据 */ static createAccount( data: CreatePlatformAccountParams ): Promise> { return this.create('/api/admin/accounts', data) } /** * 更新账号 * PUT /api/admin/accounts/{id} * @param id 账号ID * @param data 账号数据 */ static updateAccount( id: number, data: Partial ): Promise { 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 { return this.remove(`/api/admin/accounts/${id}`) } /** * 获取账号详情 * GET /api/admin/accounts/{id} * @param id 账号ID */ static getAccountDetail(id: number): Promise> { return this.getOne(`/api/admin/accounts/${id}`) } /** * 获取账号的角色列表 * GET /api/admin/accounts/{id}/roles * @param id 账号ID * @returns 返回角色对象数组 */ static getAccountRoles(id: number): Promise> { return this.get>(`/api/admin/accounts/${id}/roles`) } /** * 为账号分配角色 * POST /api/admin/accounts/{id}/roles * @param id 账号ID * @param roleIds 角色ID列表 */ static assignRolesToAccount(id: number, roleIds: number[]): Promise { return this.post(`/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 { return this.delete(`/api/admin/accounts/${accountId}/roles/${roleId}`) } /** * 修改账号密码 * PUT /api/admin/accounts/{id}/password * @param id 账号ID * @param password 新密码 */ static updateAccountPassword(id: number, password: string): Promise { const error = getNewLoginPasswordError(password) if (error) return Promise.reject(new Error(error)) return this.put(`/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 { return this.put(`/api/admin/accounts/${id}/status`, { status }) } }