package util import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "math/rand" "strconv" "strings" "time" "video-analysis-shop/api/code" ) func ResponseFormat(c *gin.Context, respStatus *code.Code, data interface{}) { if respStatus == nil { respStatus = code.RequestParamError } c.JSON(respStatus.Status, gin.H{ "code": respStatus.Status, "success": respStatus.Success, "msg": respStatus.Message, "data": data, }) return } func GenValidateCode(width int) string { numeric := [10]byte{0,1,2,3,4,5,6,7,8,9} r := len(numeric) rand.Seed(time.Now().UnixNano()) var sb strings.Builder for i := 0; i < width; i++ { fmt.Fprintf(&sb, "%d", numeric[ rand.Intn(r) ]) } str := sb.String() if strings.HasPrefix(str, "0") { pI := RandInt(1,9) str = strconv.Itoa(pI) + str[1:] } return str } const ( KC_RAND_KIND_NUM = 0 // 纯数字 KC_RAND_KIND_LOWER = 1 // 小写字母 KC_RAND_KIND_UPPER = 2 // 大写字母 KC_RAND_KIND_ALL = 3 // 数字、大小写字母 ) // 随机字符串 func Krand(size int, kind int) []byte { ikind, kinds, result := kind, [][]int{[]int{10, 48}, []int{26, 97}, []int{26, 65}}, make([]byte, size) is_all := kind > 2 || kind < 0 rand.Seed(time.Now().UnixNano()) for i :=0; i < size; i++ { if is_all { // random ikind ikind = rand.Intn(3) } scope, base := kinds[ikind][0], kinds[ikind][1] result[i] = uint8(base+rand.Intn(scope)) } return result } //生成区间随机数 func RandInt(min, max int) int { if min >= max || min ==0 ||max == 0 { return max } return rand.Intn(max-min) + min } func Struct2Map(obj interface{}) map[string]interface{} { resultMap := make(map[string]interface{}, 0) bytesData, err := json.Marshal(obj) if err != nil { return resultMap } json.Unmarshal(bytesData, &resultMap) return resultMap }