Files
schoolNews/schoolNewsWeb/src/apis/user.ts

154 lines
3.9 KiB
TypeScript
Raw Normal View History

2025-10-06 16:49:12 +08:00
/**
* @description API
* @author yslg
* @since 2025-10-06
*/
import { api } from './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!;
}
};