| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- package models
- import (
- "bytes"
- "crypto/md5"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "math/rand"
- "net/http"
- "strconv"
- "strings"
- "time"
- )
- // 10位时间戳时间格式化
- func UnixToDate(timestamp int) string {
- t := time.Unix(int64(timestamp), 0)
- return t.Format("2006-01-02 15:04:05")
- }
- // 2006-01-02 15:04:05转换成10位时间戳
- func DateToUnix(str string) int64 {
- template := "2006-01-02 15:04:05"
- t, err := time.ParseInLocation(template, str, time.Local)
- if err != nil {
- fmt.Println(err)
- return 0
- }
- return t.Unix()
- }
- // 10位时间戳
- func GetUnixTimestamp() int64 {
- return time.Now().Unix()
- }
- // 13位时间戳
- func GetUnixNano() int64 {
- return time.Now().UnixNano() / 1e6
- }
- // 2006-01-02 15:04:05
- func GetDate() string {
- template := "2006-01-02 15:04:05"
- return time.Now().Format(template)
- }
- // 一分钟后
- func AfterOne() string {
- now := time.Now()
- t, _ := time.ParseDuration("1m")
- t1 := now.Add(t).Format("20060102150405")
- return t1
- }
- // Md5加密
- func Md5(str string) string {
- m := md5.New()
- m.Write([]byte(str))
- return string(hex.EncodeToString(m.Sum(nil)))
- }
- // 邀请码生成
- const (
- BASE = "E8S2DZX9WYLTN6BQF7CP5IK3MJUAR4HV"
- DECIMAL = 32
- PAD = "A"
- LEN = 8
- )
- func Encode(uid uint64) string {
- id := uid
- mod := uint64(0)
- res := ""
- for id != 0 {
- mod = id % DECIMAL
- id = id / DECIMAL
- res += string(BASE[mod])
- }
- resLen := len(res)
- if resLen < LEN {
- res += PAD
- for i := 0; i < LEN-resLen-1; i++ {
- res += string(BASE[(int(uid)+i)%DECIMAL])
- }
- }
- return res
- }
- // 封装一个生产随机数的方法
- func GetRandomNum() string {
- var str string
- for i := 0; i < 6; i++ {
- current := rand.Intn(10) //0-9 "math/rand"
- str += strconv.Itoa(current)
- }
- return str
- }
- // 发送GET请求
- // url:请求地址
- // response:请求返回的内容
- func Get(url string) (response string) {
- client := http.Client{Timeout: 5 * time.Second}
- resp, error := client.Get(url)
- defer resp.Body.Close()
- if error != nil {
- panic(error)
- }
- var buffer [512]byte
- result := bytes.NewBuffer(nil)
- for {
- n, err := resp.Body.Read(buffer[0:])
- result.Write(buffer[0:n])
- if err != nil && err == io.EOF {
- break
- } else if err != nil {
- panic(err)
- }
- }
- response = result.String()
- return
- }
- // post请求封装
- func Post(url string, data interface{}, contentType string) (content string) {
- jsonStr, _ := json.Marshal(data)
- req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
- req.Header.Add("content-type", contentType)
- if err != nil {
- panic(err)
- }
- defer req.Body.Close()
- client := &http.Client{Timeout: 5 * time.Second}
- resp, error := client.Do(req)
- if error != nil {
- panic(error)
- }
- defer resp.Body.Close()
- result, _ := ioutil.ReadAll(resp.Body)
- content = string(result)
- return
- }
- // 生成随机字符串
- func GetRandomString(length int) string {
- str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- bytes := []byte(str)
- result := []byte{}
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- for i := 0; i < length; i++ {
- result = append(result, bytes[r.Intn(len(bytes))])
- }
- return string(result)
- }
- // 生成随机6位数
- 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)])
- }
- return sb.String()
- }
- // 去重
- func Unique(s []string) []string {
- m := make(map[string]struct{}, 0)
- newS := make([]string, 0)
- for _, i2 := range s {
- if _, ok := m[i2]; !ok {
- newS = append(newS, i2)
- m[i2] = struct{}{}
- }
- }
- return newS
- }
|