package msg_handler import ( "encoding/json" "git.noahlan.cn/northlan/ntools-go/kafka" "live-gateway/config" "live-gateway/pb/mq" pbVars "live-gateway/pb/vars" kfk "live-gateway/pkg/kafka" "strconv" ) type RedPocket struct { LotId int64 `json:"lot_id"` // 本次抽奖ID Uname string `json:"uname"` // UName UID int64 `json:"uid"` // UID StartTime int64 `json:"start_time"` // 红包开始时间 CurrentTime int64 `json:"current_time"` // 当前时间 WaitNum int64 `json:"wait_num"` // 不清楚??? Action string `json:"action"` GiftName string `json:"gift_name"` // 名 GiftID int64 `json:"gift_id"` // id - 13000 Num int64 `json:"num"` // 数量 Price int64 `json:"price"` // 电池数 MedalInfo FansMedal `json:"medal_info"` } type RedPocketHandler struct { producer *kafka.Producer liveRoomId int64 } func NewRedPocketHandler(liveRoomId int64) *RedPocketHandler { cfg := config.Config.Kafka.Gift return &RedPocketHandler{ producer: kafka.NewKafkaProducer(kfk.DefaultProducerConfig, cfg.Addr, cfg.Topic), liveRoomId: liveRoomId, } } func (h *RedPocketHandler) CMD() string { return "POPULARITY_RED_POCKET_NEW" } func (h *RedPocketHandler) HandlerMessage(data []byte) { var baseMsg struct { CMD string `json:"cmd"` Data *RedPocket `json:"data"` } if err := json.Unmarshal(data, &baseMsg); err != nil { return } //logger.SLog.Infof("%s %s礼物 %s x%d", baseMsg.Data.Uname, baseMsg.Data.Action, baseMsg.Data.GiftName, baseMsg.Data.Num) dmMsg := &pbMq.MqGift{ Platform: pbVars.Platform_name[int32(pbVars.Platform_Bilibili)], LiveRoomId: h.liveRoomId, MsgId: "", Timestamp: baseMsg.Data.CurrentTime, Uid: baseMsg.Data.UID, Uname: baseMsg.Data.Uname, Avatar: "", GiftId: baseMsg.Data.GiftID, GiftName: baseMsg.Data.GiftName, GiftNum: baseMsg.Data.Num, Price: baseMsg.Data.Price * 100, // 红包的price是电池,转换为金瓜子 IsPaid: true, Type: pbMq.MqGift_RED_PACK, PackGift: nil, FansMedalWearingStatus: baseMsg.Data.MedalInfo.AnchorRoomId == h.liveRoomId, FansMedalName: baseMsg.Data.MedalInfo.MedalName, FansMedalLevel: baseMsg.Data.MedalInfo.MedalLevel, } _ = h.producer.SendMessageAsync(dmMsg, strconv.FormatInt(dmMsg.Uid, 10)) }