feat(settings): add team management functionality with user invite and team operations

This commit is contained in:
2025-10-22 17:26:08 +08:00
parent 73274300ec
commit a1ac879c6c
2 changed files with 409 additions and 3 deletions

View File

@@ -127,3 +127,125 @@ export function useSystemStatus() {
};
}
/**
* 团队设置
*/
export function useTeamSetting() {
const { userInfo, tenantInfo, tenantList, refreshUserData } = useUserData();
const [tenantUsers, setTenantUsers] = useState<any[]>([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
// 获取租户用户列表
const fetchTenantUsers = useCallback(async () => {
if (!tenantInfo?.tenant_id) return;
try {
const response = await userService.listTenantUser(tenantInfo.tenant_id);
if (response.data.code === 0) {
setTenantUsers(response.data.data || []);
}
} catch (error) {
logger.error('获取租户用户失败:', error);
}
}, [tenantInfo?.tenant_id]);
useEffect(() => {
if (tenantInfo?.tenant_id) {
fetchTenantUsers();
}
}, [fetchTenantUsers]);
const inviteUser = async (email: string) => {
if (!email.trim() || !tenantInfo?.tenant_id) return;
setLoading(true);
setError(null);
try {
const response = await userService.addTenantUser(tenantInfo.tenant_id, email.trim());
if (response.data.code === 0) {
await fetchTenantUsers();
await refreshUserData();
return { success: true };
} else {
const errorMsg = response.data.message || '邀请失败';
setError(errorMsg);
return { success: false, error: errorMsg };
}
} catch (error: any) {
const errorMsg = error.message || '邀请失败';
setError(errorMsg);
return { success: false, error: errorMsg };
} finally {
setLoading(false);
}
};
const deleteUser = async (userId: string) => {
if (!tenantInfo?.tenant_id) return;
try {
const response = await userService.deleteTenantUser({
tenantId: tenantInfo.tenant_id,
userId
});
if (response.data.code === 0) {
await fetchTenantUsers();
return { success: true };
}
return { success: false };
} catch (error) {
logger.error('删除用户失败:', error);
return { success: false };
}
};
const agreeTenant = async (tenantId: string) => {
try {
const response = await userService.agreeTenant(tenantId);
if (response.data.code === 0) {
await refreshUserData();
return { success: true };
}
return { success: false };
} catch (error) {
logger.error('同意加入失败:', error);
return { success: false };
}
};
const quitTenant = async (tenantId: string) => {
if (!userInfo?.id) return;
try {
const response = await userService.deleteTenantUser({
tenantId,
userId: userInfo.id
});
if (response.data.code === 0) {
await refreshUserData();
return { success: true };
}
return { success: false };
} catch (error) {
logger.error('退出租户失败:', error);
return { success: false };
}
};
return {
userInfo,
tenantInfo,
tenantList,
tenantUsers,
loading,
error,
inviteUser,
deleteUser,
agreeTenant,
quitTenant,
refreshUserData,
};
}