123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package dao
- import (
- "context"
- "time"
- "go-common/library/ecode"
- "fmt"
- daoAnchorV0 "go-common/app/service/live/dao-anchor/api/grpc/v0"
- "go-common/app/service/live/dao-anchor/api/grpc/v1"
- "go-common/library/log"
- )
- //LIVE_OPEN 开播
- const LIVE_OPEN = 1
- //LIVE_CLOSE 关播
- const LIVE_CLOSE = 0
- //LIVE_ROUND 轮播
- const LIVE_ROUND = 2
- //PAGE_SIZE 分页数据量
- const PAGE_SIZE = 100
- //RETRY_TIME 接口充实次数
- const RETRY_TIME = 3
- //GetAllLiveRoom 获取在播列表
- func (d *Dao) GetAllLiveRoom(c context.Context, fields []string) (resp map[int64]*v1.RoomData, err error) {
- page := 0
- resp = map[int64]*v1.RoomData{}
- retry := 1
- for true {
- reply, err := d.daoAnchorApi.RoomOnlineList(c, &v1.RoomOnlineListReq{Fields: fields, Page: int64(page), PageSize: PAGE_SIZE})
- if err != nil {
- if retry >= RETRY_TIME {
- break
- }
- retry++
- time.Sleep(time.Second * 3)
- log.Errorw(c, "log", fmt.Sprintf("getAllLiveRoom_RoomOnlineList_error:page=%d;err=%v", page, err))
- continue
- }
- if len(reply.RoomDataList) <= 0 {
- break
- }
- page = page + 1
- roomDataList := reply.RoomDataList
- for roomId, info := range roomDataList {
- v := info
- resp[roomId] = v
- }
- time.Sleep(time.Millisecond)
- }
- return
- }
- //GetAllLiveRoomIds 获取在播列表
- func (d *Dao) GetAllLiveRoomIds(c context.Context) (resp []int64, err error) {
- page := 0
- reply, err := d.daoAnchorApi.RoomOnlineListByArea(c, &v1.RoomOnlineListByAreaReq{})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("GetAllLiveRoomIds_RoomOnlineList_error:page=%d;err=%v", page, err))
- return
- }
- if len(reply.RoomIds) <= 0 {
- return
- }
- resp = reply.RoomIds
- return
- }
- //GetInfosByRoomIds 获取主播房间信息
- func (d *Dao) GetInfosByRoomIds(c context.Context, roomIds []int64, fields []string) (resp map[int64]*v1.RoomData, err error) {
- if roomIds == nil {
- err = ecode.InvalidParam
- log.Errorw(c, "log", fmt.Sprintf("getInfosByRoomIds_params_error:%v", roomIds))
- return
- }
- reply, err := d.daoAnchorApi.FetchRoomByIDs(c, &v1.RoomByIDsReq{RoomIds: roomIds, Fields: fields})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("getInfosByRoomIds_FetchRoomByIDs_error:reply=%v;err=%v", reply, err))
- return
- }
- if reply == nil {
- err = ecode.CallDaoAnchorError
- log.Errorw(c, "log", "getInfosByRoomIds_FetchRoomByIDs_error")
- return
- }
- resp = reply.RoomDataSet
- return
- }
- //UpdateRoomEx ...
- func (d *Dao) UpdateRoomEx(c context.Context, roomId int64, fields []string, keyFrame string) (resp int64, err error) {
- if roomId < 0 {
- err = ecode.InvalidParam
- log.Errorw(c, "log", fmt.Sprintf("updateRoom_params_error:%v", roomId))
- return
- }
- reply, err := d.daoAnchorApi.RoomExtendUpdate(c, &v1.RoomExtendUpdateReq{Fields: fields, RoomId: roomId, Keyframe: keyFrame})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("updateRoom_RoomUpdate_error:reply=%v;err=%v", reply, err))
- return
- }
- resp = reply.AffectedRows
- return
- }
- func (d *Dao) CreateCacheList(c context.Context, roomIds []int64, content string) (err error) {
- if len(roomIds) <= 0 || content == "" {
- log.Errorw(c, "log", fmt.Sprintf("CreateCacheList_params_error:room_id=%v;content=%s", roomIds, content))
- return
- }
- reply, err := d.daoAnchorApiV0.CreateLiveCacheList(c, &daoAnchorV0.CreateLiveCacheListReq{RoomIds: roomIds, Content: content})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("CreateCacheList_error:reply=%v;err=%v", reply, err))
- return
- }
- log.Info("CreateCacheList_info:roomIds=%v;content=%s;reply=%v", roomIds, content, reply)
- return
- }
- func (d *Dao) GetContentMap(c context.Context) (resp map[string]int64, err error) {
- reply, err := d.daoAnchorApiV0.GetContentMap(c, &daoAnchorV0.GetContentMapReq{})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("GetContentMap_error:reply=%v;err=%v", reply, err))
- return
- }
- resp = reply.List
- return
- }
- func (d *Dao) CreateDBData(c context.Context, roomIds []int64, content string) (err error) {
- if len(roomIds) <= 0 || content == "" {
- log.Errorw(c, "log", fmt.Sprintf("CreateCacheList_params_error:room_id=%v;content=%s", roomIds, content))
- return
- }
- reply, err := d.daoAnchorApiV0.CreateDBData(c, &daoAnchorV0.CreateDBDataReq{RoomIds: roomIds, Content: content})
- if err != nil {
- log.Errorw(c, "log", fmt.Sprintf("CreateCacheList_error:reply=%v;err=%v", reply, err))
- return
- }
- return
- }
|