package utils import ( "bytes" "context" "fmt" "github.com/gogf/gf/v2/frame/g" "log" "math/rand" "os" "os/exec" "strconv" "tyj_admin/internal/model/entity" ) // int func RandInt(min int, max int) int { return min + rand.Intn(max-min) } // int func RandInt32(min int32, max int32) int32 { return min + rand.Int31n(max-min) } // float func RandomFloat(min, max int) float64 { if max == min { return float64(max) } return decimal(rand.Float64()*(float64(max)-float64(min)) + float64(min)) } func decimal(v float64) float64 { val, _ := strconv.ParseFloat(fmt.Sprintf("%.3f", v), 64) return val } func RandomByWeight(weights []int32) int32 { if len(weights) == 0 { return -1 } if len(weights) == 1 { return 0 } var sum int32 = 0 for _, v := range weights { sum += v } numberRand := rand.Int31n(sum) var sumTemp int32 = 0 for k, v := range weights { sumTemp += v if numberRand <= sumTemp { return int32(k) } } return -1 } func RandomByWeightInt(weights []int32) int { if len(weights) == 0 { return -1 } if len(weights) == 1 { return 0 } var sum int32 = 0 for _, v := range weights { sum += v } numberRand := rand.Int31n(sum) var sumTemp int32 = 0 for k, v := range weights { sumTemp += v if numberRand <= sumTemp { return k } } return -1 } func ContainsGeneric(slice []interface{}, element interface{}) bool { for _, e := range slice { if e == element { return true } } return false } func ContainsString(slice []string, element string) bool { for _, e := range slice { if e == element { return true } } return false } func DeleteSlice1(a []string, elem string) []string { for i := 0; i < len(a); i++ { if a[i] == elem { a = append(a[:i], a[i+1:]...) i-- } } return a } func TopIpWhiteList(ip string) bool { ipList := [1]string{"192.168.2.115"} for _, v := range ipList { if v == ip { return true } } return false } func ContainsWhiteList(slice []*entity.GameWhiteList, element string) bool { for _, e := range slice { if e.Ip == element { return true } } return false } func ContainsBlackList(slice []*entity.GameBlackList, element string) bool { for _, e := range slice { if e.Ip == element { return true } } return false } func Check(e error) { if e != nil { panic(e) } } /** * 判断文件是否存在 存在返回 true 不存在返回false */ func CheckFileIsExist(filename string) bool { var exist = true if _, err := os.Stat(filename); os.IsNotExist(err) { exist = false } return exist } func CmdCommand(ctx context.Context, name string, args ...string) (err error) { err = g.Try(ctx, func(ctx context.Context) { cmd := exec.Command(name, args...) var stdout, stderr bytes.Buffer cmd.Stdout = &stdout // 标准输出 cmd.Stderr = &stderr // 标准错误 err = cmd.Run() if err != nil { log.Printf("cmd.Run() failed with %s\n", err) return } outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes()) fmt.Printf("out:\n%s\nerr:\n%s\n", outStr, errStr) }) return }