示例#1
0
        private static void CheckActionTime(object state)
        {
            var biz     = new BizRankCollectorSettings();
            var setting = biz.GetSettings();

            var actionWeek = setting.ActionWeek ?? string.Empty;
            var actionTime = setting.ActionTime;

            if (string.IsNullOrEmpty(actionTime))
            {
                return;
            }

            var Weeks = actionWeek.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);

            if (Weeks == null || Weeks.Count() <= 0)
            {
                return;
            }

            var nowWeek    = DateTime.Now.ToString("ddd");
            int fromHour   = DateTime.Now.Hour;
            int toHour     = DateTime.Now.AddHours(1).Hour;
            int actionHour = int.Parse(actionTime);


            foreach (var week in Weeks)
            {
                if (week == nowWeek)
                {
                    if (fromHour < actionHour && toHour > actionHour)
                    {
                        GoRankCollector(setting.EndPageNum);
                    }
                    break;
                }
            }
        }
        public JsonModel CheckVersion(JsonModel jsonModel)
        {
            if (jsonModel == null)
            {
                return(null);
            }

            if (jsonModel.BjModel == null)
            {
                return(null);
            }

            if (string.IsNullOrEmpty(jsonModel.BjModel.LoginID))
            {
                return(null);
            }

            var settingBiz = new BizRankCollectorSettings();
            var setting    = settingBiz.GetSettings();

            var loginIdArray = jsonModel.BjModel.LoginID.Split(new string[] { setting.AbjIDSplitString }, StringSplitOptions.RemoveEmptyEntries);

            if (loginIdArray.Length == 1)
            {
                jsonModel.BjModel.LoginID2 = loginIdArray[0];
                jsonModel.BjModel.ChatID   = loginIdArray[0];
            }
            else if (loginIdArray.Length == 2)
            {
                jsonModel.BjModel.LoginID2 = loginIdArray[1];
                jsonModel.BjModel.ChatID   = loginIdArray[0];
            }

            var g5Biz  = new BizG5_member();
            var result = g5Biz.GetG5_memberModelsByAbjID(jsonModel.BjModel.LoginID2);

            if (result != null && result.Count > 0)
            {
                var member = result.FirstOrDefault();

                var level = member.mb_level;
                var date  = member.mb_3;
                DateTime.TryParse(date, out DateTime expireDate);
                var days = (DateTime.Now - expireDate).Days;

                if (level < 9 && loginIdArray.Length == 2)
                {
                    jsonModel.BjModel.CertificationFlag    = false;
                    jsonModel.BjModel.CertificationMessage = "잘못된 접근입니다.";
                }
                else if (level >= 4)
                {
                    jsonModel.BjModel.CertificationFlag = true;
                }
                else if (level < 4)
                {
                    jsonModel.BjModel.CertificationFlag    = false;
                    jsonModel.BjModel.CertificationMessage = "사용기간이 만료되어 프로그램이 종료 됩니다.";
                }
                if (string.IsNullOrEmpty(date) || days > 0)
                {
                    // 만료
                    jsonModel.BjModel.ExpireFlag    = true;
                    jsonModel.BjModel.ExpireMessage = "사용기간이 만료되어 프로그램이 종료 됩니다.";
                }
                else if (!string.IsNullOrEmpty(setting.ClientVersion) && setting.ClientVersion != jsonModel.BjModel.ClientVersion)
                {
                    jsonModel.BjModel.IsNewUpload    = true;
                    jsonModel.BjModel.VersionMessage = "새 버전이 업로드 되었습니다. \r\n사이트에서 새 버전을 다운받아주세요.";
                }

                jsonModel.BjModel.ExpireDate  = expireDate;
                jsonModel.BjModel.ClientLevel = member.mb_level;
            }
            else
            {
                jsonModel.BjModel.CertificationFlag    = false;
                jsonModel.BjModel.CertificationMessage = "승인되지 않은 아이디 입니다.";
                return(jsonModel);
            }

            return(jsonModel);
        }
示例#3
0
        private static void GoRankCollector(int pEndPage)
        {
            // 1. BJ 수집
            int endPage            = pEndPage;
            var categoryRankParser = new CategoryRankParser();
            var resultBjModels     = new List <RankBjModel>();

            foreach (RankingType rankingType in Enum.GetValues(typeof(RankingType)))
            {
                for (int i = 1; i <= endPage; i++)
                {
                    var bjModels = categoryRankParser.GetData(rankingType, i);

                    if (resultBjModels.Count <= 0)
                    {
                        resultBjModels.AddRange(bjModels);
                        continue;
                    }

                    foreach (var bj in bjModels)
                    {
                        //기존 BJ 없다면 새로 추가
                        if (!resultBjModels.Any(b => b.BjID == bj.BjID))
                        {
                            resultBjModels.Add(bj);
                            continue;
                        }

                        // 기존 BJ 있으면 기존 BJ에 담고 해당 랭크만 채우기
                        foreach (var resultBjModel in resultBjModels)
                        {
                            if (resultBjModel.BjID != bj.BjID)
                            {
                                continue;
                            }

                            categoryRankParser.SetTargetRank(bj, resultBjModel, rankingType);
                        }
                    }
                }
            }

            // 2. 사용자 수집
            var bjPagePaser     = new BjPagePaser();
            var resultUserModel = new List <RankUserModel>();
            var resultBjInfo    = new List <BjInfoModel>();

            // BJ 수집 리스트 루프 돌기
            foreach (var BjModel in resultBjModels)
            {
                // BJ 정보
                var BjInfo = bjPagePaser.GetBjInfo(BjModel);
                resultBjInfo.AddRange(BjInfo);

                // 열혈팬 Top20
                var bigFans = bjPagePaser.GetBigFans(BjModel.BjID);
                resultUserModel.AddRange(bigFans);

                // 서포터 Top20
                var supporters = bjPagePaser.GetSupporters(BjModel.BjID);
                resultUserModel.AddRange(supporters);
            }

            ;

            var bizSettings = new BizRankCollectorSettings();
            var Settings    = bizSettings.GetSettings();

            var bizBjRank = new BizBjRank(Settings);

            bizBjRank.SetInitBjValues();
            bizBjRank.SetBjModels(resultBjModels);

            foreach (var userModel in resultUserModel)
            {
                var bjModel = resultBjModels.Find(b => b.BjID == userModel.BjID);
                userModel.BjNic = bjModel.BjNick;
            }

            var bizUserRank = new BizUserRank(Settings);

            bizUserRank.SetInitUserValues();
            bizUserRank.SetUserModels(resultUserModel);
            bizUserRank.SetInitBjInfoValues();
            bizUserRank.SetBjInfoModels(resultBjInfo);

            bizSettings.SetAferSettings();
            ;

            var jsonModel = new JsonModel()
            {
                Text = "rfsStart"
            };
            var webApiCaller = new WebApiCaller();
            var result       = webApiCaller.RefreshAsync(jsonModel).ConfigureAwait(true);
        }