go-common/app/interface/bbq/app-bbq/dao/user.go

100 lines
2.8 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package dao
import (
"context"
"go-common/app/interface/bbq/app-bbq/api/http/v1"
"go-common/app/interface/bbq/app-bbq/model"
user "go-common/app/service/bbq/user/api"
accountv1 "go-common/app/service/main/account/api"
"go-common/library/ecode"
"go-common/library/log"
)
//GetUserBProfile 获取用户全量b站信息
func (d *Dao) GetUserBProfile(c context.Context, mid int64) (res *accountv1.ProfileReply, err error) {
req := &accountv1.MidReq{
Mid: mid,
RealIp: "",
}
res, err = d.accountClient.Profile3(c, req)
return
}
// Login .
func (d *Dao) Login(c context.Context, userBase *user.UserBase) (res *user.UserBase, err error) {
res, err = d.userClient.Login(c, userBase)
if err != nil {
log.Errorv(c, log.KV("log", "login fail"))
}
return
}
// BatchUserInfo 提供批量获取UserInfo的方法
// 由于user service返回的结构和video的回包不同因此这里进行映射返回video-c的结构避免外部使用方多次映射
func (d *Dao) BatchUserInfo(c context.Context, visitorMID int64, MIDs []int64, needDesc, needStat, needFollowState bool) (res map[int64]*v1.UserInfo, err error) {
res = make(map[int64]*v1.UserInfo)
if len(MIDs) == 0 {
return
}
if len(MIDs) > model.BatchUserLen {
err = ecode.BatchUserTooLong
return
}
userReq := &user.ListUserInfoReq{Mid: visitorMID, UpMid: MIDs, NeedDesc: needDesc, NeedStat: needStat, NeedFollowState: needFollowState}
reply, err := d.userClient.ListUserInfo(c, userReq)
if err != nil {
log.Errorv(c, log.KV("log", "get user info fail: req=%s"+userReq.String()))
return
}
for _, userInfo := range reply.List {
newUserInfo := &v1.UserInfo{UserBase: *userInfo.UserBase}
if userInfo.UserStat != nil {
newUserInfo.UserStat = *userInfo.UserStat
}
newUserInfo.FollowState = userInfo.FollowState
res[userInfo.UserBase.Mid] = newUserInfo
}
return
}
//JustGetUserBase 只取UserBase不要其他
func (d *Dao) JustGetUserBase(c context.Context, mids []int64) (res map[int64]*user.UserBase, err error) {
res = make(map[int64]*user.UserBase)
userInfos, err := d.BatchUserInfo(c, 0, mids, false, false, false)
if err != nil {
log.Warnv(c, log.KV("log", "get user info fail"))
return
}
for mid, userInfo := range userInfos {
res[mid] = &userInfo.UserBase
}
return
}
// EditUserBase .
func (d *Dao) EditUserBase(c context.Context, userBase *user.UserBase) (err error) {
_, err = d.userClient.UserEdit(c, userBase)
if err != nil {
log.Warnw(c, "log", "edit user base fail: req="+userBase.String(), "err", err.Error())
return
}
return
}
// PhoneCheck .
func (d *Dao) PhoneCheck(c context.Context, mid int64) (telStatus int32, err error) {
req := &user.PhoneCheckReq{Mid: mid}
res, err := d.userClient.PhoneCheck(c, req)
if err != nil {
log.Errorw(c, "log", "call phone check fail", "err", err, "mid", mid)
return
}
telStatus = res.TelStatus
return
}