154 lines
3.9 KiB
TypeScript
154 lines
3.9 KiB
TypeScript
/**
|
|
* @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!;
|
|
}
|
|
};
|
|
|