123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- package v1
- import (
- "context"
- v1pb "go-common/app/interface/live/app-ucenter/api/http/v1"
- "go-common/app/interface/live/app-ucenter/conf"
- "go-common/app/interface/live/app-ucenter/dao"
- "go-common/library/ecode"
- "go-common/library/net/metadata"
- "go-common/library/sync/errgroup"
- )
- // RoomService struct
- type RoomService struct {
- conf *conf.Config
- // optionally add other properties here, such as dao
- dao *dao.Dao
- }
- //NewRoomService init
- func NewRoomService(c *conf.Config) (s *RoomService) {
- s = &RoomService{
- conf: c,
- dao: dao.New(c),
- }
- return s
- }
- // GetInfo implementation
- // 获取房间基本信息
- // `method:"GET" midware:"auth"`
- func (s *RoomService) GetInfo(ctx context.Context, req *v1pb.GetRoomInfoReq) (resp *v1pb.GetRoomInfoResp, err error) {
- uid, ok := metadata.Value(ctx, metadata.Mid).(int64)
- if uid <= 0 || !ok {
- err = ecode.UidError
- return
- }
- uidArr := make([]int64, 0)
- uidArr = append(uidArr, uid)
- resp = &v1pb.GetRoomInfoResp{}
- resp.Uid = uid
- resp.FullText = "V等级5级或UP等级10级才能开通粉丝勋章哦~加油!"
- resp.OpenMedalLevel = dao.OpenFansMealLevel
- resp.MaxLevel = 40
- eg := errgroup.Group{}
- eg.Go(func() (err error) {
- room, err := s.dao.GetRoomInfosByUids(ctx, uidArr)
- if err != nil {
- err = ecode.CallRoomError
- return
- }
- roomInfo := room[uid]
- if roomInfo == nil {
- return
- }
- LockStatus := 0
- //if roomInfo.LockTill >= dao.PERMANENT_LOCK_TIME {
- // LockStatus = 1
- //}
- resp.RoomId = roomInfo.RoomId
- resp.Title = roomInfo.Title
- resp.LiveStatus = roomInfo.LiveStatus
- resp.AreaV2Id = roomInfo.AreaV2Id
- resp.AreaV2Name = roomInfo.AreaV2Name
- resp.LockTime = roomInfo.LockTill
- resp.LockStatus = int64(LockStatus)
- resp.ParentId = roomInfo.AreaV2ParentId
- resp.ParentName = roomInfo.AreaV2ParentName
- return
- })
- eg.Go(func() (err error) {
- user, err := s.dao.GetUserInfo(ctx, uidArr)
- if err != nil {
- err = ecode.CallUserError
- return
- }
- if user == nil {
- err = ecode.UserNotFound
- return
- }
- userInfo, ok := user[uid]
- if !ok {
- err = ecode.UserNotFound
- return
- }
- resp.Face = userInfo.GetInfo().GetFace()
- resp.Uname = userInfo.GetInfo().GetUname()
- if userInfo.Exp != nil {
- resp.MasterScore = userInfo.Exp.Rcost / 100
- if userInfo.Exp.MasterLevel != nil {
- masterLevel := userInfo.Exp.MasterLevel.Level
- masterNextLevel := masterLevel + 1
- if masterNextLevel > 40 {
- masterNextLevel = 40
- }
- resp.MasterLevel = masterLevel
- resp.MasterLevelColor = userInfo.Exp.MasterLevel.Color
- resp.MasterNextLevel = masterNextLevel
- if len(userInfo.Exp.MasterLevel.Next) >= 2 {
- resp.MasterNextLevelScore = userInfo.Exp.MasterLevel.Next[1]
- }
- }
- }
- return
- })
- eg.Go(func() (err error) {
- relation, err := s.dao.GetUserFc(ctx, uid)
- if err != nil {
- err = ecode.CallRelationError
- return
- }
- resp.FcNum = relation.Fc
- return
- })
- eg.Go(func() (err error) {
- fansMedal, err := s.dao.GetFansMedalInfo(ctx, uid)
- if err != nil {
- err = ecode.CallFansMedalError
- return
- }
- if fansMedal == nil {
- return
- }
- resp.IsMedal = fansMedal.MasterStatus
- resp.MedalName = fansMedal.MedalName
- resp.MedalRenameStatus = fansMedal.RenameStatus
- resp.MedalStatus = fansMedal.Status
- return
- })
- eg.Go(func() (err error) {
- identifyStatus, err := s.dao.GetIdentityStatus(ctx, uid)
- if err != nil {
- err = ecode.CallMainMemberError
- return
- }
- resp.IdentifyStatus = int64(identifyStatus)
- return
- })
- err = eg.Wait()
- return
- }
- // Create implementation
- // 创建房间
- // `method:"POST" midware:"auth"`
- func (s *RoomService) Create(ctx context.Context, req *v1pb.CreateReq) (resp *v1pb.CreateResp, err error) {
- uid, ok := metadata.Value(ctx, metadata.Mid).(int64)
- if uid <= 0 || !ok {
- err = ecode.UidError
- return
- }
- resp = &v1pb.CreateResp{}
- room, err := s.dao.CreateRoom(ctx, uid)
- if err != nil {
- err = ecode.CallRoomError
- return
- }
- resp.RoomId = room.Roomid
- return
- }
|