生产管理系统 - 员工管理提交
This commit is contained in:
@@ -8,6 +8,11 @@
|
||||
import { getAuthToken } from "@/utils/token";
|
||||
import {
|
||||
listSystemUsersApiV1UsersSystemUsersGet,
|
||||
createSystemUserApiV1UsersSystemUsersPost,
|
||||
getSystemUserApiV1UsersSystemUsersUserIdGet,
|
||||
activateSystemUserApiV1UsersSystemUsersUserIdActivatePost,
|
||||
deactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePost,
|
||||
deleteSystemUserApiV1UsersSystemUsersUserIdDelete,
|
||||
} from "@/lib/api/sdk.gen";
|
||||
|
||||
// API返回的用户数据类型
|
||||
@@ -191,4 +196,359 @@ export interface PaginationState {
|
||||
totalPages: number;
|
||||
hasNext: boolean;
|
||||
hasPrev: boolean;
|
||||
}
|
||||
|
||||
// 创建用户请求参数接口
|
||||
export interface CreateUserRequest {
|
||||
email: string;
|
||||
username: string;
|
||||
full_name: string;
|
||||
phone: string;
|
||||
password: string;
|
||||
is_superuser: boolean;
|
||||
tenant_id?: string; // 系统管理员不传,企业管理员必传
|
||||
}
|
||||
|
||||
// 创建用户响应数据类型
|
||||
export interface CreateUserResponse {
|
||||
id: string;
|
||||
email: string;
|
||||
username: string;
|
||||
full_name: string;
|
||||
phone: string;
|
||||
is_superuser: boolean;
|
||||
tenant_id?: string;
|
||||
is_active: boolean;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建系统用户(系统管理员或企业管理员)
|
||||
*
|
||||
* @param userData 用户创建数据
|
||||
* @returns 创建成功的用户数据
|
||||
*/
|
||||
export async function createUser(userData: CreateUserRequest): Promise<CreateUserResponse> {
|
||||
try {
|
||||
console.log(`[API] createUser 创建用户:`, userData);
|
||||
|
||||
// 获取认证token
|
||||
const token = getAuthToken();
|
||||
|
||||
// 构建请求参数
|
||||
const requestData: any = {
|
||||
email: userData.email,
|
||||
username: userData.username,
|
||||
full_name: userData.full_name,
|
||||
phone: userData.phone,
|
||||
password: userData.password,
|
||||
is_superuser: userData.is_superuser,
|
||||
};
|
||||
|
||||
// 只有企业管理员才传tenant_id
|
||||
if (userData.tenant_id) {
|
||||
requestData.tenant_id = userData.tenant_id;
|
||||
}
|
||||
|
||||
// 调用SDK API创建系统用户
|
||||
const response = await createSystemUserApiV1UsersSystemUsersPost({
|
||||
body: requestData,
|
||||
headers: token ? {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
} : undefined,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
// 处理API错误,提取错误信息
|
||||
const errorMessage = response.error.message || '创建用户失败';
|
||||
console.error('[API] createUser 创建用户失败:', response.error);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const data = response.data as any;
|
||||
console.log('[API] createUser 创建用户成功:', data);
|
||||
|
||||
// 返回创建成功的用户数据
|
||||
return {
|
||||
id: data.id,
|
||||
email: data.email,
|
||||
username: data.username,
|
||||
full_name: data.full_name,
|
||||
phone: data.phone,
|
||||
is_superuser: data.is_superuser,
|
||||
tenant_id: data.tenant_id,
|
||||
is_active: data.is_active,
|
||||
created_at: data.created_at,
|
||||
updated_at: data.updated_at,
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
console.error('[API] createUser 创建用户异常:', error);
|
||||
|
||||
// 如果是已知错误,直接抛出
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
// 未知错误包装成标准错误格式
|
||||
throw new Error('创建用户失败,请稍后重试');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证用户创建数据
|
||||
*
|
||||
* @param userData 用户数据
|
||||
* @returns 验证结果
|
||||
*/
|
||||
export function validateUserData(userData: CreateUserRequest): { isValid: boolean; errors: string[] } {
|
||||
const errors: string[] = [];
|
||||
|
||||
// 邮箱验证
|
||||
if (!userData.email) {
|
||||
errors.push('邮箱不能为空');
|
||||
} else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(userData.email)) {
|
||||
errors.push('邮箱格式不正确');
|
||||
}
|
||||
|
||||
// 用户名验证
|
||||
if (!userData.username) {
|
||||
errors.push('用户名不能为空');
|
||||
} else if (userData.username.length < 3) {
|
||||
errors.push('用户名长度至少3位');
|
||||
}
|
||||
|
||||
// 姓名验证
|
||||
if (!userData.full_name) {
|
||||
errors.push('姓名不能为空');
|
||||
}
|
||||
|
||||
// 电话验证
|
||||
if (!userData.phone) {
|
||||
errors.push('电话不能为空');
|
||||
} else if (!/^1[3-9]\d{9}$/.test(userData.phone)) {
|
||||
errors.push('请输入正确的手机号码');
|
||||
}
|
||||
|
||||
// 密码验证
|
||||
if (!userData.password) {
|
||||
errors.push('密码不能为空');
|
||||
} else if (userData.password.length < 6) {
|
||||
errors.push('密码长度至少6位');
|
||||
}
|
||||
|
||||
// 企业管理员需要tenant_id
|
||||
if (!userData.is_superuser && !userData.tenant_id) {
|
||||
errors.push('企业管理员必须选择所属企业');
|
||||
}
|
||||
|
||||
return {
|
||||
isValid: errors.length === 0,
|
||||
errors
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户详情信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @returns 用户详情数据
|
||||
*/
|
||||
export async function fetchUserDetails(userId: string): Promise<UserData> {
|
||||
try {
|
||||
console.log(`[API] fetchUserDetails 获取用户详情: ${userId}`);
|
||||
|
||||
// 获取认证token
|
||||
const token = getAuthToken();
|
||||
|
||||
// 调用SDK API获取用户详情
|
||||
const response = await getSystemUserApiV1UsersSystemUsersUserIdGet({
|
||||
path: {
|
||||
user_id: userId,
|
||||
},
|
||||
headers: token ? {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
} : undefined,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
const errorMessage = response.error.message || '获取用户详情失败';
|
||||
console.error('[API] fetchUserDetails 获取用户详情失败:', response.error);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const data = response.data as any;
|
||||
console.log('[API] fetchUserDetails 获取用户详情成功:', data);
|
||||
|
||||
// 返回用户详情数据
|
||||
return {
|
||||
id: data.id,
|
||||
tenant_id: data.tenant_id,
|
||||
email: data.email,
|
||||
username: data.username,
|
||||
full_name: data.full_name,
|
||||
phone: data.phone,
|
||||
is_active: data.is_active,
|
||||
status: data.is_active ? 'active' : 'inactive',
|
||||
is_superuser: data.is_superuser,
|
||||
is_verified: data.is_verified,
|
||||
created_at: data.created_at,
|
||||
updated_at: data.updated_at,
|
||||
last_login_at: data.last_login_at,
|
||||
avatar_url: data.avatar_url,
|
||||
bio: data.bio,
|
||||
display_name: data.display_name,
|
||||
department_id: data.department_id,
|
||||
department_name: data.department_name,
|
||||
scope: data.scope || 'system',
|
||||
company_name: data.company_name,
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
console.error('[API] fetchUserDetails 获取用户详情异常:', error);
|
||||
|
||||
// 如果是已知错误,直接抛出
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
// 未知错误包装成标准错误格式
|
||||
throw new Error('获取用户详情失败,请稍后重试');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 激活系统用户
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export async function activateUser(userId: string): Promise<void> {
|
||||
try {
|
||||
console.log(`[API] activateUser 激活用户: ${userId}`);
|
||||
|
||||
// 获取认证token
|
||||
const token = getAuthToken();
|
||||
|
||||
// 调用SDK API激活用户
|
||||
const response = await activateSystemUserApiV1UsersSystemUsersUserIdActivatePost({
|
||||
path: {
|
||||
user_id: userId,
|
||||
},
|
||||
headers: token ? {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
} : undefined,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
// 处理API错误,提取错误信息
|
||||
const errorMessage = response.error.message || '激活用户失败';
|
||||
console.error('[API] activateUser 激活用户失败:', response.error);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
console.log('[API] activateUser 激活用户成功:', userId);
|
||||
|
||||
} catch (error) {
|
||||
console.error('[API] activateUser 激活用户异常:', error);
|
||||
|
||||
// 如果是已知错误,直接抛出
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
// 未知错误包装成标准错误格式
|
||||
throw new Error('激活用户失败,请稍后重试');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 停用系统用户
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export async function deactivateUser(userId: string): Promise<void> {
|
||||
try {
|
||||
console.log(`[API] deactivateUser 停用用户: ${userId}`);
|
||||
|
||||
// 获取认证token
|
||||
const token = getAuthToken();
|
||||
|
||||
// 调用SDK API停用用户
|
||||
const response = await deactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePost({
|
||||
path: {
|
||||
user_id: userId,
|
||||
},
|
||||
headers: token ? {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
} : undefined,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
// 处理API错误,提取错误信息
|
||||
const errorMessage = response.error.message || '停用用户失败';
|
||||
console.error('[API] deactivateUser 停用用户失败:', response.error);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
console.log('[API] deactivateUser 停用用户成功:', userId);
|
||||
|
||||
} catch (error) {
|
||||
console.error('[API] deactivateUser 停用用户异常:', error);
|
||||
|
||||
// 如果是已知错误,直接抛出
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
// 未知错误包装成标准错误格式
|
||||
throw new Error('停用用户失败,请稍后重试');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统用户
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export async function deleteUser(userId: string): Promise<void> {
|
||||
try {
|
||||
console.log(`[API] deleteUser 删除用户: ${userId}`);
|
||||
|
||||
// 获取认证token
|
||||
const token = getAuthToken();
|
||||
|
||||
// 调用SDK API删除用户
|
||||
const response = await deleteSystemUserApiV1UsersSystemUsersUserIdDelete({
|
||||
path: {
|
||||
user_id: userId,
|
||||
},
|
||||
headers: token ? {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
} : undefined,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
// 处理API错误,提取错误信息
|
||||
const errorMessage = response.error.message || '删除用户失败';
|
||||
console.error('[API] deleteUser 删除用户失败:', response.error);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
console.log('[API] deleteUser 删除用户成功:', userId);
|
||||
|
||||
} catch (error) {
|
||||
console.error('[API] deleteUser 删除用户异常:', error);
|
||||
|
||||
// 如果是已知错误,直接抛出
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
// 未知错误包装成标准错误格式
|
||||
throw new Error('删除用户失败,请稍后重试');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user