htxp

package module
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Sep 12, 2025 License: MIT Imports: 31 Imported by: 0

README

HTXP - Go工具库

HTXP 是一个 Go 语言工具库,提供了常用的功能封装,包括字符串生成、文件操作、Minio对象存储、RabbitMQ消息队列、MDM管理等。

特性

  • 🚀 简洁的API设计 - 使用包级别函数,无需实例化
  • 🔧 丰富的工具函数 - 字符串生成、加密、文件操作等
  • ☁️ 对象存储支持 - Minio集成
  • 📨 消息队列支持 - RabbitMQ集成
  • 👥 用户管理 - Minio MDM用户管理
  • 📝 日志系统 - Logrus集成
  • 🔄 HTTP响应 - 统一的HTTP响应格式

安装

go get github.com/linktomarkdown/htxp

快速开始

基础工具函数
package main

import (
    "fmt"
    "github.com/linktomarkdown/htxp"
)

func main() {
    // 初始化日志
    htxp.InitLogrus()
    
    // 生成订单号
    orderNo := htxp.GenerateOrderNo()
    fmt.Println("订单号:", orderNo)
    
    // 生成微信支付订单ID
    orderID := htxp.GenerateOrderID("wechat")
    fmt.Println("订单ID:", orderID)
    
    // 生成随机名称
    name := htxp.GenerateName(10)
    fmt.Println("随机名称:", name)
    
    // MD5加密
    hash := htxp.Md5V("password123")
    fmt.Println("MD5哈希:", hash)
    
    // 生成随机密码
    password := htxp.GenerateRandomPassword(12, true, true, true)
    fmt.Println("随机密码:", password)
}
Minio对象存储
package main

import (
    "log"
    "github.com/linktomarkdown/htxp"
)

func main() {
    // 初始化Minio客户端
    err := htxp.InitMinio("localhost:9000", "minioadmin", "minioadmin", false)
    if err != nil {
        log.Fatal(err)
    }
    
    // 创建bucket
    err = htxp.CreateBucket("mybucket")
    if err != nil {
        log.Fatal(err)
    }
    
    // 检查bucket是否存在
    exists, err := htxp.BucketHasExists("mybucket")
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Bucket exists: %v", exists)
}
RabbitMQ消息队列
package main

import (
    "log"
    "github.com/linktomarkdown/htxp"
)

func main() {
    // 初始化RabbitMQ连接
    rabbitConf := htxp.RabbitConf{
        Username: "guest",
        Password: "guest", 
        Host:     "localhost",
        Port:     5672,
        VHost:    "/",
    }
    err := htxp.InitRabbitMQ(rabbitConf)
    if err != nil {
        log.Fatal(err)
    }
    
    // 初始化交换机和队列
    err = htxp.InitRabbitMQExchange("test_exchange", "direct")
    if err != nil {
        log.Fatal(err)
    }
    
    // 发送消息
    err = htxp.SendMessage("test_exchange", "test_key", []byte("Hello RabbitMQ"), "text/plain")
    if err != nil {
        log.Fatal(err)
    }
    
    // 关闭连接
    defer htxp.CloseRabbitMQ()
}
MDM用户管理
package main

import (
    "log"
    "github.com/linktomarkdown/htxp"
)

func main() {
    // 初始化MDM客户端
    err := htxp.InitMDM("localhost:9000", "minioadmin", "minioadmin", false)
    if err != nil {
        log.Fatal(err)
    }
    
    // 创建用户
    err = htxp.CreateUser("newuser", "newpassword")
    if err != nil {
        log.Fatal(err)
    }
    
    // 设置用户策略
    err = htxp.SetUserPolicy("newuser", "readwrite")
    if err != nil {
        log.Fatal(err)
    }
    
    // 获取用户信息
    userInfo, err := htxp.UserInfo("newuser")
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("用户信息: %+v", userInfo)
}
HTTP响应
package main

import (
    "errors"
    "net/http"
    "github.com/linktomarkdown/htxp"
)

func main() {
    http.HandleFunc("/success", func(w http.ResponseWriter, r *http.Request) {
        data := map[string]interface{}{
            "name": "张三",
            "age":  30,
        }
        htxp.Success(w, data)
    })

    http.HandleFunc("/error", func(w http.ResponseWriter, r *http.Request) {
        err := errors.New("发生了一个错误")
        htxp.Error(w, err)
    })

    http.ListenAndServe(":8080", nil)
}

API文档

字符串生成
  • GenerateOrderNo() - 生成订单号
  • GenerateOrderID(paymentType string) - 生成支付订单ID
  • GenerateName(n int) - 生成随机名称
  • GenerateRandomPassword(length int, useLetters, useSpecial, useNum bool) - 生成随机密码
  • GenerateRandomString(length int) - 生成随机字符串
  • GenerateRandomNumber(length int) - 生成随机数字
  • GenerateRandomUUID() - 生成UUID
