samba/server/club/handler/clubHandler.go

48 lines
1.2 KiB
Go
Raw Normal View History

2025-06-04 09:51:39 +08:00
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)
}
}