|
|
|
|
@ -1,107 +0,0 @@
|
|
|
|
|
package utility
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
|
|
|
"reflect"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
数字转成固定长度字符串,并在空缺位置补足固定字符串
|
|
|
|
|
num 数字
|
|
|
|
|
str 空缺替代字符串
|
|
|
|
|
l 长度
|
|
|
|
|
*/
|
|
|
|
|
func SuppLenZero(num int64, str string, l int) string {
|
|
|
|
|
lenStr := gconv.String(num)
|
|
|
|
|
if len(lenStr) == l {
|
|
|
|
|
return lenStr
|
|
|
|
|
}
|
|
|
|
|
if len(lenStr) < l {
|
|
|
|
|
count := l - len(lenStr)
|
|
|
|
|
for i := 0; i < count; i++ {
|
|
|
|
|
lenStr = str + lenStr
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
temp := ""
|
|
|
|
|
for i := 0; i < l; i++ {
|
|
|
|
|
temp += str
|
|
|
|
|
}
|
|
|
|
|
return temp
|
|
|
|
|
}
|
|
|
|
|
return lenStr
|
|
|
|
|
}
|
|
|
|
|
func CheckNum(num int64) int64 {
|
|
|
|
|
if num > 100 {
|
|
|
|
|
return 100
|
|
|
|
|
}
|
|
|
|
|
if num < 0 {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
return num
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
func FormatStringSliceToSQL(s []string) string {
|
|
|
|
|
var builder strings.Builder
|
|
|
|
|
builder.WriteString("(")
|
|
|
|
|
for i, v := range s {
|
|
|
|
|
if i > 0 {
|
|
|
|
|
builder.WriteString(", ")
|
|
|
|
|
}
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
builder.WriteString(v)
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
}
|
|
|
|
|
builder.WriteString(")")
|
|
|
|
|
return builder.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FormatSliceToSQL 接受一个任意类型的切片,并将其格式化为类似 ('a', 'b', 'c') 的字符串
|
|
|
|
|
func FormatSliceToSQL(slice interface{}) (string, error) {
|
|
|
|
|
// 使用反射获取切片的类型信息
|
|
|
|
|
v := reflect.ValueOf(slice)
|
|
|
|
|
if v.Kind() != reflect.Slice {
|
|
|
|
|
return "", fmt.Errorf("input is not a slice")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var builder strings.Builder
|
|
|
|
|
|
|
|
|
|
length := v.Len()
|
|
|
|
|
for i := 0; i < length; i++ {
|
|
|
|
|
if i > 0 {
|
|
|
|
|
builder.WriteString(", ")
|
|
|
|
|
}
|
|
|
|
|
element := v.Index(i).Interface()
|
|
|
|
|
// 根据元素类型进行格式化
|
|
|
|
|
switch element.(type) {
|
|
|
|
|
case string:
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
builder.WriteString(element.(string))
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
case int, int8, int16, int32, int64:
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
builder.WriteString(gconv.String(reflect.ValueOf(element).Int()))
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
case uint, uint8, uint16, uint32, uint64:
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
builder.WriteString(gconv.String(reflect.ValueOf(element).Uint()))
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
case float32, float64:
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
builder.WriteString(gconv.String(reflect.ValueOf(element).Float()))
|
|
|
|
|
builder.WriteString("'")
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return "", fmt.Errorf("unsupported type: %T", element)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return builder.String(), nil
|
|
|
|
|
}
|