go-common/app/interface/live/app-room/dao/userext.go
2019-04-22 18:49:16 +08:00

106 lines
2.5 KiB
Go

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
}