加密工具
  • Md5V(str string) - MD5加密
  • GenerateKey(length int) - 生成密钥
类型转换
  • StringToInt(s string) - 字符串转整数
  • StringToFloat64(s string) - 字符串转浮点数
  • ConvertUidToUint64(uid string) - UID转uint64
数组操作
  • InArray(needle string, haystack []string) - 判断元素是否在数组中
  • ContainsRoles(needle string, haystack []string) - 判断是否包含角色
文件操作
  • CopyFile(src, dst string) - 复制文件
  • CopyDir(src, dst string) - 复制目录
日志系统
  • InitLogrus() - 初始化日志系统
环境变量
  • GetEnvInfo(env string) - 获取环境变量
异常处理
  • TryCatch(f func(), handler func(interface{})) - 异常捕获

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddPrefix added in v0.2.1

func AddPrefix(path string, prefix string) string

AddPrefix 添加前缀

func CalculateTotalPages added in v1.2.0

func CalculateTotalPages(total, pageSize int64) int64

CalculateTotalPages 计算总页数

func CheckPassword added in v1.2.0

func CheckPassword(password, hash string) bool

CheckPassword 验证密码

func Contains added in v0.2.1

func Contains(needle string, haystack []string) bool

Contains 判断是否包含

func ConvertToMap added in v0.2.1

func ConvertToMap(str string) map[string]string

func ConvertUidToUint64 added in v0.2.1

func ConvertUidToUint64(uid string) uint64

ConvertUidToUint64 转换UID为uint64

func CopyDir added in v0.2.1

func CopyDir(src string, dst string) error

CopyDir 复制目录

func CopyFile added in v0.2.1

func CopyFile(src, dst string) error

CopyFile 复制文件

func Error

func Error(w http.ResponseWriter, err error)

Error 处理错误响应(默认 code -1)

func ErrorWithCode added in v1.1.0

func ErrorWithCode(w http.ResponseWriter, err error, code int)

ErrorWithCode 支持自定义 code

func Float64Ptr added in v1.2.0

func Float64Ptr(f float64) *float64

Float64Ptr 浮点数指针

func FormatTimeToTimestamp added in v1.3.1

func FormatTimeToTimestamp(nullTime sql.NullTime) string

FormatTimeToTimestamp 将时间转换为时间戳字符串(毫秒级)

func FormatTimeToTimestampInt64 added in v1.3.1

func FormatTimeToTimestampInt64(nullTime sql.NullTime) int64

FormatTimeToTimestampInt64 将时间转换为时间戳(毫秒级)

func FormatTimeToUnix added in v1.3.1

func FormatTimeToUnix(nullTime sql.NullTime) string

FormatTimeToUnix 将时间转换为Unix时间戳字符串(秒级)

func FormatTimeToUnixInt64 added in v1.3.1

func FormatTimeToUnixInt64(nullTime sql.NullTime) int64

FormatTimeToUnixInt64 将时间转换为Unix时间戳(秒级)

func FormatTimestampToString added in v1.3.2

func FormatTimestampToString(timestamp int64) string

FormatTimestampToString 将毫秒级时间戳转换为字符串

func FormatUnixToString added in v1.3.2

func FormatUnixToString(timestamp int64) string

FormatUnixToString 将Unix时间戳转换为字符串

func GenRefreshToken added in v1.2.0

func GenRefreshToken() (string, error)

GenRefreshToken 生成刷新token(包级函数)

func GenToken added in v1.2.0

func GenToken(secretKey string, iat, seconds int64, claims jwt.MapClaims) (string, error)

GenToken 生成jwt(包级函数,无需声明实例)

func GenTokenWithPayload added in v1.2.0

func GenTokenWithPayload(secretKey string, iat, seconds int64, payload string) (string, error)

GenTokenWithPayload 生成jwt(兼容旧版本,payload作为字符串)

func GenTokenWithUser added in v1.2.0

func GenTokenWithUser(secretKey string, iat, seconds int64, uid, cid interface{}) (string, error)

GenTokenWithUser 生成包含用户信息的jwt(便捷方法)

func GenerateKey added in v0.2.1

func GenerateKey(length int) (string, error)

GenerateKey 生成密钥

func GenerateName added in v0.2.1

func GenerateName(n int) string

GenerateName 生成名称

func GenerateOrderID added in v0.2.1

func GenerateOrderID(paymentType string) string

GenerateOrderID 生成订单号(符合微信 32 位长度)

