|
@@ -5,11 +5,11 @@ import (
|
|
entity "bp.jydev.jianyu360.cn/BaseService/biService/entity"
|
|
entity "bp.jydev.jianyu360.cn/BaseService/biService/entity"
|
|
"bp.jydev.jianyu360.cn/BaseService/biService/rpc/pb"
|
|
"bp.jydev.jianyu360.cn/BaseService/biService/rpc/pb"
|
|
"crypto/rand"
|
|
"crypto/rand"
|
|
- "encoding/binary"
|
|
|
|
"errors"
|
|
"errors"
|
|
"fmt"
|
|
"fmt"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"log"
|
|
"log"
|
|
|
|
+ "math/big"
|
|
"net/url"
|
|
"net/url"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -92,7 +92,7 @@ func PersonImgSaveComposite(fileUrl, qrcodeUrl, name string) ([]byte, error) {
|
|
code = gconv.String((*data)["code"])
|
|
code = gconv.String((*data)["code"])
|
|
} else {
|
|
} else {
|
|
//没有code,生成一个
|
|
//没有code,生成一个
|
|
- code = GenerateUniqueRandomString(6)
|
|
|
|
|
|
+ code = generateRandomString(6)
|
|
entity.JyBiTidb.Insert("dwd_d_userbase_belongto_rulecode", map[string]interface{}{
|
|
entity.JyBiTidb.Insert("dwd_d_userbase_belongto_rulecode", map[string]interface{}{
|
|
"code": code,
|
|
"code": code,
|
|
"pcode": "04",
|
|
"pcode": "04",
|
|
@@ -120,34 +120,15 @@ func PersonImgSaveComposite(fileUrl, qrcodeUrl, name string) ([]byte, error) {
|
|
return imgByte, err
|
|
return imgByte, err
|
|
}
|
|
}
|
|
|
|
|
|
-func GenerateUniqueRandomString(length int) string {
|
|
|
|
- // 获取当前时间(纳秒级)
|
|
|
|
- now := time.Now().UnixNano()
|
|
|
|
-
|
|
|
|
- // 生成随机数
|
|
|
|
- var randNum uint64
|
|
|
|
- if err := binary.Read(rand.Reader, binary.BigEndian, &randNum); err != nil {
|
|
|
|
- randNum = uint64(now)
|
|
|
|
|
|
+func generateRandomString(length int) string {
|
|
|
|
+ const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
|
|
|
+ b := make([]byte, length)
|
|
|
|
+ for i := range b {
|
|
|
|
+ // 安全地生成随机索引 (0 到 len(charset)-1)
|
|
|
|
+ idx, _ := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
|
|
|
|
+ b[i] = charset[idx.Int64()]
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 组合时间和随机数
|
|
|
|
- uniqueValue := now ^ int64(randNum)
|
|
|
|
-
|
|
|
|
- // 转换为base36字符串(0-9a-z)
|
|
|
|
- charset := "0123456789abcdefghijklmnopqrstuvwxyz"
|
|
|
|
- result := make([]byte, length)
|
|
|
|
- for i := range result {
|
|
|
|
- // 使用模运算选择字符
|
|
|
|
- result[i] = charset[uniqueValue%36]
|
|
|
|
- uniqueValue /= 36
|
|
|
|
-
|
|
|
|
- // 如果值耗尽,重新生成
|
|
|
|
- if uniqueValue == 0 {
|
|
|
|
- uniqueValue = time.Now().UnixNano()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return string(result)
|
|
|
|
|
|
+ return string(b)
|
|
}
|
|
}
|
|
|
|
|
|
func hasAnyParameters(rawURL string) (bool, error) {
|
|
func hasAnyParameters(rawURL string) (bool, error) {
|