235 lines
5.4 KiB
Go
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
|
|
}
|