package user import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/event" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/sys/cache" "time" "go.mongodb.org/mongo-driver/mongo" ) //参数校验 func (this *Api_Comp) Login_Check(session comm.IUserSession, req *pb.UserLoginReq) (result map[string]interface{}, code comm.ErrorCode) { result = map[string]interface{}{} return } //登录 func (this *Api_Comp) Login(session comm.IUserSession, result map[string]interface{}, req *pb.UserLoginReq) (code pb.ErrorCode) { var ( err error user *pb.DB_UserData ) defer func() { if user != nil { err = session.SendMsg(string(this.module.GetType()), User_SubType_Login, &pb.UserLoginResp{ Data: user, }) if err != nil { code = pb.ErrorCode_SystemError return } event.TriggerEvent(comm.Event_UserLogin, user.Uid) } }() // user := decodeUserData(req.Sec) //从mgo查询user user, err = this.module.modelUser.User_FindByAccount(req.Sid, req.Account) if err != nil { if err != mongo.ErrNoDocuments { return } } if user == nil { //如果是新玩家,创建一条基础的数据,页面会引导进入创角页面 err = this.module.modelUser.User_Create(user) if err != nil { log.Errorf("User_CreateUser err %v", err) return } } //bind user err = session.Bind(user.Uid, this.service.GetId()) if err != nil { code = pb.ErrorCode_BindUser return } //set user other info user.Logintime = time.Now().Unix() user.Lastloginip = session.GetIP() user.Createip = session.GetIP() //缓存user session err = this.module.modelSession.Change(user.Uid, map[string]interface{}{ "uid": user.Uid, "sessionId": session.GetSessionId(), "gatewayServiceId": session.GetGatewayServiceId(), }, cache.WithExpire(time.Hour*12), cache.WithDisabledMgoLog()) if err != nil { code = pb.ErrorCode_DBError return } //缓存user err = this.module.modelUser.Add(user.Uid, user, cache.WithDisabledMgoLog()) if err != nil { code = pb.ErrorCode_DBError return } return }