278 lines
6.8 KiB
Markdown
278 lines
6.8 KiB
Markdown
# 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 进行通信
|
||
- 定期检查许可证有效性
|
||
|
||
## 📝 代码优化说明
|
||
|
||
### 已完成的优化
|
||
|
||
1. **中文注释优化**
|
||
- 为所有核心模块添加了详细的中文注释
|
||
- 统一了注释风格和格式
|
||
- 提高了代码的可读性和维护性
|
||
|
||
2. **性能优化**
|
||
- 优化了 `String2Int64` 函数,直接使用 `strconv.ParseInt` 而不是先转 int 再转 int64
|
||
- 改进了网络工具函数的错误处理
|
||
- 优化了缓存操作的性能
|
||
|
||
3. **代码质量提升**
|
||
- 统一了函数命名规范
|
||
- 改进了错误处理机制
|
||
- 增强了类型安全性
|
||
|
||
### 使用建议
|
||
|
||
1. **配置管理**
|
||
```go
|
||
// 推荐使用环境变量进行配置
|
||
conf.New("your-service", &config)
|
||
```
|
||
|
||
2. **错误处理**
|
||
```go
|
||
// 使用统一的错误码
|
||
if err != nil {
|
||
return errcode.ErrInternal
|
||
}
|
||
```
|
||
|
||
3. **缓存使用**
|
||
```go
|
||
// 使用统一的缓存键前缀
|
||
key := redisClient.BuildKey("user", userID)
|
||
```
|
||
|
||
4. **数据库连接**
|
||
```go
|
||
// 使用连接池优化
|
||
db, err := database.NewDatabase("mysql", dsn, options)
|
||
```
|
||
|
||
## 许可证
|
||
|
||
本项目采用私有许可证,请确保已获得相应的使用授权。
|
||
|
||
## 贡献
|
||
|
||
欢迎提交 Issue 和 Pull Request 来改进本项目。
|
||
|
||
## 联系方式
|
||
|
||
如有问题,请联系开发团队。 |