package handler import ( "github.com/rabbitmq/amqp091-go" "samba/pkg/log" "samba/proto" "samba/util/model" "samba/util/util" "strconv" ) func onUserOnline(_ *amqp091.Delivery, msg map[string]interface{}) { _, _, _, data := ParseMsg(msg) req, err := util.MapToStructT[proto.UserOnline](data) if err != nil { log.Error(err.Error()) return } uid, _ := strconv.ParseInt(req.Uid, 10, 64) model.AddClubMemberOnline(uid) } func onUserOffline(_ *amqp091.Delivery, msg map[string]interface{}) { _, _, _, data := ParseMsg(msg) req, err := util.MapToStructT[proto.UserOnline](data) if err != nil { log.Error(err.Error()) return } uid, _ := strconv.ParseInt(req.Uid, 10, 64) model.DelClubMemberOnline(uid) } // todo:服务启动时,该hash表中所有玩家在玩信息,超出半小时的,清除。 启动后开启定时器清除该信息,暂不处理 func onUserInClubGame(_ *amqp091.Delivery, msg map[string]interface{}) { _, _, _, data := ParseMsg(msg) req, err := util.MapToStructT[proto.ReqUserInClubGame](data) if err != nil { log.Error(err.Error()) return } if req.Playing > 0 { model.AddClubMemberPlaying(req.UserId, req.ClubId, req.RoomId) } else { model.DelClubMemberPlaying(req.UserId, req.ClubId, req.RoomId) } }