func GenerateOrderNo added in v0.2.1

func GenerateOrderNo() string

GenerateOrderNo 生成订单号

func GenerateRandomMixed added in v0.2.1

func GenerateRandomMixed(length int) string

GenerateRandomMixed 生成随机混合字符串

func GenerateRandomNumber added in v0.2.1

func GenerateRandomNumber(length int) string

GenerateRandomNumber 生成随机数字

func GenerateRandomPassword added in v0.2.1

func GenerateRandomPassword(length int, useLetters bool, useSpecial bool, useNum bool) string

GenerateRandomPassword 生成随机密码

func GenerateRandomSpecial added in v0.2.1

func GenerateRandomSpecial(length int) string

GenerateRandomSpecial 生成随机特殊字符

func GenerateRandomString added in v0.2.1

func GenerateRandomString(length int) string

GenerateRandomString 生成随机字符串

func GetRound added in v0.2.1

func GetRound(num float64) int

GetRound 四舍五入

func GetStringValue added in v1.3.1

func GetStringValue(ns interface{}) string

GetStringValue 获取 sql.NullString 的值

func GetUIDFromContext added in v0.2.1

func GetUIDFromContext(r *http.Request) (uint64, error)

func GetUIDFromLogic added in v0.2.1

func GetUIDFromLogic(ctx context.Context) (uint64, error)

func GetUserIdAsUint64 added in v0.2.1

func GetUserIdAsUint64(data map[string]interface{}) (uint64, error)

func HashPassword added in v1.2.0

func HashPassword(password string) (string, error)

HashPassword 加密密码

func InArray added in v0.2.1

func InArray(needle string, haystack []string) bool

InArray 判断元素是否在数组中

func Int64Ptr added in v1.2.0

func Int64Ptr(i int64) *int64

Int64Ptr 整数指针

func Md5V added in v0.2.1

func Md5V(str string) string

Md5V 密码md5加密

func NullFloat64Ptr added in v1.2.0

func NullFloat64Ptr(f float64) sql.NullFloat64

NullFloat64Ptr 创建 sql.NullFloat64

func NullInt64Ptr added in v1.2.0

func NullInt64Ptr(i int64) sql.NullInt64

NullInt64Ptr 创建 sql.NullInt64

func NullStringPtr added in v1.2.0

func NullStringPtr(s string) sql.NullString

NullStringPtr 创建 sql.NullString

func NullTimePtr added in v1.2.0

func NullTimePtr(t time.Time) sql.NullTime

NullTimePtr 创建 sql.NullTime

func Paginate added in v1.2.0

func Paginate(page, pageSize int64) (offset, limit int)

Paginate 分页工具

func Response

func Response(w http.ResponseWriter, resp interface{}, err error, code int)

Response 统一处理HTTP响应

func StringPtr added in v1.2.0

func StringPtr(s string) *string

StringPtr 字符串指针

func StringToFloat64 added in v0.2.1

func StringToFloat64(s string) float64

StringToFloat64 字符串转浮点数

func StringToInt added in v0.2.1

func StringToInt(s string) int

StringToInt 字符串转整数

func Success

func Success(w http.ResponseWriter, data interface{})

Success 处理成功响应

func TryCatch added in v0.2.1

func TryCatch(f func(), handler func(interface{}))

TryCatch 捕获异常

Types

type AliyunSmsClient added in v0.2.1

type AliyunSmsClient struct {
	AccessKeyId     string
	AccessKeySecret string
	SignName        string
	RegionId        string
}

func NewAliyunSmsClient added in v0.2.1

func NewAliyunSmsClient(accessKeyId, accessKeySecret, signName string) *AliyunSmsClient

func (*AliyunSmsClient) SendSms added in v0.2.1

func (c *AliyunSmsClient) SendSms(mobiles []string, templateCode string, parameters map[string]string) (*SmsResponse, error)

发送短信

type Body

type Body struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data,omitempty"`
}

Body 定义了API响应的标准格式

type CacheClient added in v0.2.1

type CacheClient struct {
	*redis.Client
}

func NewRedisConnect added in v0.2.1

func NewRedisConnect(options *RedisOptions) (*CacheClient, error)

type JWTToken added in v0.2.1

type JWTToken struct {
}

func NewJWTTokenLogic added in v0.2.1

func NewJWTTokenLogic() *JWTToken

func (*JWTToken) GenRefreshToken added in v0.2.1

func (j *JWTToken) GenRefreshToken() (string, error)

GenRefreshToken 生成刷新token

func (*JWTToken) GenToken added in v0.2.1

func (j *JWTToken) GenToken(secretKey string, iat, seconds int64, payload string) (string, error)

GenToken 生成jwt(实例方法,保持向后兼容)

