feat: 添加版本和构建时间变量 fix: 修正短信队列类型注释错误 style: 清理未使用的代码和测试文件 docs: 更新安装文档中的下载链接 chore: 迁移数据库脚本添加日志和订阅配置
97 lines
1.9 KiB
Go
97 lines
1.9 KiB
Go
package uuidx
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"encoding/base64"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/gofrs/uuid/v5"
|
|
"github.com/perfect-panel/server/pkg/random"
|
|
)
|
|
|
|
// NewUUID returns a new UUID.
|
|
func NewUUID() uuid.UUID {
|
|
id, err := uuid.NewV7()
|
|
if err != nil {
|
|
fmt.Println("fail to generate UUID", err.Error())
|
|
return uuid.UUID{}
|
|
}
|
|
return id
|
|
}
|
|
|
|
// ParseUUIDSlice parses the UUID string slice to UUID slice.
|
|
func ParseUUIDSlice(ids []string) []uuid.UUID {
|
|
var result []uuid.UUID
|
|
for _, v := range ids {
|
|
p, err := uuid.FromString(v)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
result = append(result, p)
|
|
}
|
|
return result
|
|
}
|
|
|
|
// ParseUUIDString parses UUID string to UUID type.
|
|
func ParseUUIDString(id string) uuid.UUID {
|
|
result, err := uuid.FromString(id)
|
|
if err != nil {
|
|
return uuid.UUID{}
|
|
}
|
|
return result
|
|
}
|
|
|
|
// ParseUUIDSliceToPointer parses the UUID string slice to UUID pointer slice.
|
|
func ParseUUIDSliceToPointer(ids []string) []*uuid.UUID {
|
|
var result []*uuid.UUID
|
|
for _, v := range ids {
|
|
p, err := uuid.FromString(v)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
result = append(result, &p)
|
|
}
|
|
return result
|
|
}
|
|
|
|
// ParseUUIDStringToPointer parses UUID string to UUID pointer.
|
|
func ParseUUIDStringToPointer(id *string) *uuid.UUID {
|
|
if id == nil {
|
|
return nil
|
|
}
|
|
|
|
result, err := uuid.FromString(*id)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return &result
|
|
}
|
|
|
|
func UserInviteCode(id int64) string {
|
|
return "u" + random.EncodeBase62(id+time.Now().UnixMilli())
|
|
}
|
|
|
|
func AffiliateInviteCode(id int64) string {
|
|
return "A" + random.EncodeBase62(id)
|
|
}
|
|
|
|
func SubscribeToken(orderNo string) string {
|
|
hash := sha256.Sum256([]byte(orderNo))
|
|
return hex.EncodeToString(hash[:16])
|
|
}
|
|
|
|
func UUIDToBase64(uuid string, length int) string {
|
|
// 截取 uuid 的前 length 个字符
|
|
if length > len(uuid) {
|
|
length = len(uuid)
|
|
}
|
|
shortUUID := uuid[:length]
|
|
|
|
// 对截取的字符串进行 Base64 编码
|
|
encoded := base64.StdEncoding.EncodeToString([]byte(shortUUID))
|
|
|
|
return encoded
|
|
}
|