From f8711c8e21c2deb64c5d3248fb39b08838a12dcd Mon Sep 17 00:00:00 2001 From: PandaX-Go Date: Thu, 8 Aug 2024 21:34:37 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E7=94=9F=E6=88=90ID=E9=A6=96=E4=BD=8D?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E4=B8=BA=E5=AD=97=E6=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/device/api/device.go | 2 +- apps/device/api/product.go | 2 +- kit/utils/str_utils.go | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/apps/device/api/device.go b/apps/device/api/device.go index b4bcda3..4c4861e 100644 --- a/apps/device/api/device.go +++ b/apps/device/api/device.go @@ -186,7 +186,7 @@ func (p *DeviceApi) InsertDevice(rc *restfulx.ReqCtx) { data.OrgId = rc.LoginAccount.OrganizationId list, _ := p.DeviceApp.FindList(entity.Device{Name: data.Name}) biz.IsTrue(!(list != nil && len(*list) > 0), fmt.Sprintf("名称%s已存在,设置其他命名", data.Name)) - data.Id = utils.GenerateID() + data.Id = utils.GenerateTdID("d") data.LinkStatus = global.INACTIVE data.LastAt = time.Now() data.Protocol = product.ProtocolName diff --git a/apps/device/api/product.go b/apps/device/api/product.go index ba90499..568494e 100644 --- a/apps/device/api/product.go +++ b/apps/device/api/product.go @@ -107,7 +107,7 @@ func (p *ProductApi) GetProduct(rc *restfulx.ReqCtx) { func (p *ProductApi) InsertProduct(rc *restfulx.ReqCtx) { var data entity.Product restfulx.BindJsonAndValid(rc, &data) - data.Id = utils.GenerateID() + data.Id = utils.GenerateTdID("p") data.Owner = rc.LoginAccount.UserName data.OrgId = rc.LoginAccount.OrganizationId // 如果未设置规则链,默认为主链 diff --git a/kit/utils/str_utils.go b/kit/utils/str_utils.go index 174a9db..1a5e849 100644 --- a/kit/utils/str_utils.go +++ b/kit/utils/str_utils.go @@ -167,3 +167,35 @@ func GenerateID() string { } return base64.URLEncoding.EncodeToString(id)[:10] } + +const ( + letterBytes = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +) + +func RandString(n int) string { + rand.Seed(time.Now().UnixNano()) + output := make([]byte, n) + // We will take n bytes, one byte for each character of output. + randomness := make([]byte, n) + // read all random + _, err := rand.Read(randomness) + if err != nil { + panic(err) + } + l := len(letterBytes) + // fill output + for pos := range output { + // get random item + random := randomness[pos] + // random % 64 + randomPos := random % uint8(l) + // put into output + output[pos] = letterBytes[randomPos] + } + + return string(output) +} + +func GenerateTdID(px string) string { + return px + RandString(9) +}