110 lines
2.8 KiB
TypeScript
110 lines
2.8 KiB
TypeScript
/**
|
||
* 角色相关 API - 匹配后端实际接口
|
||
*/
|
||
|
||
import { BaseService } from '../BaseService'
|
||
import request from '@/utils/http'
|
||
import type {
|
||
PlatformRole,
|
||
RoleQueryParams,
|
||
PlatformRoleFormData,
|
||
PermissionTreeNode,
|
||
BaseResponse,
|
||
PaginationResponse
|
||
} from '@/types/api'
|
||
|
||
export class RoleService extends BaseService {
|
||
/**
|
||
* 获取角色分页列表
|
||
* GET /api/admin/roles
|
||
* @param params 查询参数
|
||
*/
|
||
static getRoles(params?: RoleQueryParams): Promise<PaginationResponse<PlatformRole>> {
|
||
return this.getPage<PlatformRole>('/api/admin/roles', params)
|
||
}
|
||
|
||
/**
|
||
* 获取角色详情
|
||
* GET /api/admin/roles/{id}
|
||
* @param id 角色ID
|
||
*/
|
||
static getRole(id: number): Promise<BaseResponse<PlatformRole>> {
|
||
return this.getOne<PlatformRole>(`/api/admin/roles/${id}`)
|
||
}
|
||
|
||
/**
|
||
* 创建角色
|
||
* POST /api/admin/roles
|
||
* @param data 角色数据
|
||
*/
|
||
static createRole(data: PlatformRoleFormData): Promise<BaseResponse> {
|
||
return this.create('/api/admin/roles', data)
|
||
}
|
||
|
||
/**
|
||
* 更新角色
|
||
* PUT /api/admin/roles/{id}
|
||
* @param id 角色ID
|
||
* @param data 角色数据
|
||
*/
|
||
static updateRole(id: number, data: PlatformRoleFormData): Promise<BaseResponse> {
|
||
return this.update(`/api/admin/roles/${id}`, data)
|
||
}
|
||
|
||
/**
|
||
* 删除角色
|
||
* DELETE /api/admin/roles/{id}
|
||
* @param id 角色ID
|
||
*/
|
||
static deleteRole(id: number): Promise<BaseResponse> {
|
||
return this.remove(`/api/admin/roles/${id}`)
|
||
}
|
||
|
||
/**
|
||
* 更新角色状态
|
||
* PUT /api/admin/roles/{id}/status
|
||
* @param roleId 角色ID
|
||
* @param status 状态 (0-禁用, 1-启用)
|
||
*/
|
||
static updateRoleStatus(roleId: number, status: 0 | 1): Promise<BaseResponse> {
|
||
return this.put<BaseResponse>(`/api/admin/roles/${roleId}/status`, { status })
|
||
}
|
||
|
||
// ========== 权限相关 ==========
|
||
|
||
/**
|
||
* 获取角色权限
|
||
* GET /api/admin/roles/{id}/permissions
|
||
* @param roleId 角色ID
|
||
*/
|
||
static getRolePermissions(roleId: number): Promise<any> {
|
||
return this.get<any>(`/api/admin/roles/${roleId}/permissions`)
|
||
}
|
||
|
||
/**
|
||
* 分配权限给角色
|
||
* POST /api/admin/roles/{id}/permissions
|
||
* @param roleId 角色ID
|
||
* @param permissionIds 权限ID列表
|
||
*/
|
||
static assignPermissions(roleId: number, permissionIds: number[]): Promise<BaseResponse> {
|
||
return this.post<BaseResponse>(`/api/admin/roles/${roleId}/permissions`, {
|
||
perm_ids: permissionIds
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 移除角色的权限(支持批量)
|
||
* DELETE /api/admin/roles/{role_id}/permissions
|
||
* @param roleId 角色ID
|
||
* @param permIds 权限ID列表
|
||
*/
|
||
static removePermissions(roleId: number, permIds: number[]): Promise<BaseResponse> {
|
||
// 直接使用 request.del,传递 data 到 Body
|
||
return request.del<BaseResponse>({
|
||
url: `/api/admin/roles/${roleId}/permissions`,
|
||
data: { perm_ids: permIds }
|
||
})
|
||
}
|
||
}
|