代码拉取完成,页面将自动刷新
package token
import (
"encoding/gob"
"go.uber.org/zap"
"sync"
)
type RealId struct {
at updateTime
mu sync.Mutex
ids map[string]string //广告组id 或 个人在公众号的 openid
}
func (rid *RealId) Add(realId []string, id string) {
rid.mu.Lock()
defer rid.mu.Unlock()
for i := range realId {
if len(realId[i]) == 0 {
continue
}
if r, ok := rid.ids[realId[i]]; ok {
zap.L().Warn("Token:RealId is existed", zap.String("id", r))
continue
}
rid.ids[realId[i]] = id
}
rid.at.Update()
}
func (rid *RealId) Get(realId string) (string, bool) {
rid.mu.Lock()
defer rid.mu.Unlock()
if r, ok := rid.ids[realId]; ok {
return r, true
}
return "", false
}
func (rid *RealId) Delete(realId string) bool {
rid.mu.Lock()
defer rid.mu.Unlock()
if _, ok := rid.ids[realId]; ok {
delete(rid.ids, realId)
rid.at.Update()
return true
}
return false
}
func (rid *RealId) load() {
rid.mu.Lock()
defer rid.mu.Unlock()
if err := loadFile(realIdFileName, func(de *gob.Decoder) error {
return de.Decode(&rid.ids)
}); err != nil {
zap.L().Error("Token:RealId", zap.Error(err))
} else {
rid.at.Complete()
}
}
func (rid *RealId) save() {
rid.mu.Lock()
defer rid.mu.Unlock()
if !rid.at.HasUpdate() {
return
}
if err := saveFile(realIdFileName, func(en *gob.Encoder) error {
return en.Encode(rid.ids)
}); err != nil {
zap.L().Error("Token:RealId", zap.Error(err))
} else {
rid.at.Complete()
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。