123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package dao
- import (
- "context"
- "fmt"
- "strconv"
- broadcasrtService "go-common/app/service/live/broadcast-proxy/api/v1"
- "go-common/app/service/live/live-dm/model"
- roomService "go-common/app/service/live/room/api/liverpc/v1"
- "go-common/library/cache/redis"
- "go-common/library/log"
- )
- const (
- _adminMsgHistoryCache = "cache:last10_roomadminmsg:"
- _msgHistoryCache = "cache:last10_roommsg:"
- )
- //SaveHistory 弹幕历史存入redis
- func (d *Dao) SaveHistory(ctx context.Context, hm string, adm bool, rid int64) {
- var conn = d.redis.Get(ctx)
- defer conn.Close()
- if adm {
- admKey := fmt.Sprintf("%s%d", _adminMsgHistoryCache, rid)
- if err := conn.Send("LPUSH", admKey, hm); err != nil {
- log.Error("DM: SaveHistory LPUSH err: %v", err)
- }
- if err := conn.Send("LLEN", admKey); err != nil {
- log.Error("DM: SaveHistory LLEN err: %v", err)
- return
- }
- if err := conn.Flush(); err != nil {
- log.Error("DM: SaveHistory Flush err: %v", err)
- return
- }
- if _, err := conn.Receive(); err != nil {
- log.Error("DM: SaveHistory LPUSH err: %v", err)
- }
- count, err := redis.Int64(conn.Receive())
- if err != nil {
- log.Error("DM: SaveHistory LPUSH LLEN err: %v", err)
- return
- }
- if count > 15 {
- err := conn.Send("LTRIM", admKey, 0, 9)
- if err != nil {
- log.Error("DM: SaveHistory LTRIM err: %v", err)
- }
- }
- if err := conn.Send("EXPIRE", admKey, 86400); err != nil {
- log.Error("DM: SaveHistory EXPIRE err: %v", err)
- }
- if err := conn.Flush(); err != nil {
- log.Error("DM: SaveHistory Flush err: %v", err)
- }
- }
- userKey := fmt.Sprintf("%s%d", _msgHistoryCache, rid)
- if err := conn.Send("LPUSH", userKey, hm); err != nil {
- log.Error("DM: SaveHistory LPUSH err: %v", err)
- }
- if err := conn.Send("LLEN", userKey); err != nil {
- log.Error("DM: SaveHistory LLEN err: %v", err)
- return
- }
- if err := conn.Flush(); err != nil {
- log.Error("DM: SaveHistory Flush err: %v", err)
- return
- }
- if _, err := conn.Receive(); err != nil {
- log.Error("DM: SaveHistory Receive LPUSH err: %v", err)
- }
- count, err := redis.Int64(conn.Receive())
- if err != nil {
- log.Error("DM: SaveHistory Int64 err: %v", err)
- return
- }
- if count > 15 {
- if err := conn.Send("LTRIM", userKey, 0, 9); err != nil {
- log.Error("DM: SaveHistory LTRIM err: %v", err)
- }
- }
- if err := conn.Send("EXPIRE", userKey, 86400); err != nil {
- log.Error("DM: SaveHistory EXPIRE err: %v", err)
- }
- if err := conn.Flush(); err != nil {
- log.Error("DM: SaveHistory Flush err: %v", err)
- }
- }
- //IncrDMNum 弹幕条数
- func IncrDMNum(ctx context.Context, rid int64, mode int64) {
- req := &roomService.RoomIncrDanmuSendNumReq{
- RoomId: rid,
- Mode: mode,
- }
- resp, err := RoomServiceClient.V1Room.IncrDanmuSendNum(ctx, req)
- if err != nil {
- log.Error("DM: IncrDMNum err: %v", err)
- return
- }
- if resp.Code != 0 {
- log.Error("DM: IncrDMNum err code: %d", resp.Code)
- return
- }
- }
- //SendBroadCast 发送弹幕(http)
- func SendBroadCast(ctx context.Context, sm string, rid int64) error {
- err := LiveBroadCastClient.PushBroadcast(ctx, rid, 0, sm)
- if err != nil {
- log.Error("DM: SendBroadCast err: %v", err)
- return err
- }
- return nil
- }
- //SendBroadCastGrpc 调用GRPC发送弹幕
- func SendBroadCastGrpc(ctx context.Context, sm string, rid int64) error {
- req := &broadcasrtService.RoomMessageRequest{
- RoomId: int32(rid),
- Message: sm,
- }
- _, err := BcastClient.DanmakuClient.RoomMessage(ctx, req)
- if err != nil {
- log.Error("DM: SendBroadCastGrpc err: %v", err)
- return err
- }
- return nil
- }
- //SendBNDatabus 拜年祭制定房间投递到databus
- func SendBNDatabus(ctx context.Context, uid int64, info *model.BNDatabus) {
- uids := strconv.FormatInt(uid, 10)
- if err := bndatabus.Send(ctx, uids, info); err != nil {
- log.Error("[service.live-dm.v1.bndatabus] send error(%v), record(%v)", err, info)
- }
- }
|