qiangdanxitong/frontend/src/api/permission.ts

88 lines
2.3 KiB
TypeScript

import axios from 'axios';
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '';
// 权限相关类型定义
export interface Permission {
id?: number;
parentId?: number;
permissionCode: string;
permissionName: string;
type?: string;
path?: string;
method?: string;
icon?: string;
component?: string;
description?: string;
sortOrder?: number;
status?: number;
createTime?: string;
updateTime?: string;
children?: Permission[];
}
/**
* 获取所有权限列表
*/
export const getAllPermissions = async (): Promise<Permission[]> => {
const response = await axios.get(`${API_BASE_URL}/api/permissions`);
return response.data.data;
};
/**
* 获取权限树形结构
*/
export const getPermissionTree = async (): Promise<Permission[]> => {
const response = await axios.get(`${API_BASE_URL}/api/permissions/tree`);
return response.data.data;
};
/**
* 根据ID获取权限
*/
export const getPermissionById = async (id: number): Promise<Permission> => {
const response = await axios.get(`${API_BASE_URL}/api/permissions/${id}`);
return response.data.data;
};
/**
* 根据用户ID获取权限列表
*/
export const getPermissionsByUserId = async (userId: number): Promise<Permission[]> => {
const response = await axios.get(`${API_BASE_URL}/api/permissions/user/${userId}`);
return response.data.data;
};
/**
* 根据用户ID获取权限代码列表
*/
export const getPermissionCodesByUserId = async (userId: number): Promise<string[]> => {
const response = await axios.get(`${API_BASE_URL}/api/permissions/user/${userId}/codes`);
return response.data.data;
};
/**
* 创建权限
*/
export const createPermission = async (permission: Permission): Promise<Permission> => {
const response = await axios.post(`${API_BASE_URL}/api/permissions`, permission);
return response.data.data;
};
/**
* 更新权限
*/
export const updatePermission = async (id: number, permission: Partial<Permission>): Promise<boolean> => {
const response = await axios.put(`${API_BASE_URL}/api/permissions/${id}`, permission);
return response.data.data;
};
/**
* 删除权限
*/
export const deletePermission = async (id: number): Promise<boolean> => {
const response = await axios.delete(`${API_BASE_URL}/api/permissions/${id}`);
return response.data.data;
};