web-权限修改
This commit is contained in:
71
schoolNewsWeb/src/apis/system/auth.ts
Normal file
71
schoolNewsWeb/src/apis/system/auth.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* @description 认证相关API
|
||||
* @author yslg
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
|
||||
import { api } from '@/apis/index';
|
||||
import type { LoginParam, LoginDomain } from '@/types';
|
||||
|
||||
/**
|
||||
* 认证API服务
|
||||
*/
|
||||
export const authApi = {
|
||||
/**
|
||||
* 用户登录
|
||||
* @param loginParam 登录参数
|
||||
* @returns Promise<LoginDomain>
|
||||
*/
|
||||
async login(loginParam: LoginParam): Promise<LoginDomain> {
|
||||
const response = await api.post<LoginDomain>('/auth/login', loginParam);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户登出
|
||||
* @returns Promise<string>
|
||||
*/
|
||||
async logout(): Promise<string> {
|
||||
const response = await api.post<string>('/auth/logout');
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取验证码
|
||||
* @returns Promise<{captchaId: string, captchaImage: string}>
|
||||
*/
|
||||
async getCaptcha(): Promise<{ captchaId: string; captchaImage: string }> {
|
||||
const response = await api.get<{ captchaId: string; captchaImage: string }>('/auth/captcha');
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 刷新Token
|
||||
* @returns Promise<string>
|
||||
*/
|
||||
async refreshToken(): Promise<string> {
|
||||
const response = await api.post<string>('/auth/refresh-token');
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 发送手机验证码
|
||||
* @param phone 手机号
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async sendSmsCode(phone: string): Promise<boolean> {
|
||||
const response = await api.post<boolean>('/auth/send-sms-code', { phone });
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 发送邮箱验证码
|
||||
* @param email 邮箱
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async sendEmailCode(email: string): Promise<boolean> {
|
||||
const response = await api.post<boolean>('/auth/send-email-code', { email });
|
||||
return response.data.data!;
|
||||
}
|
||||
};
|
||||
|
||||
92
schoolNewsWeb/src/apis/system/menu.ts
Normal file
92
schoolNewsWeb/src/apis/system/menu.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* @description 菜单相关API
|
||||
* @author yslg
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
|
||||
import { api } from '@/apis/index';
|
||||
import type { SysMenu, MenuTreeNode } from '@/types';
|
||||
|
||||
/**
|
||||
* 菜单API服务
|
||||
*/
|
||||
export const menuApi = {
|
||||
/**
|
||||
* 获取当前用户的菜单树
|
||||
* @returns Promise<MenuTreeNode[]>
|
||||
*/
|
||||
async getCurrentUserMenuTree(): Promise<MenuTreeNode[]> {
|
||||
const response = await api.get<SysMenu>('/menu/user-tree');
|
||||
return response.data.dataList! as MenuTreeNode[];
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取所有菜单列表
|
||||
* @returns Promise<SysMenu[]>
|
||||
*/
|
||||
async getMenuList(): Promise<SysMenu[]> {
|
||||
const response = await api.get<SysMenu>('/menu/list');
|
||||
return response.data.dataList!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取菜单树
|
||||
* @returns Promise<MenuTreeNode[]>
|
||||
*/
|
||||
async getMenuTree(): Promise<MenuTreeNode[]> {
|
||||
const response = await api.get<SysMenu>('/menu/tree');
|
||||
return response.data.dataList! as MenuTreeNode[];
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据ID获取菜单
|
||||
* @param menuId 菜单ID
|
||||
* @returns Promise<SysMenu>
|
||||
*/
|
||||
async getMenuById(menuId: string): Promise<SysMenu> {
|
||||
const response = await api.get<SysMenu>(`/menu/${menuId}`);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 创建菜单
|
||||
* @param menu 菜单信息
|
||||
* @returns Promise<string> 返回菜单ID
|
||||
*/
|
||||
async createMenu(menu: SysMenu): Promise<string> {
|
||||
const response = await api.post<string>('/menu', menu);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新菜单
|
||||
* @param menuId 菜单ID
|
||||
* @param menu 菜单信息
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async updateMenu(menuId: string, menu: SysMenu): Promise<boolean> {
|
||||
const response = await api.put<boolean>(`/menu/${menuId}`, menu);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除菜单
|
||||
* @param menuId 菜单ID
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async deleteMenu(menuId: string): Promise<boolean> {
|
||||
const response = await api.delete<boolean>(`/menu/${menuId}`);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取子菜单列表
|
||||
* @param parentId 父菜单ID
|
||||
* @returns Promise<SysMenu[]>
|
||||
*/
|
||||
async getChildMenus(parentId: string): Promise<SysMenu[]> {
|
||||
const response = await api.get<SysMenu>(`/menu/children/${parentId}`);
|
||||
return response.data.dataList!;
|
||||
}
|
||||
};
|
||||
|
||||
66
schoolNewsWeb/src/apis/system/permission.ts
Normal file
66
schoolNewsWeb/src/apis/system/permission.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* @description 权限相关API
|
||||
* @author yslg
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
import { api } from '@/apis/index';
|
||||
import { SysPermission } from '@/types';
|
||||
|
||||
|
||||
export const permissionApi = {
|
||||
|
||||
/**
|
||||
* @description 获取权限信息
|
||||
* @param permission 权限
|
||||
* @author yslg
|
||||
* @ since 2025-10-08
|
||||
*/
|
||||
async getPermission(permission: SysPermission|null=null): Promise<SysPermission[]> {
|
||||
const response = await api.get<SysPermission>('/permissions/permission', permission);
|
||||
return response.data.dataList!;
|
||||
},
|
||||
|
||||
/**
|
||||
* @description 添加权限
|
||||
* @param permission 权限
|
||||
* @author yslg
|
||||
* @ since 2025-10-08
|
||||
*/
|
||||
async addPermission(permission: SysPermission): Promise<SysPermission[]> {
|
||||
const response = await api.post<SysPermission>('/permissions/permission', permission);
|
||||
return response.data.dataList!;
|
||||
},
|
||||
|
||||
/**
|
||||
* @description 更新权限
|
||||
* @param permission 权限
|
||||
* @author yslg
|
||||
* @ since 2025-10-08
|
||||
*/
|
||||
async updatePermission(permission: SysPermission): Promise<SysPermission[]> {
|
||||
const response = await api.put<SysPermission>('/permissions/permission', permission);
|
||||
return response.data.dataList!;
|
||||
},
|
||||
|
||||
/**
|
||||
* @description 删除权限
|
||||
* @param permission 权限
|
||||
* @author yslg
|
||||
* @ since 2025-10-08
|
||||
*/
|
||||
async deletePermission(permission: SysPermission): Promise<SysPermission[]> {
|
||||
const response = await api.delete<SysPermission>('/permissions/permission', permission);
|
||||
return response.data.dataList!;
|
||||
},
|
||||
|
||||
/**
|
||||
* @description 获取权限列表
|
||||
* @param permission 权限
|
||||
* @author yslg
|
||||
* @ since 2025-10-08
|
||||
*/
|
||||
async getPermissionList(permission: SysPermission|null=null): Promise<SysPermission[]> {
|
||||
const response = await api.post<SysPermission>('/permissions/list', permission);
|
||||
return response.data.dataList!;
|
||||
}
|
||||
}
|
||||
153
schoolNewsWeb/src/apis/system/user.ts
Normal file
153
schoolNewsWeb/src/apis/system/user.ts
Normal file
@@ -0,0 +1,153 @@
|
||||
/**
|
||||
* @description 用户相关API
|
||||
* @author yslg
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
|
||||
import { api } from '@/apis/index';
|
||||
import type { SysUser, SysUserInfo, UserVO, PageDomain, PageParam } from '@/types';
|
||||
|
||||
/**
|
||||
* 用户API服务
|
||||
*/
|
||||
export const userApi = {
|
||||
/**
|
||||
* 获取当前用户信息
|
||||
* @returns Promise<UserVO>
|
||||
*/
|
||||
async getCurrentUser(): Promise<UserVO> {
|
||||
const response = await api.get<UserVO>('/user/current');
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新当前用户信息
|
||||
* @param user 用户信息
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async updateCurrentUser(user: SysUser): Promise<boolean> {
|
||||
const response = await api.put<boolean>('/user/current', user);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新用户详细信息
|
||||
* @param userInfo 用户详细信息
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async updateUserInfo(userInfo: SysUserInfo): Promise<boolean> {
|
||||
const response = await api.put<boolean>('/user/info', userInfo);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
* @param oldPassword 旧密码
|
||||
* @param newPassword 新密码
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async changePassword(oldPassword: string, newPassword: string): Promise<boolean> {
|
||||
const response = await api.post<boolean>('/user/change-password', {
|
||||
oldPassword,
|
||||
newPassword
|
||||
});
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取用户列表(分页)
|
||||
* @param pageParam 分页参数
|
||||
* @returns Promise<PageDomain<SysUser>>
|
||||
*/
|
||||
async getUserList(pageParam: PageParam): Promise<PageDomain<SysUser>> {
|
||||
const response = await api.get<SysUser>('/user/list', {
|
||||
params: pageParam
|
||||
});
|
||||
return response.data.pageDomain!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据ID获取用户
|
||||
* @param userId 用户ID
|
||||
* @returns Promise<SysUser>
|
||||
*/
|
||||
async getUserById(userId: string): Promise<SysUser> {
|
||||
const response = await api.get<SysUser>(`/user/${userId}`);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 创建用户
|
||||
* @param user 用户信息
|
||||
* @returns Promise<string> 返回用户ID
|
||||
*/
|
||||
async createUser(user: SysUser): Promise<string> {
|
||||
const response = await api.post<string>('/user', user);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新用户
|
||||
* @param userId 用户ID
|
||||
* @param user 用户信息
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async updateUser(userId: string, user: SysUser): Promise<boolean> {
|
||||
const response = await api.put<boolean>(`/user/${userId}`, user);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
* @param userId 用户ID
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async deleteUser(userId: string): Promise<boolean> {
|
||||
const response = await api.delete<boolean>(`/user/${userId}`);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 批量删除用户
|
||||
* @param userIds 用户ID列表
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async batchDeleteUsers(userIds: string[]): Promise<boolean> {
|
||||
const response = await api.post<boolean>('/user/batch-delete', { userIds });
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 启用/禁用用户
|
||||
* @param userId 用户ID
|
||||
* @param status 状态 0-启用 1-禁用
|
||||
* @returns Promise<boolean>
|
||||
*/
|
||||
async changeUserStatus(userId: string, status: number): Promise<boolean> {
|
||||
const response = await api.patch<boolean>(`/user/${userId}/status`, { status });
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
* @param userId 用户ID
|
||||
* @returns Promise<string> 返回新密码
|
||||
*/
|
||||
async resetPassword(userId: string): Promise<string> {
|
||||
const response = await api.post<string>(`/user/${userId}/reset-password`);
|
||||
return response.data.data!;
|
||||
},
|
||||
|
||||
/**
|
||||
* 上传用户头像
|
||||
* @param file 文件
|
||||
* @returns Promise<string> 返回头像URL
|
||||
*/
|
||||
async uploadAvatar(file: File): Promise<string> {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
const response = await api.upload<string>('/user/avatar', formData);
|
||||
return response.data.data!;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user