wueasy-go-tools

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2026 License: Apache-2.0

README

wueasy-go-tools

wueasy-go-tools 是一个为 Go 语言开发者打造的高效、易用的工具包集合。它封装了后端开发中常用的各种组件和功能模块,旨在减少重复代码编写,提高开发效率并统一代码规范。

📦 核心功能模块

  • 配置管理 (config): 统一的结构化配置定义与管理。
  • 日志系统 (log):
    • 基于 zaplumberjack 的高性能日志组件。
    • 支持日志切割、敏感信息脱敏。
    • 支持链路追踪 (TraceId) 并在 Gin 中间件中无缝接入。
  • 数据库客户端 (db-client):
    • 基于 sqlx 封装的数据库客户端。
    • 支持 MySQL 和 PostgreSQL。
    • 内置原生 SQL 执行日志拦截打印功能,方便开发调试。
  • Nacos 客户端 (nacos):
    • 集成 Nacos 服务注册与发现、配置中心。
    • 内置支持多种负载均衡策略(加权等),实现平滑的服务调用。
  • Redis 客户端 (redis):
    • 基于 go-redis/v9 的 Redis 客户端封装,支持简易配置与连接池管理。
  • API 响应封装 (result):
    • 提供统一的 HTTP 接口返回结构 (Result),内置标准状态码、分页模型。
    • 包含用户 Session、登录模型和验证码结构定义。
  • 国际化 (i18n): 基于 go-i18n 的多语言支持工具。
  • 文件服务客户端 (file-client):
    • 针对 wueasy-file-server 封装的专属客户端工具。
    • 支持 Nacos 服务发现和直接 HTTP 访问。
    • 提供文件的高效流式上传、下载、删除功能,并完整支持大文件分片上传及分片下载。
  • 系统服务 (system-service):
    • 基于 kardianos/service 封装。
    • 支持将 Go 编译后的程序一键安装、启动、停止和卸载为 Windows/Linux 后台系统服务。
  • 路径匹配 (ant-path-matcher): 提供类似 Spring 的 Ant 风格路径匹配工具(例如 /api/**/*.go)。
  • 启动参数解析 (startup-parameter): 统一的命令行或启动参数解析封装。
  • 实用工具 (utils):
    • 加密解密: 支持 RSA、SM4 (国密)、DES3 等常见加解密算法。
    • 文件处理: 文件大小格式化转换等。
    • 字符串/基础工具: 常用数据处理、随机数生成、Base64 等转换函数。

🚀 快速开始

1. 引入依赖

如果是本地项目,可以在 go.mod 中使用 replace 引入,或者如果已推送到远程仓库,可直接 go get

# 假设有远程仓库
go get github.com/wueasy/wueasy-go-tools

# 或者在本地使用 replace
# replace github.com/wueasy/wueasy-go-tools => ../wueasy-go-tools

代码中统一使用 github.com/wueasy/wueasy-go-tools/... 的路径进行导入:

import "github.com/wueasy/wueasy-go-tools/log"
import "github.com/wueasy/wueasy-go-tools/utils"
2. 常见使用示例
📌 日志记录 (Log)
import "github.com/wueasy/wueasy-go-tools/log"

func main() {
    // 记录普通日志
    log.Info("服务启动成功")
    
    // 带有 TraceId 的上下文日志
    log.CtxInfo(ctx, "收到新请求", "userId", 123)
}
📌 数据库连接 (DB Client)
import (
    "github.com/wueasy/wueasy-go-tools/config"
    dbClient "github.com/wueasy/wueasy-go-tools/db-client"
)

func initDB() {
    cfg := config.DbConfig{
        DriverName: "mysql",
        Uri:        "127.0.0.1:3306/mydb?charset=utf8mb4&parseTime=True&loc=Local",
        Username:   "root",
        Password:   "123456",
        ShowSql:    true, // 开启 SQL 日志打印
    }
    
    db, err := dbClient.Init(cfg)
    if err != nil {
        panic(err)
    }
    // 使用 db (sqlx.DB) 进行原生或便捷查询操作
}
📌 统一返回结果 (Result)
import (
    "github.com/wueasy/wueasy-go-tools/result"
    "github.com/gin-gonic/gin"
)

func GetUserInfo(c *gin.Context) {
    user := map[string]interface{}{"name": "admin", "age": 18}
    // 快速返回成功响应:{ "code": 0, "msg": "success", "data": {...} }
    c.JSON(200, result.SuccessData(user))
}
📌 Nacos 服务注册
import (
    "github.com/wueasy/wueasy-go-tools/config"
    nacosClient "github.com/wueasy/wueasy-go-tools/nacos"
)

func initNacos() {
    cfg := config.NacosConfig{
        IpAddr: "127.0.0.1",
        Port:   8848,
    }
    // 初始化并注册服务
    nacosClient.RegisterService(cfg)
}
📌 文件服务客户端 (File Client)
import (
    "github.com/wueasy/wueasy-go-tools/file-client"
)

func main() {
    // 创建客户端,默认支持从 Nacos 获取服务地址,也可以直接配置 BaseUrl
    client := fileClient.NewFileClient("file-server", "DEFAULT_GROUP").
        SetBaseUrl("http://127.0.0.1:9830")

    ctx := context.Background()
    
    // 1. 上传本地文件
    uploadResp, err := client.UploadLocalFile(ctx, "document", "/path/to/test.pdf")
    if err != nil {
        panic(err)
    }

    // 2. 下载文件
    fileData, err := client.Download(ctx, "document", uploadResp.Data.FilePath)
    
    // 3. 删除文件
    _, err = client.Delete(ctx, "document", uploadResp.Data.FilePath)
}

📄 开源协议

本项目遵循 Apache License 2.0 协议。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL