竹简文档

工具库

字符串、时间、加密等常用工具函数

工具库

Bamboo Base 提供了一系列常用的工具函数,简化开发工作。

字符串工具 (string.go)

常用函数

// 判断字符串是否为空
func IsEmpty(s string) bool

// 判断字符串是否不为空
func IsNotEmpty(s string) bool

// 判断字符串是否为空白字符
func IsBlank(s string) bool

// 字符串默认值
func DefaultIfEmpty(s, defaultVal string) string

使用示例

import "github.com/bamboo-services/bamboo-base-go/utils"

// 判断空字符串
utils.IsEmpty("")        // true
utils.IsEmpty("hello")   // false

// 默认值
utils.DefaultIfEmpty("", "default")  // "default"
utils.DefaultIfEmpty("a", "default") // "a"

随机字符串

// 生成随机字符串
func RandomString(length int) string

// 生成随机数字字符串
func RandomNumber(length int) string

// 生成 UUID
func UUID() string

使用示例:

utils.RandomString(10)  // "aBcDeFgHiJ"
utils.RandomNumber(6)   // "123456"
utils.UUID()            // "550e8400-e29b-41d4-a716-446655440000"

时间工具 (time.go)

常用函数

// 获取当前时间戳(秒)
func NowTimestamp() int64

// 获取当前时间戳(毫秒)
func NowTimestampMilli() int64

// 格式化时间
func FormatTime(t time.Time, layout string) string

// 解析时间字符串
func ParseTime(value, layout string) (time.Time, error)

使用示例

// 时间戳
utils.NowTimestamp()      // 1640995200
utils.NowTimestampMilli() // 1640995200000

// 格式化
t := time.Now()
utils.FormatTime(t, "2006-01-02 15:04:05")  // "2024-01-01 12:00:00"

// 解析
t, _ := utils.ParseTime("2024-01-01", "2006-01-02")

时间计算

// 获取当天开始时间
func StartOfDay(t time.Time) time.Time

// 获取当天结束时间
func EndOfDay(t time.Time) time.Time

// 添加天数
func AddDays(t time.Time, days int) time.Time

// 计算两个时间相差天数
func DaysBetween(t1, t2 time.Time) int

加密工具

MD5

// MD5 加密
func MD5(s string) string

// MD5 加密(字节)
func MD5Bytes(data []byte) string

使用示例:

utils.MD5("hello")  // "5d41402abc4b2a76b9719d911017c592"

SHA256

// SHA256 加密
func SHA256(s string) string

// HMAC-SHA256
func HMACSHA256(data, key string) string

密码加密

// 生成密码哈希(bcrypt)
func HashPassword(password string) (string, error)

// 验证密码
func VerifyPassword(password, hash string) bool

使用示例:

// 注册时加密密码
hash, _ := utils.HashPassword("userPassword")
// 存储 hash 到数据库

// 登录时验证密码
if utils.VerifyPassword(inputPassword, storedHash) {
    // 密码正确
}

上下文工具 (ctxutil)

Trace ID 管理

// 从上下文获取 Trace ID
func GetTraceID(c *gin.Context) string

// 设置 Trace ID 到上下文
func SetTraceID(c *gin.Context, traceID string)

// 生成新的 Trace ID
func GenerateTraceID() string

使用示例:

func Middleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        // 生成或从请求头获取 Trace ID
        traceID := c.GetHeader("X-Trace-ID")
        if traceID == "" {
            traceID = ctxutil.GenerateTraceID()
        }

        // 设置到上下文
        ctxutil.SetTraceID(c, traceID)

        // 设置响应头
        c.Header("X-Trace-ID", traceID)

        c.Next()
    }
}

用户信息管理

// 从上下文获取用户 ID
func GetUserID(c *gin.Context) int64

// 设置用户 ID 到上下文
func SetUserID(c *gin.Context, userID int64)

使用示例:

func AuthMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        // 验证 token 获取 userID
        userID := validateToken(c.GetHeader("Authorization"))

        // 设置到上下文
        ctxutil.SetUserID(c, userID)

        c.Next()
    }
}

func Handler(c *gin.Context) {
    // 获取当前用户 ID
    userID := ctxutil.GetUserID(c)

    // 查询用户信息...
}

数据验证工具

// 判断切片是否包含元素
func Contains(slice []string, item string) bool

// 去重
func Unique(slice []string) []string

// 交集
func Intersection(a, b []string) []string

文件工具

// 判断文件是否存在
func FileExists(path string) bool

// 获取文件扩展名
func GetFileExt(filename string) string

// 生成随机文件名
func GenerateFileName(ext string) string

下一步

On this page