| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package main
- import (
- "git.wanbits.io/joe/franklin/mod"
- pb "git.wanbits.io/joe/franklin/protos"
- "git.wanbits.io/joe/kettle/log"
- "git.wanbits.io/joe/nnet"
- "github.com/go-redis/redis"
- "github.com/mitchellh/mapstructure"
- "go.uber.org/zap"
- )
- type fnRabbitCallback func(session nnet.ISession, packet *RespPacket)
- var (
- rabbit_route_table = map[string]fnRabbitCallback{
- CMD_HEARTBEAT: on_bl_heartbeat,
- CMD_LOGIN_VERIFY: on_bl_login_verify,
- CMD_UPDATE_USERINFO: on_bl_update_userinfo,
- }
- )
- func on_recv_timeout(cses nnet.ISession, pkt *ReqPacket) {
- switch pkt.Cmd {
- case CMD_LOGIN_VERIFY:
- response_c_login(cses, pb.ErrCode_TIMEOUT, nil)
- case CMD_UPDATE_USERINFO:
- log.Error("udpate userinfo timeout", zap.Any("param", pkt))
- }
- }
- func on_bl_heartbeat(ses nnet.ISession, pkt *RespPacket) {
- log.Debug("received bl_heartbeat from rabbit server")
- }
- func on_bl_login_verify(ses nnet.ISession, pkt *RespPacket) {
- iwp, ok := g_rabbitProto.Get(pkt.Seq)
- if !ok {
- return // timeout
- }
- wp, ok := iwp.(*WaitParam)
- if !ok {
- log.Error("interface transform failed")
- return
- }
- if !wp.timer.Stop() {
- return // timeout
- }
- resp := &pb.VerifyResult{}
- err := mapstructure.Decode(pkt.Result, resp)
- if err != nil {
- response_c_login(wp.ses, pb.ErrCode_UNKNOWN, nil)
- log.Error("bad format", zap.Error(err))
- return
- }
- var s_login *pb.S_Login
- user, err := setget_user(resp)
- if err != nil {
- s_login = &pb.S_Login{
- UserId: resp.UserId,
- Username: resp.Username,
- Nickname: resp.Nickname,
- }
- } else {
- s_login = &pb.S_Login{
- UserId: user.UserId,
- Username: user.Username,
- Nickname: user.Nickname,
- }
- if user.Status != int32(pb.UserStatus_NORMAL) {
- response_c_login(wp.ses, pb.ErrCode_FORBIDDEN, nil)
- return
- }
- // check kick-off
- }
- response_c_login(wp.ses, pb.ErrCode_OK, s_login)
- }
- func setget_user(res *pb.VerifyResult) (*pb.User, error) {
- user, err := mod.LoadUser(res.UserId)
- if err != nil {
- if err == redis.Nil {
- user = &pb.User{
- UserId: res.UserId,
- Username: res.Username,
- Nickname: res.Nickname,
- HeaderIcon: res.HeaderIcon,
- Publish: res.Publish,
- Platform: res.Platform,
- }
- fields, err := mod.StructToMap(user)
- if err != nil {
- log.Error("", zap.Error(err))
- return user, nil
- }
- err = mod.UpdateUserAttrs(user.UserId, fields)
- if err != nil {
- log.Error("redis save", zap.Error(err))
- }
- return user, nil
- }
- log.Error("redis read", zap.Error(err))
- return nil, err
- }
- return user, nil
- }
- func on_bl_update_userinfo(ses nnet.ISession, pkt *RespPacket) {
- }
|