You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.5 KiB
105 lines
2.5 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"go-common/app/interface/live/app-room/model" |
|
"go-common/app/service/live/userext/api/liverpc/v0" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"strconv" |
|
) |
|
|
|
//GetUserConf 获取用户配置 |
|
func (d *Dao) GetUserConf(c context.Context, mid int64, targetId int64, keys []int64) (values model.ConfValues, err error) { |
|
req := &v0.ConfGetReq{ |
|
Uid: mid, |
|
TargetId: targetId, |
|
Type: keys, |
|
} |
|
resp, err := d.UserExtAPI.V0Conf.Get(c, req) |
|
if err != nil { |
|
log.Error("call getUserConf sys error %v", err.Error()) |
|
return |
|
} |
|
if resp.Code != 0 { |
|
log.Error("call getUserConf failed %d %v", resp.Code, resp.Msg) |
|
err = ecode.ParamInvalid |
|
return |
|
} |
|
o := resp.Data |
|
values = make(map[int64]string, len(o)) |
|
for i, v := range o { |
|
s, e := strconv.ParseInt(i, 10, 64) |
|
if e != nil { |
|
log.Error("call getUserConf string2int64 failed %v", e.Error()) |
|
err = e |
|
return |
|
} |
|
values[s] = v |
|
} |
|
return |
|
} |
|
|
|
//AsyncSetUserConf 异步设置用户一个配置 "存在" |
|
func (d *Dao) AsyncSetUserConf(c context.Context, mid int64, targetId int64, key int64) (err error) { |
|
value := model.Set |
|
vs := make(map[int64]string, 1) |
|
vs[key] = value |
|
err = d.giftCache.Save(func() { |
|
d.SetMoreUserConf(context.Background(), mid, targetId, vs) |
|
}) |
|
if err != nil { |
|
err = d.SetMoreUserConf(c, mid, targetId, vs) |
|
} |
|
return |
|
} |
|
|
|
//SetUserConf 设置用户一个配置 "存在" |
|
func (d *Dao) SetUserConf(c context.Context, mid int64, targetId int64, key int64) (err error) { |
|
value := model.Set |
|
vs := make(map[int64]string, 1) |
|
vs[key] = value |
|
err = d.SetMoreUserConf(c, mid, targetId, vs) |
|
return |
|
} |
|
|
|
//DelUserConf 删除用户一个配置 "不存在" |
|
func (d *Dao) DelUserConf(c context.Context, mid int64, targetId int64, key int64) (err error) { |
|
value := model.Empty |
|
vs := make(map[int64]string, 1) |
|
vs[key] = value |
|
err = d.SetMoreUserConf(c, mid, targetId, vs) |
|
return |
|
} |
|
|
|
//SetMoreUserConf 设置用户多个配置 |
|
func (d *Dao) SetMoreUserConf(c context.Context, mid int64, targetId int64, values map[int64]string) (err error) { |
|
varList := make([]*v0.ConfSetReq_Var, len(values)) |
|
|
|
ic := 0 |
|
for k, v := range values { |
|
rv := &v0.ConfSetReq_Var{ |
|
Uid: mid, |
|
TargetId: targetId, |
|
Type: k, |
|
Content: v, |
|
} |
|
varList[ic] = rv |
|
ic++ |
|
} |
|
|
|
req := &v0.ConfSetReq{ |
|
VarList: varList, |
|
} |
|
r, err := d.UserExtAPI.V0Conf.Set(c, req) |
|
if err != nil { |
|
log.Error("call setUserConf sys error %v", err.Error()) |
|
return |
|
} |
|
if r.Code != 0 { |
|
log.Error("call setUserConf failed %d %v", r.Code, r.Msg) |
|
err = ecode.ParamInvalid |
|
return |
|
} |
|
return |
|
}
|
|
|