52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package user
|
||
|
||
import (
|
||
"blazing/cool"
|
||
"blazing/logic/service/common"
|
||
"fmt"
|
||
"hash/crc32"
|
||
|
||
"blazing/modules/player/model"
|
||
"context"
|
||
"encoding/hex"
|
||
)
|
||
|
||
// LoginSidInfo 登录携带的凭证结构体
|
||
type MAIN_LOGIN_IN struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
|
||
Head common.TomeeHeader `cmd:"1001" struc:"skip"` //玩家登录
|
||
|
||
Sid []byte `struc:"[16]byte"` // 登录会话ID,固定长度16字节
|
||
|
||
}
|
||
|
||
func (l *MAIN_LOGIN_IN) CheakSession() (bool, uint32) {
|
||
// tt, _ := cool.CacheManager.Keys(context.Background())
|
||
//g.Dump(tt)
|
||
t1 := hex.EncodeToString(l.Sid)
|
||
r, err := cool.CacheManager.Get(context.Background(), fmt.Sprintf("session:%d", l.Head.UserID))
|
||
if err != nil {
|
||
return false, 0
|
||
}
|
||
if r.String() != t1 {
|
||
return false, 0
|
||
}
|
||
crc32Table := crc32.MakeTable(crc32.IEEE)
|
||
crcValue := crc32.Checksum([]byte(t1), crc32Table)
|
||
cool.CacheManager.Remove(context.Background(), fmt.Sprintf("session:%d", l.Head.UserID))
|
||
//glog.Debug(context.Background(), "后端获取", t1, err)
|
||
return true, crcValue
|
||
}
|
||
|
||
type LoginMSInfo struct {
|
||
model.PlayerInfo
|
||
}
|
||
|
||
func NewOutInfo(info *model.PlayerInfo) *LoginMSInfo {
|
||
|
||
l := &LoginMSInfo{
|
||
PlayerInfo: *info,
|
||
}
|
||
|
||
return l
|
||
}
|