100 lines
2.8 KiB
Go
100 lines
2.8 KiB
Go
|
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
|
|||
|
}
|