123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package dao
- import (
- "context"
- v1pb "go-common/app/interface/live/web-room/api/http/v1"
- "go-common/app/service/live/xuser/api/grpc/v1"
- account "go-common/app/service/main/account/model"
- "go-common/library/log"
- "math"
- )
- // GetByRoomIDPage get roomadmin list by roomid.
- func (d *Dao) GetByRoomIDPage(c context.Context, roomID int64, page int64, pageSize int64) (resp *v1pb.RoomAdminGetByRoomResp, err error) {
- resp = &v1pb.RoomAdminGetByRoomResp{}
- resp.Page = &v1pb.RoomAdminGetByRoomResp_Page{
- Page: page,
- PageSize: pageSize,
- TotalPage: 1,
- TotalCount: 0,
- }
- ret, err := d.RoomAdminAPI.GetByRoom(c, &v1.RoomAdminGetByRoomReq{
- Roomid: roomID,
- })
- log.Info("call GetByAnchor mid(%v) page (%v) ret(%v)", roomID, page, ret)
- if err != nil {
- log.Error("call GetByAnchor mid(%v) page (%v) error(%v)", roomID, page, err)
- return
- }
- if ret == nil || ret.Data == nil {
- return
- }
- mids, _ := d.getUidsFromAdmins(c, ret.Data)
- dataLen := int64(len(mids))
- d.setPager(dataLen, pageSize, page, resp.Page)
- begin, end := d.getRange(pageSize, page, dataLen)
- args := &account.ArgMids{Mids: mids[begin:end]}
- accData, err := d.acc.Infos3(c, args)
- if err != nil {
- log.Error("call account.Infos3(%v) error(%v)", args, err)
- return resp, err
- }
- for _, v := range ret.Data[begin:end] {
- item := &v1pb.RoomAdminGetByRoomResp_Data{
- Uid: v.Uid,
- Ctime: v.Ctime,
- }
- if _, ok := accData[item.Uid]; ok {
- item.Face = accData[item.Uid].Face
- item.Uname = accData[item.Uid].Name
- } else {
- log.Error("没有这个人的用户信息 uid(%v) data(%v)", item.Uid, accData)
- }
- resp.Data = append(resp.Data, item)
- }
- return
- }
- // getAnchorUidsFromAdmins .
- // 根据批量房管获取对应主播的房间号和UID
- func (d *Dao) getUidsFromAdmins(c context.Context, admins []*v1.RoomAdminGetByRoomResp_Data) (uids []int64, err error) {
- if len(admins) == 0 {
- return
- }
- for _, r := range admins {
- uids = append(uids, r.Uid)
- }
- return
- }
- // pageSize, page, dataLen
- func (d *Dao) getRange(pageSize int64, page int64, dataLen int64) (begin int64, end int64) {
- begin = (page - 1) * pageSize
- end = page * pageSize
- if end > dataLen {
- end = dataLen
- }
- if begin > end {
- begin = end
- }
- return
- }
- func (d *Dao) setPager(dataLen int64, pageSize int64, page int64, pager *v1pb.RoomAdminGetByRoomResp_Page) {
- pager.Page = page
- pager.TotalCount = dataLen
- pager.TotalPage = int64(math.Ceil(float64(dataLen) / float64(pageSize)))
- pager.PageSize = pageSize
- }
|