protected override bool CreateUserRole(out IUser user) { user = null; GameUser gameUser = new GameDataCacheSet<GameUser>().FindKey(Uid); if (gameUser == null) { var roleFunc = new RoleFunc(); string msg; if (roleFunc.VerifyRange(UserName, out msg) || roleFunc.VerifyKeyword(UserName, out msg) || roleFunc.IsExistNickName(UserName, out msg)) { ErrorCode = Language.Instance.ErrorCode; ErrorInfo = msg; return false; } gameUser = CreateRole(); roleFunc.OnCreateAfter(gameUser); } user = gameUser; UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = Uid; userLoginLog.SessionID = Sid; userLoginLog.MobileType = (short)MobileType; userLoginLog.ScreenX = ScreenX; userLoginLog.ScreenY = ScreenY; userLoginLog.RetailId = RetailID; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = (short)LoginStatus.Logined; userLoginLog.DeviceID = DeviceID; userLoginLog.Ip = GetRealIP(); userLoginLog.Pid = gameUser.Pid; userLoginLog.UserLv = gameUser.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); return true; }
protected override bool DoSuccess(int userId, out IUser user) { user = null; var cacheSet = new GameDataCacheSet<GameUser>(); GameUser gameUser = cacheSet.FindKey(Uid); if (gameUser == null || string.IsNullOrEmpty(gameUser.SessionID) || !gameUser.IsOnlining) { gameUser = cacheSet.FindKey(Uid); } if (gameUser != null) { //原因:还在加载中时,返回 if (gameUser.Property.IsRefreshing) { Uid = string.Empty; ErrorCode = Language.Instance.ErrorCode; ErrorInfo = Language.Instance.ServerLoading; return false; } } var nowTime = DateTime.Now; if (gameUser == null) { this.ErrorCode = 1005; return true; } user = gameUser; if (gameUser.UserStatus == UserStatus.FengJin) { ErrorCode = Language.Instance.TimeoutCode; ErrorInfo = Language.Instance.AcountIsLocked; return false; } gameUser.SessionID = Sid; gameUser.OnlineDate = nowTime; gameUser.LoginDate = nowTime; gameUser.Property.GameId = this.GameType; gameUser.Property.ServerId = this.ServerID; gameUser.Property.ChatVesion = 0; //gameUser.OnLine = true; //gameUser.Logoff = true; System.Threading.Tasks.Task.Factory.StartNew(() => { //登录日志 UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = gameUser.UserId.ToString(); userLoginLog.SessionID = Sid; userLoginLog.MobileType = this.MobileType.ToShort(); userLoginLog.ScreenX = this.ScreenX; userLoginLog.ScreenY = this.ScreenY; userLoginLog.RetailId = this.RetailID; userLoginLog.AddTime = nowTime; userLoginLog.State = LoginStatus.Logined.ToInt(); userLoginLog.DeviceID = this.DeviceID; userLoginLog.Ip = this.GetRealIP(); userLoginLog.Pid = gameUser.Pid; userLoginLog.UserLv = gameUser.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); }); return true; }