110 lines
2.4 KiB
Go
110 lines
2.4 KiB
Go
|
|
package utils
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"crypto/md5"
|
|||
|
|
"fmt"
|
|||
|
|
"math/rand"
|
|||
|
|
"strconv"
|
|||
|
|
"time"
|
|||
|
|
|
|||
|
|
"github.com/google/uuid"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
func BoolToInt32(value bool) int32 {
|
|||
|
|
if value {
|
|||
|
|
return 1
|
|||
|
|
}
|
|||
|
|
return 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Int32ToBool convert int32 to bool
|
|||
|
|
func Int32ToBool(value int32) bool {
|
|||
|
|
return value == 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ChangColumnIndexToAxis 将列索引转换为Excel列坐标
|
|||
|
|
func ChangColumnIndexToAxis(intIndexX, intIndexY int) string {
|
|||
|
|
var arr = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN"}
|
|||
|
|
intIndexY = intIndexY + 1
|
|||
|
|
resultY := ""
|
|||
|
|
coloumnTotal := len(arr)
|
|||
|
|
for {
|
|||
|
|
if intIndexY <= coloumnTotal {
|
|||
|
|
resultY = resultY + arr[intIndexY-1]
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
mo := intIndexY % coloumnTotal
|
|||
|
|
resultY = arr[mo-1] + resultY
|
|||
|
|
|
|||
|
|
shang := intIndexY / coloumnTotal
|
|||
|
|
if shang <= coloumnTotal {
|
|||
|
|
resultY = arr[shang-1] + resultY
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
intIndexY = shang
|
|||
|
|
}
|
|||
|
|
return resultY + strconv.Itoa(intIndexX)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func IsDiffDay(last, now int64) bool {
|
|||
|
|
lastYear, lastMonth, lastDay := time.Unix(last, 0).Date()
|
|||
|
|
nowYear, nowMonth, nowDay := time.Unix(now, 0).Date()
|
|||
|
|
if lastDay != nowDay || lastMonth != nowMonth || lastYear != nowYear {
|
|||
|
|
return true
|
|||
|
|
}
|
|||
|
|
return false
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func RandInterval(b1, b2 int32) int32 {
|
|||
|
|
if b1 == b2 {
|
|||
|
|
return b1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
min, max := int64(b1), int64(b2)
|
|||
|
|
if min > max {
|
|||
|
|
min, max = max, min
|
|||
|
|
}
|
|||
|
|
return int32(rand.Int63n(max-min+1) + min)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取utc时间t的days前(负数)或者后(正数)个的0点前时间
|
|||
|
|
func ZeroDays(t int64, days int) int64 {
|
|||
|
|
// t += int64(days-1) * 86400
|
|||
|
|
t += int64(days) * 86400
|
|||
|
|
year, month, day := time.Unix(t, 0).Date()
|
|||
|
|
date := time.Date(year, month, day, 23, 59, 59, 0, time.Local)
|
|||
|
|
return date.Unix()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func GetDateNum() uint32 {
|
|||
|
|
date, _ := strconv.Atoi(time.Now().Format("20060102"))
|
|||
|
|
return uint32(date)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func GetDateNum2(t int64) uint32 {
|
|||
|
|
date, _ := strconv.Atoi(time.Unix(t, 0).Format("20060102"))
|
|||
|
|
return uint32(date)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 根据固定的字符串生成uuid
|
|||
|
|
func GenerateUUID(specificString string) string {
|
|||
|
|
hash := md5.Sum([]byte(specificString))
|
|||
|
|
|
|||
|
|
uniqueUUID := fmt.Sprintf("%x", hash)
|
|||
|
|
parsedUUID, err := uuid.Parse(uniqueUUID)
|
|||
|
|
if err != nil {
|
|||
|
|
return "invalid UUID"
|
|||
|
|
}
|
|||
|
|
return parsedUUID.String()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// InSlice 判断字符串是否在切片中
|
|||
|
|
func InSlice(str string, slice []string) bool {
|
|||
|
|
for _, v := range slice {
|
|||
|
|
if v == str {
|
|||
|
|
return true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false
|
|||
|
|
}
|