type MDM added in v0.2.1

type MDM struct {
	*madmin.AdminClient
	// contains filtered or unexported fields
}

func NewMDM added in v0.2.1

func NewMDM(endpoint, accessKeyID, secretAccessKey string, useSSL bool) (*MDM, error)

func (*MDM) CreateUser added in v0.2.1

func (m *MDM) CreateUser(accessKey, secretKey string) error

CreateUser 创建用户

func (*MDM) PoliciesList added in v0.2.1

func (m *MDM) PoliciesList() ([]madmin.KMSPolicyInfo, error)

PoliciesList 获取所有策略

func (*MDM) SetUserPolicy added in v0.2.1

func (m *MDM) SetUserPolicy(accessKey, policyName string) error

SetUserPolicy 设置策略

func (*MDM) UserInfo added in v0.2.1

func (m *MDM) UserInfo(accessKey string) (madmin.UserInfo, error)

UserInfo 获取用户信息

type Minio added in v0.2.1

type Minio struct {
	*minio.Client
	*madmin.AdminClient
	// contains filtered or unexported fields
}

func NewMinio added in v0.2.1

func NewMinio(endpoint, accessKeyID, secretAccessKey string, useSSL bool) (*Minio, error)

func (*Minio) AllBuckets added in v0.2.1

func (m *Minio) AllBuckets() ([]minio.BucketInfo, error)

AllBuckets List all buckets

func (*Minio) BucketHasExists added in v0.2.1

func (m *Minio) BucketHasExists(bucketName string) (bool, error)

BucketHasExists Check if a bucket exists

func (*Minio) ClearBucket added in v0.2.1

func (m *Minio) ClearBucket(bucketName string) error

ClearBucket Remove a bucket

func (*Minio) ClearObject added in v0.2.1

func (m *Minio) ClearObject(bucketName string, objectName string) error

ClearObject file from minio

func (*Minio) ClearObjects added in v0.2.1

func (m *Minio) ClearObjects(bucketName string, prefix string) error

ClearObjects file from minio

func (*Minio) CreateBucket added in v0.2.1

func (m *Minio) CreateBucket(bucketName string) error

CreateBucket Create a new bucket

func (*Minio) DownloadObject added in v0.2.1

func (m *Minio) DownloadObject(bucketName string, objectName string, filePath string) error

DownloadObject file from minio

func (*Minio) GetObjectStat added in v0.2.1

func (m *Minio) GetObjectStat(bucketName string, objectName string) minio.ObjectInfo

GetObjectStat 获取文件对象详细

func (*Minio) GetObjectsByBucket added in v0.2.1

func (m *Minio) GetObjectsByBucket(bucketName string, prefix string, recursive bool) <-chan minio.ObjectInfo

GetObjectsByBucket Get all objects in a bucket

func (*Minio) InquireBucketPolicy added in v0.2.1

func (m *Minio) InquireBucketPolicy(bucketName string) (string, error)

InquireBucketPolicy Get a bucket policy

func (*Minio) PreviewURL added in v0.2.1

func (m *Minio) PreviewURL(bucketName string, objectName string, expires int64) (string, error)

PreviewURL 预览文件

func (*Minio) SetUpBucketPolicy added in v0.2.1

func (m *Minio) SetUpBucketPolicy(bucketName string, policy string) error

SetUpBucketPolicy Set a bucket policy

func (*Minio) UploadByFPutObject added in v0.2.1

func (m *Minio) UploadByFPutObject(bucketName string, objectName string, file *multipart.FileHeader, contentType string) error

UploadByFPutObject file to minio

func (*Minio) UploadObject added in v0.2.1

func (m *Minio) UploadObject(bucketName string, objectName string, file *multipart.FileHeader, contentType string) error

UploadObject file to minio

type RedisOptions added in v0.2.1

type RedisOptions redis.Options

type RegisterOptions added in v0.2.1

type RegisterOptions struct {
	Name           string
	Type           string
	Path           string
	Command        string
	CommandStop    string
	Status         int
	RemoteHost     string
	RemotePort     int
	RemoteUser     string
	RemotePassword string
	RemoteKey      string
	ApiUrl         string
}

type SmsRequest added in v0.2.1

type SmsRequest struct {
	PhoneNumbers  string `json:"PhoneNumbers"`
	SignName      string `json:"SignName"`
	TemplateCode  string `json:"TemplateCode"`
	TemplateParam string `json:"TemplateParam"`
}

type SmsResponse added in v0.2.1

type SmsResponse struct {
	RequestId string `json:"RequestId"`
	Code      string `json:"Code"`
	Message   string `json:"Message"`
	BizId     string `json:"BizId"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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