# youdu **Repository Path**: woeoio/youdu ## Basic Information - **Project Name**: youdu - **Description**: youdu-sdk youdu-sdk youdu-sdk - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-09 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Youdu SDK Go 语言的有度 SDK,提供了完整的组织架构、消息发送、第三方认证等功能。 ## 主要模块 - **Org**:组织架构管理 - 用户、部门、群的创建、更新、删除、查询 - **AppMsg**:应用消息 - 文本消息、邮件消息发送 - **ThirdAuth**:第三方认证 - 集成第三方认证 ## 功能特性 - 内置全局速率限制器,自动控制 API 调用频率 - 默认速率:5 次/秒,支持运行时动态调整 - 线程安全,支持多 goroutine 并发调用 ## 安装 ```bash go get youdu ``` ## 快速开始 ```go import "youdu" func main() { client := youdu.Org{ Server: "https://api.youdomain.com", Buin: 123456, AppId: "your_app_id", EncodedAesKey: "your_encoded_aes_key", } // 获取用户信息 user, err := client.UserInfoGet("userId") if err != nil { panic(err) } fmt.Println(user) } ``` ## 速率控制配置 **已启用全局速率限制器,外部无需手动限速,只需通过参数调整速率。** ### 默认配置 - 默认速率:5 次/秒 - 时间窗口:1 秒 ### 使用方式 **方式 1:使用默认值(推荐)** ```go import "youdu" func main() { client := youdu.Org{...} // 直接使用,速率限制自动生效(5次/秒) user, err := client.UserInfoGet("userId") } ``` **方式 2:启动时自定义速率** ```go import "youdu" import "time" func main() { // 设置为10次/秒 youdu.SetGlobalRateLimiter(10, time.Second) client := youdu.Org{...} user, err := client.UserInfoGet("userId") } ``` **方式 3:运行时动态调整** ```go // 初始速率 youdu.SetGlobalRateLimiter(5, time.Second) // 业务处理... // 动态调整为20次/秒 youdu.SetGlobalRateLimiter(20, time.Second) ``` ### API 说明 - `GetGlobalRateLimiter()` - 获取全局速率限制器实例 - `SetGlobalRateLimiter(rate int, window time.Duration)` - 设置速率限制 - `InitGlobalRateLimiter(rate int, window time.Duration)` - 初始化速率限制(兼容旧接口) ### 已应用速率限制的函数 所有基础 API 函数均已内置速率限制,包括: - **用户**:`UserCreate`、`UserUpdate`、`UserInfoGet`、`UserDelete` 等 - **部门**:`DepartmentCreate`、`DepartmentUpdate`、`DepartmentListGet` 等 - **群**:`GroupCreate`、`GroupDelete`、`GroupInfoGet` 等 - **消息**:`SendTextMsg`、`SendMailMsg` - **认证**:`SetAuth` 聚合函数(如 `UserSave`、`DeptClear`)不额外添加速率限制,避免双重等待。 ## 模块使用示例 ### Org - 组织架构 ```go client := youdu.Org{ Server: "https://api.youdomain.com", Buin: 123456, AppId: "your_app_id", EncodedAesKey: "your_encoded_aes_key", } // 用户管理 client.UserCreate(userInfo) client.UserUpdate(userInfo) client.UserInfoGet("userId") // 部门管理 client.DepartmentCreate(deptInfo) client.DepartmentUpdate(deptInfo) client.DepartmentListGet() // 群管理 client.GroupCreate(groupInfo) client.GroupInfoGet("groupId") ``` ### AppMsg - 应用消息 ```go client := youdu.AppMsg{ Server: "https://api.youdomain.com", Buin: 123456, AppId: "your_app_id", EncodedAesKey: "your_encoded_aes_key", } // 发送文本消息 client.SendTextMsg(userId, message) // 发送邮件消息 client.SendMailMsg(userId, title, content) ``` ### ThirdAuth - 第三方认证 ```go client := youdu.ThirdAuth{ Server: "https://api.youdomain.com", Buin: 123456, AppId: "your_app_id", EncodedAesKey: "your_encoded_aes_key", } client.SetAuth(authInfo) ``` ## 注意事项 1. **速率控制**:所有 API 调用都受全局速率限制器控制,无需在外部额外限速 2. **聚合函数**:`UserSave`、`DeptClear` 等聚合函数不额外添加速率限制 3. **线程安全**:速率限制器使用读写锁保护,支持多 goroutine 并发调用 4. **动态配置**:支持运行时动态调整速率参数 ## 开发日志 详细的功能更新记录请查看 [devlog](./devlog) 目录。 ## 许可证 MIT License