/// <summary> /// 创始成功之后处理事件 /// </summary> public void OnCreateAfter(UserBasisCache user) { var cacheSet = new ShareCacheStruct <UserCenterUser>(); UserCenterUser ucu = cacheSet.FindKey(user.UserID); if (ucu != null) { ucu.NickName = user.NickName; } }
/// <summary> /// UserCenterUser /// </summary> public static void DoUserCenterUser() { var centerUserSet = new ShareCacheStruct <UserCenterUser>(); TraceLog.WriteInfo("Do UserCenterUser table start..."); int count = 0; try { var dbProvider = DbConnectionProvider.CreateDbProvider(DbConfig.MERGE); string sql = "SELECT UserID,NickName,OpenID,ServerID,AccessTime,LoginNum,RetailID,Unid FROM UserCenterUser"; using (IDataReader reader = dbProvider.ExecuteReader(CommandType.Text, sql)) { while (reader.Read()) { UserCenterUser center = new UserCenterUser() { UserID = reader["UserID"].ToInt(), NickName = reader["NickName"].ToString(), OpenID = reader["OpenID"].ToString(), ServerID = reader["ServerID"].ToInt(), AccessTime = reader["AccessTime"].ToDateTime(), LoginNum = reader["LoginNum"].ToInt(), RetailID = reader["RetailID"].ToString(), Unid = reader["Unid"].ToString(), }; if (centerUserSet.FindKey(center.UserID.ToString()) == null) { //centerUserSet.Add(basis); count++; } } //centerUserSet.Update(); } } catch (Exception ex) { TraceLog.WriteError("Do UserCenterUser table error Exception: {0} .", ex); return; } TraceLog.WriteInfo("Do UserCenterUser table successful : {0} .", count); }
static public UserCenterUser CreateUserCenterUser(string openid, string retailId, int serverId) { var cache = new ShareCacheStruct <UserCenterUser>(); Interlocked.Increment(ref SystemGlobal.UserCenterUserCount); var ucu = new UserCenterUser() { UserID = GameEnvironment.ProductServerId * 1000000 + SystemGlobal.UserCenterUserCount, NickName = string.Empty, OpenID = openid, ServerID = serverId, AccessTime = DateTime.Now, LoginNum = 0, RetailID = retailId, Unid = string.Empty }; cache.Add(ucu); cache.Update(); return(ucu); }
public static void Run() { //AppstoreClientManager.Current.InitConfig(); //var dispatch = TaskDispatch.StartTask(); //dispatch.Add(new StudyTask()); lock (thisLock) { _isRunning = false; } Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); #if NO_MERGE_SERVICE_DATA var httpHost = GetSection().HttpHost; var httpPort = GetSection().HttpPort; var httpName = GetSection().HttpName; if (!string.IsNullOrEmpty(httpHost)) { var names = httpName.Split(','); new NewHttpListener(httpHost, httpPort, new HashSet <string>(names)); } LoadGlobalData(); // 上传该服务器的状态 TimeListener.Append(PlanConfig.EveryMinutePlan(submitServerStatus, "submitServerStatus", "00:00", "23:59", ConfigurationManager.AppSettings["ServerStatusSendInterval"].ToInt())); // 自动机器人,64争霸赛 TimeListener.Append(PlanConfig.EveryMinutePlan(LoopAction, "LoopAction", "00:00", "23:59", 3)); // new GameActiveCenter(null); // new GuildGameActiveCenter(null); //每天执行用于整点刷新 TimeListener.Append(PlanConfig.EveryDayPlan(UserHelper.DoZeroRefreshDataTask, "DoZeroRefreshDataTask", "00:00")); //TimeListener.Append(PlanConfig.EveryMinutePlan(UserHelper.DoZeroRefreshDataTask, "DoZeroRefreshDataTask", "08:00", "22:00", 60)); //每天5点执行用于整点刷新 TimeListener.Append(PlanConfig.EveryDayPlan(UserHelper.DoEveryDayRefreshDataTask, "EveryDayRefreshDataTask", "05:00")); // 每周二,周五 TimeListener.Append(PlanConfig.EveryWeekPlan(UserHelper.DoTuesdayRefreshTask, "TuesdayRefreshTask", DayOfWeek.Tuesday, "04:00")); //TimeListener.Append(PlanConfig.EveryWeekPlan(UserHelper.DoFridayRefreshTask, "FridayRefreshTask", DayOfWeek.Friday, "04:00")); DataHelper.InitData(); InitRanking(); if (DataHelper.IsFirstOpenService) { string ncikName = string.Empty; var botsNameSet = new ShareCacheStruct <Config_BotsName>(); for (int i = 0; i < 5; ++i) { ncikName = botsNameSet.FindKey(random.Next(botsNameSet.Count)).String; ncikName += botsNameSet.FindKey(random.Next(botsNameSet.Count)).Value; UserCenterUser ucu = Util.CreateUserCenterUser(Util.GetRandomGUIDPwd(), "0000", GameEnvironment.ProductServerId); Action1005.CreateRole(ucu.UserID, "", ucu.ServerID, ucu.OpenID, ucu.RetailID, ncikName, random.Next(1) + 1, ""); } } //Bots.InitBots(); //if (competition64 == null) //{ // competition64 = new Competition64(); // competition64.Initialize(); //} GlobalRemoteService.Reuest(); stopwatch.Stop(); new BaseLog().SaveLog("系统全局运行环境加载所需时间:" + stopwatch.Elapsed.TotalMilliseconds + "ms"); SendServerStatus(ServerStatus.Unhindered, 0); #else MERGE_SERVICE.Run(); #endif lock (thisLock) { _isRunning = true; } }
public override bool TakeAction() { SessionUser user = null; try { var cache = new ShareCacheStruct <UserCenterUser>(); var uculist = Util.FindUserCenterUser(OpenID, RetailID, ServerID); if (uculist.Count <= 0) { UserCenterUser ucu = Util.CreateUserCenterUser(OpenID, RetailID, ServerID); user = new SessionUser() { PassportId = OpenID, UserId = ucu.UserID }; Current.Bind(user); return(true); } UserBasisCache basis = UserHelper.FindUserBasis(uculist[0].UserID); if (basis == null) { user = new SessionUser() { PassportId = OpenID, UserId = uculist[0].UserID }; Current.Bind(user); return(true); } uculist[0].LoginNum++; isCreated = true; user = new SessionUser(basis); Current.Bind(user); if (basis.UserStatus == UserStatus.Lock) { ErrorCode = Language.Instance.TimeoutCode; ErrorInfo = Language.Instance.AcountIsLocked; return(false); } basis.SessionID = Sid; //basis.ServerID = this.ServerID; if (!string.IsNullOrEmpty(AvatarUrl)) { basis.AvatarUrl = AvatarUrl; // 这里刷新排行榜数据 var combat = UserHelper.FindRankUser(basis.UserID, RankType.Combat); combat.AvatarUrl = basis.AvatarUrl; var level = UserHelper.FindRankUser(basis.UserID, RankType.Level); level.AvatarUrl = basis.AvatarUrl; var fight = UserHelper.FindRankUser(basis.UserID, RankType.FightValue); fight.AvatarUrl = basis.AvatarUrl; var combo = UserHelper.FindRankUser(basis.UserID, RankType.Combo); combo.AvatarUrl = basis.AvatarUrl; } UserHelper.UserOnline(basis.UserID); System.Threading.Tasks.Task.Factory.StartNew(() => { //登录日志 UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = basis.UserID.ToString(); userLoginLog.SessionID = Sid; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = LoginStatus.Logined; userLoginLog.Ip = this.GetRealIP(); userLoginLog.Pid = basis.Pid; userLoginLog.UserLv = basis.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(new[] { userLoginLog }); }); return(true); } catch (Exception ex) { SaveLog(ex); ErrorCode = Language.Instance.ErrorCode; ErrorInfo = Language.Instance.ValidateError; return(false); } }