/// <summary>玩家登陆指令</summary> public ASObject CommandStart(TGGSession session, ASObject data) { #if DEBUG XTrace.WriteLine("{0}:{1}", "LOGIN", "玩家登陆指令"); #endif #if DEBUG XTrace.WriteLine("------------ 登陆前 {0} ------------", Variable.OnlinePlayer.Count); #endif var userName = data.FirstOrDefault(q => q.Key == "userName").Value.ToString(); if (string.IsNullOrEmpty(userName)) { return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR)); } if (!CommonHelper.CheckActivation(userName)) { return(CommonHelper.ErrorResult((int)ResultType.ACTIVATION_ERROR)); } //DisplayGlobal.log.Write("登陆账号:" + userName); var user = tg_user.Find(string.Format("user_code='{0}'", userName)); if (user == null) { return(new ASObject(BuildData((int)ResultType.NO_DATA, null, 0))); } var b = Variable.OnlinePlayer.ContainsKey(user.id); #if DEBUG XTrace.WriteLine("OnlinePlayer:{0} {1}", user.id, b); #endif if (b) { var user_id = Convert.ToInt64(user.id); var s = Variable.OnlinePlayer[user_id] as TGGSession; if (s != null) { s.Close(); } } session.Player = Common.GetInstance().GetPlayer(user); session.Fight = Common.GetInstance().GetFight(session.Player); Variable.OnlinePlayer.AddOrUpdate(user.id, session, (k, v) => session); tg_user_login_log.LoginLog(user.id, Common.GetInstance().GetRemoteIP(session)); ReLoadTask(session); Int64 opentime = 0; if (CommonHelper.CheckOpenTime()) { if (session.Player.UserExtend.fcm == (int)FCMType.Yes) { var fcm = new Share.User().GetFCM(user.id); if (fcm != null) { session.Player.onlinetime = fcm.login_time_longer_day * 60; opentime = fcm.login_open_time; } } } return(new ASObject(BuildData((int)ResultType.SUCCESS, session.Player, opentime))); }
//private static USER_LOGIN ObjInstance; ///// <summary>LOGIN单例模式</summary> //public static USER_LOGIN GetInstance() //{ // return ObjInstance ?? (ObjInstance = new USER_LOGIN()); //} /// <summary>玩家登陆指令</summary> public ASObject CommandStart(TGGSession session, ASObject data) { #if DEBUG XTrace.WriteLine("{0}:{1}", "LOGIN", "玩家登陆指令"); #endif #if DEBUG XTrace.WriteLine("------------ 登陆前 {0} ------------", Variable.OnlinePlayer.Count); #endif if (!data.ContainsKey("isAdult") || !data.ContainsKey("userName")) { return(null); } var isAdult = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "isAdult").Value); //是否成年0:未成年 1:成年 var name = data.FirstOrDefault(q => q.Key == "userName").Value.ToString(); var userName = string.Empty; if (CommonHelper.IsKey()) { //var decrypt = CommonHelper.GetUserName(name); var gamekey = CommonHelper.GetAppSettings("gamekey");//获取游戏加密 var game_name = String.Empty; var cb = false; try { var str = CommonHelper.Decode(name); game_name = CryptoHelper.Decrypt(str, gamekey); cb = true; } catch { XTrace.WriteLine("name:{0}", name); } if (!cb) { return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR)); } userName = game_name; } else { userName = name; } if (string.IsNullOrEmpty(userName)) { return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR)); } var user = tg_user.Find(string.Format("user_code='{0}'", userName)); if (user == null) { return(new ASObject(BuildData((int)ResultType.NO_DATA, null, 0))); } if (user.state == (int)UserStateType.Block) { return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_BLOCK_ERROR)); } if (user.state == (int)UserStateType.Frozen) { return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_FROZEN_ERROR)); } var b = Variable.OnlinePlayer.ContainsKey(user.id); #if DEBUG XTrace.WriteLine("OnlinePlayer:{0} {1}", user.id, b); #endif if (b) { var user_id = Convert.ToInt64(user.id); var s = Variable.OnlinePlayer[user_id] as TGGSession; if (s != null) { s.Close(); } } var player = Common.GetInstance().GetPlayer(user, isAdult); if (player == null) { return(null); } session.Player = player; session.Fight = Common.GetInstance().GetFight(session.Player); Variable.OnlinePlayer.AddOrUpdate(user.id, session, (k, v) => session); tg_user_login_log.LoginLog(user.id, Common.GetInstance().GetRemoteIP(session)); ReLoadTask(session); RemoveFightState(user.id); Int64 opentime = 0; if (CommonHelper.CheckOpenTime()) { if (session.Player.UserExtend.fcm == (int)FCMType.Yes) { var fcm = new Share.User().GetFCM(user.id); if (fcm != null) { session.Player.onlinetime = fcm.login_time_longer_day * 60; opentime = fcm.login_open_time; } } } report_record_login.Login(player.User.id); report_day.OnOffLine(); //new Share.ActivityOpenService().ActivityPush(session.Player.User.id); return(new ASObject(BuildData((int)ResultType.SUCCESS, session.Player, opentime))); }