Kaynağa Gözat

新增uuid和随机,升级到1.17

dcsunny 3 yıl önce
ebeveyn
işleme
ddcc4f2a5e
11 değiştirilmiş dosya ile 119 ekleme ve 57 silme
  1. 1 1
      common/jwe.go
  2. 1 1
      common/jwt.go
  3. 1 1
      common/mwt.go
  4. 1 1
      common/page.go
  5. 77 0
      common/random.go
  6. 0 9
      common/token_user.go
  7. 15 0
      common/uuid.go
  8. 21 2
      go.mod
  9. 1 12
      go.sum
  10. 1 1
      http/handle.go
  11. 0 29
      http/reply/reply.go

+ 1 - 1
common/jwe.go

@@ -28,7 +28,7 @@ const (
 	jweHeader = "eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0"
 )
 
-//返回值 第一个private key,第二个是public key
+//GenerateRsaKey 返回值 第一个private key,第二个是public key
 func GenerateRsaKey() ([]byte, []byte, error) {
 	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
 	if err != nil {

+ 1 - 1
common/jwt.go

@@ -8,7 +8,7 @@ import (
 	jwtgo "github.com/dgrijalva/jwt-go"
 )
 
-// secret:加密秘钥
+//JWT secret:加密秘钥
 // expire:过期时间,单位为秒
 type JWT struct {
 	secret []byte

+ 1 - 1
common/mwt.go

@@ -8,7 +8,7 @@ import (
 	"github.com/dcsunny/mwt"
 )
 
-// secret:加密秘钥
+//MWT secret:加密秘钥
 // expire:过期时间,单位为秒
 type MWT struct {
 	secret []byte

+ 1 - 1
common/page.go

@@ -7,7 +7,7 @@ type PageParams struct {
 	Last     bool  `protobuf:"varint,4,opt,name=last,proto3" json:"last"`
 }
 
-//从0开始的分页
+//GetPageParams 从0开始的分页
 func (this *PageParams) GetPageParams() (limit int, offset int) {
 	_offset := this.Page * this.PageSize
 	if this.Total <= this.PageSize {

+ 77 - 0
common/random.go

@@ -0,0 +1,77 @@
+package common
+
+import (
+	"errors"
+	"math/rand"
+	"time"
+)
+
+const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+const (
+	letterIdxBits = 6                    // 6 bits to represent a letter index
+	letterIdxMask = 1<<letterIdxBits - 1 // All 1-bits, as many as letterIdxBits
+	letterIdxMax  = 63 / letterIdxBits   // # of letter indices fitting in 63 bits
+)
+
+func GenRandomString(n int) string {
+	rand.Seed(time.Now().UnixNano())
+	var src = rand.NewSource(time.Now().UnixNano())
+
+	b := make([]byte, n)
+	// A src.Int63() generates 63 random bits, enough for letterIdxMax characters!
+	for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
+		if remain == 0 {
+			cache, remain = src.Int63(), letterIdxMax
+		}
+		if idx := int(cache & letterIdxMask); idx < len(letterBytes) {
+			b[i] = letterBytes[idx]
+			i--
+		}
+		cache >>= letterIdxBits
+		remain--
+	}
+
+	return string(b)
+
+}
+
+func RandomStrArr(arr []string, length int) error {
+	rand.Seed(time.Now().UnixNano())
+	if len(arr) <= 0 {
+		return errors.New("the length of the parameter strings should not be less than 0")
+	}
+
+	if length <= 0 || len(arr) < length {
+		return errors.New("the size of the parameter length illegal")
+	}
+
+	for i := len(arr) - 1; i > 0; i-- {
+		num := rand.Intn(i + 1)
+		arr[i], arr[num] = arr[num], arr[i]
+	}
+	return nil
+}
+
+func GetRandNumber(num int) int {
+	rand.Seed(time.Now().UnixNano())
+	if num == 0 {
+		return 0
+	}
+	res := rand.Intn(num)
+	if res < 0 {
+		return -res
+	}
+	return res
+}
+
+func GetRandNumberInt64(num int64) int64 {
+	rand.Seed(time.Now().UnixNano())
+	if num == 0 {
+		return 0
+	}
+	res := rand.Int63n(num)
+	if res < 0 {
+		return -res
+	}
+	return res
+}

+ 0 - 9
common/token_user.go

@@ -1,9 +0,0 @@
-package common
-
-type TokenUser struct {
-	ID       int64  `json:"id"`
-	Nickname string `json:"name"`
-	Avatar   string `json:"avatar"`
-	OpenID   string `json:"openid"`
-	UnionID  string `json:"unionid"`
-}

+ 15 - 0
common/uuid.go

@@ -0,0 +1,15 @@
+package common
+
+import (
+	"strings"
+
+	"github.com/google/uuid"
+)
+
+func GetUUID() string {
+	return uuid.New().String()
+}
+
+func GetUUIDNoDash() string {
+	return strings.Replace(uuid.New().String(), "-", "", -1)
+}

+ 21 - 2
go.mod

@@ -1,6 +1,6 @@
 module git.ikuban.com/server/kratos-utils
 
-go 1.16
+go 1.17
 
 require (
 	git.ikuban.com/server/json v0.0.0-20210408053838-50ac5ceda83a
@@ -9,10 +9,29 @@ require (
 	github.com/dgrijalva/jwt-go v3.2.0+incompatible
 	github.com/go-kratos/kratos/v2 v2.1.1
 	github.com/go-resty/resty/v2 v2.3.0
+	github.com/google/uuid v1.3.0
 	github.com/lestrrat-go/jwx v1.1.5
 	github.com/vmihailenco/msgpack/v5 v5.3.0
-	golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect
 	google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67
 	google.golang.org/grpc v1.39.1
 	google.golang.org/protobuf v1.27.1
 )
+
+require (
+	github.com/decred/dcrd/dcrec/secp256k1/v3 v3.0.0 // indirect
+	github.com/go-playground/form/v4 v4.2.0 // indirect
+	github.com/goccy/go-json v0.4.7 // indirect
+	github.com/golang/protobuf v1.5.2 // indirect
+	github.com/lestrrat-go/backoff/v2 v2.0.7 // indirect
+	github.com/lestrrat-go/httpcc v1.0.0 // indirect
+	github.com/lestrrat-go/iter v1.0.0 // indirect
+	github.com/lestrrat-go/option v1.0.0 // indirect
+	github.com/lestrrat-go/pdebug/v3 v3.0.1 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.1 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
+	golang.org/x/crypto v0.0.0-20201217014255-9d1352758620 // indirect
+	golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect
+	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
+)

+ 1 - 12
go.sum

@@ -31,10 +31,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/go-kratos/aegis v0.1.1/go.mod h1:jYeSQ3Gesba478zEnujOiG5QdsyF3Xk/8owFUeKcHxw=
-github.com/go-kratos/kratos/v2 v2.0.5 h1:PiXoXLNs8CsCdTtYIS8NQQQp1ZVwE2o/gKJlkAbBjfs=
-github.com/go-kratos/kratos/v2 v2.0.5/go.mod h1:pl/qF1XBL9qQfu7+kEVV+Cg7Zx1u8jIiWxVpaLx6X5k=
-github.com/go-kratos/kratos/v2 v2.1.0 h1:mVA98n5zyAvOORts3NOFRMP5VMNB1Hff8kVTybgawgw=
-github.com/go-kratos/kratos/v2 v2.1.0/go.mod h1:aJv7++0gDtfncp+2e3Ae32ElyFd77WS+pdXCRTSFll0=
 github.com/go-kratos/kratos/v2 v2.1.1 h1:1LDk5giwnlnxr7Jy8oJZyhgFlLlB1VtuoZxc+rs01tI=
 github.com/go-kratos/kratos/v2 v2.1.1/go.mod h1:aJv7++0gDtfncp+2e3Ae32ElyFd77WS+pdXCRTSFll0=
 github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
@@ -118,13 +114,8 @@ github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAh
 github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-go.opentelemetry.io/otel v1.0.0-RC2 h1:SHhxSjB+omnGZPgGlKe+QMp3MyazcOHdQ8qwo89oKbg=
-go.opentelemetry.io/otel v1.0.0-RC2/go.mod h1:w1thVQ7qbAy8MHb0IFj8a5Q2QU0l2ksf8u/CN8m3NOM=
 go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg=
-go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jzsWBZYA2P5jpEw=
 go.opentelemetry.io/otel/sdk v1.0.0/go.mod h1:PCrDHlSy5x1kjezSdL37PhbFUMjrsLRshJ2zCzeXwbM=
-go.opentelemetry.io/otel/trace v1.0.0-RC2 h1:dunAP0qDULMIT82atj34m5RgvsIK6LcsXf1c/MsYg1w=
-go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4=
 go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -162,7 +153,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -177,8 +167,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 h1:siQdpVirKtzPhKl3lZWozZraCFObP8S1v6PRp0bLrtU=
-golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71 h1:ikCpsnYR+Ew0vu99XlDp55lGgDJdIMx3f4a18jfse/s=
 golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=

+ 1 - 1
http/handle.go

@@ -22,7 +22,7 @@ import (
 	_ "github.com/go-kratos/kratos/v2/encoding/proto"
 )
 
-// decodeRequest decodes the request body to object.
+//DecodeRequest  decodeRequest decodes the request body to object.
 func DecodeRequest(req *http.Request, v interface{}) error {
 	method := strings.ToUpper(req.Method)
 	if method == "POST" || method == "PUT" || method == "DELETE" {

+ 0 - 29
http/reply/reply.go

@@ -5,32 +5,3 @@ type SuccessReply struct {
 	Message string      `json:"message"`
 	Data    interface{} `json:"data"`
 }
-
-//func SetContentType(w http.ResponseWriter, contentType string) {
-//	if contentType == "" {
-//		return
-//	}
-//	w.Header().Set("Content-Type", contentType)
-//}
-//
-//func ErrorReturn(err error, w http.ResponseWriter, r *http.Request, h http2.HandleOptions) {
-//	errStatus := errors.FromError(err)
-//	if errStatus != nil {
-//		if errStatus.Reason != "" {
-//			fail := &SuccessReply{
-//				Code:    errStatus.GRPCStatus().Proto().Code,
-//				Message: errStatus.GRPCStatus().Message(),
-//			}
-//			var obj interface{}
-//			json.Unmarshal([]byte(errors.Reason(err)), &obj)
-//			fail.Data = obj
-//			w.WriteHeader(400)
-//			if err = h.Encode(w, r, fail); err != nil {
-//				h.Error(w, r, err)
-//			}
-//			return
-//		}
-//	}
-//	h.Error(w, r, err)
-//	return
-//}