48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
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)
|
||
}
|
||
}
|