예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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);
            }
        }