init: 1.0.0

This commit is contained in:
Chang lue Tsen
2025-04-25 12:08:29 +09:00
commit 8addcc584b
1031 changed files with 76472 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
package uuidx
import (
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"time"
"github.com/gofrs/uuid/v5"
"github.com/perfect-panel/ppanel-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
}
+98
View File
@@ -0,0 +1,98 @@
// Copyright 2023 The Ryan SU Authors (https://github.com/suyuan32). All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package uuidx
import (
"fmt"
"reflect"
"testing"
"time"
"github.com/perfect-panel/ppanel-server/pkg/random"
"github.com/perfect-panel/ppanel-server/pkg/snowflake"
"github.com/gofrs/uuid/v5"
)
func TestParseUUIDSlice(t *testing.T) {
type args struct {
ids []string
}
tests := []struct {
name string
args args
want []uuid.UUID
}{
{
name: "test1",
args: args{ids: []string{"123"}},
want: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ParseUUIDSlice(tt.args.ids); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ParseUUIDSlice() = %v, want %v", got, tt.want)
}
})
}
}
func TestParseUUIDString(t *testing.T) {
type args struct {
id string
}
tests := []struct {
name string
args args
want uuid.UUID
}{
{
name: "test1",
args: args{id: "123456"},
want: uuid.UUID{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ParseUUIDString(tt.args.id); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ParseUUIDString() = %v, want %v", got, tt.want)
}
})
}
}
func TestT1(t *testing.T) {
valMap := make(map[string]struct{})
num := 100
for i := 0; i < num; i++ {
exCode := random.StrToDashedString(random.EncodeBase62(snowflake.GetID()))
valMap[exCode] = struct{}{}
}
t.Log(len(valMap))
}
func TestAffCode(t *testing.T) {
code := AffiliateInviteCode(time.Now().UnixMilli())
fmt.Println(code)
}
func TestSubscribeMarkCode(t *testing.T) {
orderNo := "20241213222445955"
code := SubscribeToken(orderNo)
fmt.Println(code)
}