go-common/app/service/live/live-dm/dao/getDMConf.go
2019-04-22 18:49:16 +08:00

235 lines
5.4 KiB
Go

package dao
import (
"context"
activityService "go-common/app/service/live/activity/api/liverpc/v1"
rankdbService "go-common/app/service/live/rankdb/api/liverpc/v1"
rcService "go-common/app/service/live/rc/api/liverpc/v1"
roomService "go-common/app/service/live/room/api/liverpc/v2"
userextService "go-common/app/service/live/userext/api/liverpc/v1"
acctountService "go-common/app/service/main/account/api"
"go-common/library/log"
"github.com/pkg/errors"
)
//CommentTitle 头衔信息
type CommentTitle struct {
OldTitle string `json:"oldtitle"`
Title string `json:"title"`
}
//GetUnameColor 获取用户的昵称颜色
func (u *UserInfo) GetUnameColor(ctx context.Context, uid int64, rid int64) error {
req := &userextService.ColorGetUnameColorReq{
Uid: uid,
RoomId: rid,
}
resq, err := UserExtServiceClient.V1Color.GetUnameColor(ctx, req)
if err != nil {
if errors.Cause(err) != context.Canceled {
log.Error("DM: UserExt GetUnameColor err: %v", err)
}
u.lock.Lock()
u.UnameColor = ""
u.lock.Unlock()
return nil
}
if resq.Code != 0 {
log.Error("DM: UserExt GetUnameColor errror code: %d", resq.Code)
u.lock.Lock()
u.UnameColor = ""
u.lock.Unlock()
return nil
}
u.lock.Lock()
u.UnameColor = resq.Data.UnameColor
u.lock.Unlock()
return nil
}
//GetSpeicalMedal 获取特殊勋章
func (f *FansMedalInfo) GetSpeicalMedal(ctx context.Context, uid int64, rid int64) error {
//更新special
req := &activityService.UnionFansGetSpecialMedalReq{
Uid: uid,
Ruid: rid,
}
resq, err := ActivityServiceClient.V1UnionFans.GetSpecialMedal(ctx, req)
if err != nil {
if errors.Cause(err) != context.Canceled {
log.Error("DM: GetSpecialMedal err: %v", err)
}
f.lock.Lock()
f.SpecialMedal = ""
f.lock.Unlock()
return nil
}
if resq.Code != 0 {
log.Error("DM: GetSpecialMedal err code: %d", resq.Code)
f.lock.Lock()
f.SpecialMedal = ""
f.lock.Unlock()
return nil
}
f.lock.Lock()
f.SpecialMedal = resq.Data.SpecialMedal
f.lock.Unlock()
return nil
}
//GetUserLevelRank 获取用户等级RANK
func (u *UserInfo) GetUserLevelRank(ctx context.Context, uid int64) error {
defer u.lock.Unlock()
req := &rankdbService.UserRankGetUserRankReq{
Uid: uid,
Type: "user_level",
}
resq, err := RankdbServiceClient.V1UserRank.GetUserRank(ctx, req)
if err != nil {
if errors.Cause(err) != context.Canceled {
log.Error("DM: GetUserRank err: %v", err)
}
u.lock.Lock()
u.ULevelRank = 1000000
return nil
}
if resq.Code != 0 {
log.Error("DM: GetUserRank error code: %d", resq.Code)
u.lock.Lock()
u.ULevelRank = 1000000
return nil
}
u.lock.Lock()
u.ULevelRank = resq.Data.Rank
return nil
}
//GetCommentTitle 获取头衔
func (c *CommentTitle) GetCommentTitle(ctx context.Context) error {
req := &rcService.UserTitleGetCommentTitleReq{}
resq, err := RcServiceClient.V1UserTitle.GetCommentTitle(ctx, req)
if err != nil {
if errors.Cause(err) != context.Canceled {
log.Error("DM: GetCommentTitle err: %v", err)
}
c.OldTitle = ""
c.Title = ""
return nil
}
if resq.Code != 0 {
log.Error("DM: GetCommentTitle error code: %d", resq.Code)
c.OldTitle = ""
c.Title = ""
return nil
}
if len(resq.Data) == 0 {
c.OldTitle = ""
c.Title = ""
return nil
}
c.OldTitle = resq.Data[0]
c.Title = resq.Data[1]
return nil
}
//GetMedalanchorName 获取勋章对应主播的昵称
func (f *FansMedalInfo) GetMedalanchorName(ctx context.Context, uid int64) error {
if uid == 0 {
f.RUName = ""
return nil
}
req := &acctountService.MidReq{
Mid: uid,
}
resp, err := ac.Profile3(ctx, req)
if err != nil {
log.Error("DM: acctountService Profile3 err: %v", err)
f.lock.Lock()
f.RUName = ""
f.lock.Unlock()
return nil
}
f.lock.Lock()
f.RUName = resp.Profile.Name
f.lock.Unlock()
return nil
}
//GetMedalRoomid 获取勋章对应主播的房间
func (f *FansMedalInfo) GetMedalRoomid(ctx context.Context, uid int64) error {
if uid == 0 {
f.lock.Lock()
f.RoomID = 0
f.lock.Unlock()
return nil
}
req := &roomService.RoomRoomIdByUidReq{
Uid: uid,
}
resp, err := RoomServiceClient.V2Room.RoomIdByUid(ctx, req)
if err != nil {
log.Error("DM: room RoomIdByUid err: %v", err)
f.lock.Lock()
f.RoomID = 0
f.lock.Unlock()
return nil
}
if resp.Code == 404 {
f.lock.Lock()
f.RoomID = 0
f.lock.Unlock()
return nil
}
if resp.Code != 0 {
log.Error("DM: room RoomIdByUid err code: %d", resp.Code)
f.lock.Lock()
f.RoomID = 0
f.lock.Unlock()
return nil
}
f.lock.Lock()
f.RoomID = resp.Data.RoomId
f.lock.Unlock()
return nil
}
//GetUserBubble 判断用户是否有气泡
func (u *UserInfo) GetUserBubble(ctx context.Context, uid int64, roomid int64, bubble int64, guardLevel int) error {
req := &userextService.BubbleGetBubbleReq{
Uid: uid,
RoomId: roomid,
BubbleId: bubble,
GuardLevel: int64(guardLevel),
}
defer u.lock.Unlock()
resp, err := UserExtServiceClient.V1Bubble.GetBubble(ctx, req)
if err != nil {
if errors.Cause(err) != context.Canceled {
log.Error("DM: userext Bubble check err: %v", err)
}
u.lock.Lock()
u.Bubble = bubble
return nil
}
if resp.Code != 0 {
log.Error("DM: userext Bubble check err code: %d", resp.Code)
u.lock.Lock()
u.Bubble = bubble
return nil
}
if resp.Data == nil {
log.Error("DM: userext Bubble check err not data")
u.lock.Lock()
u.Bubble = bubble
return nil
}
u.lock.Lock()
u.Bubble = resp.Data.Bubble
return nil
}