# BSM-SDK Core BSM-SDK Core 是一个企业级后端开发工具包的核心模块,提供了微服务架构、配置管理、加密解密、缓存、数据库访问、中间件等基础功能。 ## 私有仓库设置 ```bash go env -w GOPRIVATE=git.apinb.com/* go env -w GONOPROXY=git.apinb.com/* go env -w GOINSECURE=git.apinb.com/* go env -w GONOSUMDB=git.apinb.com/* ``` ## 核心功能模块 ### 1. 服务管理 (service) #### 服务启动与注册 - **Service**: 核心服务结构,支持 gRPC 服务启动和 etcd 注册 - **New()**: 创建服务实例 - **Start()**: 启动服务,支持 etcd 注册和 HTTP 网关 - **Stop()**: 优雅停止服务 - **Use()**: 执行初始化函数 #### 服务发现 - **FoundGrpcMethods()**: 自动发现 gRPC 方法 - **RegisterService()**: 注册服务到 etcd - **ServiceRegister**: 服务注册器,支持租约管理 #### 元数据解析 - **ParseMetaCtx()**: 解析 gRPC 上下文中的元数据 - **ParseOptions**: 解析选项,支持角色验证和私有IP检查 ### 2. 配置管理 (conf) #### 配置加载 - **New()**: 加载配置文件,支持环境变量替换 - **NotNil()**: 验证必需配置项 - **PrintInfo()**: 打印配置信息 - **CheckPort()**: 检查端口配置 #### 配置类型 - **MicroServiceConf**: 微服务配置 - **GatewayConf**: 网关配置 - **DBConf**: 数据库配置 ### 3. 加密与解密 (crypto) #### AES 加密 - **AESGCMEncrypt/AESGCMDecrypt**: GCM 模式加密解密 - **Encrypt/Decrypt**: CBC 模式加密解密 - **AesEncryptECB/AesDecryptECB**: ECB 模式加密解密 - **AesKeyCheck()**: 密钥环境变量检测 #### RSA 加密 - **EncryptWithPublicKey()**: 公钥加密 - **Decrypt()**: 私钥解密 #### 通用加密 - **AesEncryptCBC/AesDecryptCBC**: 通用 CBC 加密解密 - **PKCS7Padding/PKCS7UnPadding**: PKCS7 填充 ### 4. 数据库支持 (database) #### 数据库连接 - **NewDatabase()**: 创建数据库连接,支持 MySQL 和 PostgreSQL - **NewMysql()**: MySQL 连接 - **NewPostgres()**: PostgreSQL 连接 #### 数据库类型 - **SqlOptions**: 数据库连接选项 - **Std_IICUDS**: 标准数据库模型(ID、Identity、Created、Updated、Deleted、Status) - **Std_ICUD**: 标准数据库模型(ID、Created、Updated、Deleted) - **Std_Passport**: 护照模型 - **Std_Owner**: 所有者模型 ### 5. 缓存支持 (cache) #### Redis 缓存 - **RedisClient**: Redis 客户端封装 - **New()**: 创建 Redis 连接 - **Hash()**: 哈希分片计算 #### 内存缓存 - 支持内存缓存操作 ### 6. 消息队列 (queue) #### NATS 消息队列 - **Nats**: NATS 客户端封装 - **NewNats()**: 创建 NATS 连接 - **Subscribe()**: 订阅消息 - **Producer()**: 发布消息 ### 7. 中间件 (middleware) #### JWT 认证 - **JwtAuth()**: JWT 认证中间件 - **ParseAuth()**: 解析认证信息 #### CORS 支持 - **Cors()**: CORS 中间件 #### 运行模式 - **Mode()**: 设置 Gin 运行模式 ### 8. 工具类 (utils) #### 网络工具 - **GetLocationIP()**: 获取本机IP - **IsPublicIP()**: 判断是否为公网IP - **HttpGet/HttpPost()**: HTTP 请求工具 - **DownloadFile()**: 文件下载 #### 数据类型转换 - **String2Int/String2Int64**: 字符串转整数 - **String2Float64/String2Float32**: 字符串转浮点数 - **Int2String/Int642String**: 整数转字符串 - **Float64ToString/Float32ToString**: 浮点数转字符串 - **AnyToString()**: 任意类型转字符串 #### 时间处理 - **Time2String()**: 时间转字符串 - **String2Time()**: 字符串转时间 #### 身份标识 - **UUID()**: 生成 UUID - **ULID()**: 生成 ULID #### 文件操作 - **PathExists()**: 检查路径是否存在 - **CreateDir()**: 创建目录 - **GetRunPath()**: 获取运行路径 - **GetCurrentPath()**: 获取当前路径 #### JSON 处理 - **JsonEscape()**: JSON 转义 ### 9. 错误处理 (errcode) #### 标准错误码 - **Header 错误**: 101-104 - **标准错误**: 110-121 - **JWT 错误**: 131-139 - **模型错误**: 151-157 - **gRPC 错误**: 171-186 #### 错误创建 - **NewError()**: 创建标准错误 - **ErrFatal()**: 创建致命错误 - **ErrNotFound()**: 创建未找到错误 ### 10. 响应处理 (infra) #### 统一响应 - **Reply**: 统一响应结构 - **Success()**: 成功响应 - **Error()**: 错误响应,支持 gRPC 状态码转换 ### 11. 日志打印 (printer) #### 彩色日志 - **Info()**: 信息日志(白色) - **Warn()**: 警告日志(橙色) - **Success()**: 成功日志(绿色) - **Error()**: 错误日志(红色) - **Json()**: JSON 格式化输出 ### 12. 环境管理 (env) #### 运行时环境 - **RuntimeEnv**: 运行时环境配置 - **NewEnv()**: 初始化环境 - **GetEnvDefault()**: 获取环境变量默认值 ### 13. 变量管理 (vars) #### 全局变量 - **ServiceKey**: 服务键 - **HostName**: 主机名 - **VERSION**: 版本号 - **BUILD_TIME**: 构建时间 - **GO_VERSION**: Go 版本 ### 14. 第三方集成 (third) #### 微信集成 - 支持微信相关功能 ### 15. 许可证管理 (licence) #### 许可证验证 - 支持许可证文件验证 ### 配置环境变量 ```bash export BSM_Workspace=def export BSM_JwtSecretKey=your_secret_key export BSM_RuntimeMode=dev export BSM_Prefix=/usr/local/bsm ``` ### 安全建议 - 使用强密钥进行加密 - 定期更新 JWT 密钥 - 配置适当的数据库连接池 - 使用 HTTPS 进行通信 - 定期检查许可证有效性 ## 许可证 本项目采用私有许可证,请确保已获得相应的使用授权。 ## 贡献 欢迎提交 Issue 和 Pull Request 来改进本项目。 ## 联系方式 如有问题,请联系开发团队。