Files

134 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 工具包
本模块提供各种实用工具函数和类。
## 功能特性
- 加密工具MD5、SHA256、密码哈希
- JWT token管理
- 统一响应处理
- 数据验证
- 日志管理
## 模块结构
```
utils/
├── crypto.go # 加密工具
├── jwt.go # JWT管理
├── response.go # 响应处理
├── validator.go # 数据验证
├── logger.go # 日志管理
└── README.md # 说明文档
```
## 使用方法
### 加密工具
```go
import "goalfymax-admin/pkg/utils"
// MD5哈希
hash := utils.MD5Hash("password")
// SHA256哈希
hash := utils.SHA256Hash("password")
// 生成盐值
salt, err := utils.GenerateSalt()
// 哈希密码
hashedPassword := utils.HashPassword("password", salt)
// 验证密码
isValid := utils.VerifyPassword("password", salt, hashedPassword)
```
### JWT管理
```go
// 创建JWT管理器
jwtManager := utils.NewJWTManager("your-secret-key")
// 生成token
token, err := jwtManager.GenerateToken(1, "admin", "admin")
// 解析token
claims, err := jwtManager.ParseToken(token)
// 刷新token
newToken, err := jwtManager.RefreshToken(token)
```
### 响应处理
```go
// 创建响应实例
resp := utils.NewResponse()
// 成功响应
resp.Success(c, data)
// 错误响应
resp.Error(c, 400, "参数错误")
resp.BadRequest(c, "请求参数错误")
resp.Unauthorized(c, "未授权")
resp.Forbidden(c, "禁止访问")
resp.NotFound(c, "资源不存在")
resp.InternalServerError(c, "服务器内部错误")
// 分页响应
resp.Page(c, data, total, page, size)
```
### 数据验证
```go
// 创建验证器
validator := utils.NewValidator()
// 验证邮箱
isValid := validator.IsEmail("user@example.com")
// 验证手机号
isValid := validator.IsPhone("13800138000")
// 验证用户名
isValid := validator.IsUsername("admin")
// 验证密码强度
isValid := validator.IsPassword("password123")
// 验证URL
isValid := validator.IsURL("https://example.com")
// 检查是否为空
isEmpty := validator.IsEmpty("")
// 验证角色
isValid := validator.IsValidRole("admin")
```
### 日志管理
```go
// 创建日志实例
logger, err := utils.NewLogger("info", "json", "stdout")
if err != nil {
log.Fatal(err)
}
// 记录日志
logger.Info("用户登录", zap.String("username", "admin"))
logger.Error("登录失败", zap.String("error", "密码错误"))
// 添加字段
logger.WithField("user_id", 1).Info("用户操作")
logger.WithFields(map[string]interface{}{
"user_id": 1,
"action": "login",
}).Info("用户登录")
```