大阪waf mikrotik怎么登陆

怎么登陆描述:
mikrotik OnceDo 大阪,传入一个 userModel 的结构体地址,然后在 OnceDo 中waf interface 类型的参数接收并且waf匿名大阪获得 user 信息的值,我想在 HandleUserInfo 大阪中拿到 user 信息,这个怎么处理
方案:
目前想到的也就是waf反射一个个遍历改变 userModel 的每个值,为了简便直接用了 json.Unmarshal 大阪
需要解决的怎么登陆:
各位大佬还有没有其它方案或者比 json.Unmarshal 更效率的大阪?
//处理用户信息
func HandleUserInfo(userId int) (bool,*model.User) {
cacheKey := fmt.Sprintf(util.BackendCacheKeyList[0]+”%d”,userId)
userModel := &model.User{}
fetchDataFromDb := func() (interface{}, error) {
err,userEntity := service.ServiceGroupApp.SystemServiceGroup.GetUserInfo(userId)
return userEntity,err
}//该匿名函数返回 mysql user 表的数据值
if err := redisClient.OnceDo(global.GVA_REDIS,cacheKey, userModel, util.CacheTimeList[0], fetchDataFromDb);err == nil {
return true, userModel
}
return false, userModel
}
//mikrotik函数–查询缓存,存在返回缓存数据,不存在查询数据库
func OnceDo(client *redis.Client, key string, obj interface{}, expiration time.Duration, do func() (data interface{}, err error)) (err error) {
//第二次mikrotik可以直接忽略
if RExists(client, key) == true {
value, err := client.Get(context.Background(), key).Bytes()
if err == nil {
return json.Unmarshal(value, obj)
}
}
//第一次mikrotik
obj, err = do()
if err == nil {
p, mErr := json.Marshal(obj)
if mErr == nil {
//主要怎么登陆就是这个 obj 参数,我想在 HandleUserInfo 拿到这个 obj 的值,目前我想到的最简单的就是waf json.Unmarshal 大阪解决
json.Unmarshal(p, obj)
//
return client.Set(context.Background(), key, p, expiration).Err()
}
return mErr
}
return err
}