private static void GitHubIssueUpdate(object target)
        {
            var dbContext = new MkhxCoreContext();
            var wc        = new WebClient();

            while (true)
            {
                try
                {
                    var GitHubIssue = dbContext.Enum.First(m => m.Type == "GitHubIssue");

                    System.Console.ForegroundColor = System.ConsoleColor.Cyan;
                    System.Console.WriteLine();
                    System.Console.WriteLine("下载 GitHub Issue 页面");
                    System.Console.WriteLine();
                    System.Console.ResetColor();

                    var html = wc.DownloadString("https://github.com/HumJ0218/HumphreyJ.Netcore.MKHX/issues");

                    System.Console.ForegroundColor = System.ConsoleColor.Green;
                    System.Console.WriteLine();
                    System.Console.WriteLine("下载完成,字符长度 " + html.Length);
                    System.Console.WriteLine();
                    System.Console.ResetColor();


                    GitHubIssue.Desc         = html;
                    GitHubIssue.Value1Format = System.DateTime.Now.ToString();

                    dbContext.SaveChanges();

                    System.Console.ForegroundColor = System.ConsoleColor.Green;
                    System.Console.WriteLine();
                    System.Console.WriteLine("已更新 GitHub Issue 页面缓存");
                    System.Console.WriteLine();
                    System.Console.ResetColor();

                    Thread.Sleep(500000);   //  缓存成功后增加间隔500秒
                }
                catch (System.Exception ex)
                {
                    System.Console.ForegroundColor = System.ConsoleColor.Red;
                    System.Console.WriteLine();
                    System.Console.WriteLine("更新 GitHub Issue 页面缓存出错");
                    System.Console.WriteLine();
                    System.Console.WriteLine(ex);
                    System.Console.WriteLine();
                    System.Console.ResetColor();
                }
                Thread.Sleep(60000);    //  每轮缓存间隔60秒
            }
        }
Пример #2
0
        public IActionResult Detail(string id)
        {
            var dbContext = new MkhxCoreContext();
            var g         = Guid.TryParse(id, out Guid guid);
            var article   = g ? dbContext.Article.FirstOrDefault(m => m.Id == guid) : dbContext.Article.FirstOrDefault(m => m.Title.ToLower() == id.ToLower());

            if (article == null)
            {
                return(new NotFoundResult());
            }
            else
            {
                {
                    var ba = article.Id.ToByteArray();
                    var c  = (char)(ba[4] * 0x100 + ba[5]);

                    var va = Request.Cookies["va"] ?? "";
                    if (!va.Contains(c))
                    {
                        article.AccessCount++;
                        dbContext.SaveChanges();
                        Response.Cookies.Append("va", va + c);
                    }
                }

                switch (article.Content.Split('|')[0].ToLower())
                {
                case "{url}":
                {
                    var url = article.Content.Split('|')[1].Trim();
                    return(new RedirectResult(url, true));
                }

                default:
                {
                    return(View("Detail", article));
                }
                }
            }
        }
        public IActionResult Detail(string id)
        {
            try
            {
                var dbContext = new MkhxCoreContext();
                var dm        = GameDataManager.Get(Request);
                var cardList  = dm.CardList;

                ParsedCardData card = cardList.FirstOrDefault(m => m.CardId + "" == id || m.CardName == id);
                ViewData["id"] = id;
                if (card == null)
                {
                    return(new NotFoundResult());
                }
                else
                {
                    if (!int.TryParse(id, out int CardId))  //  如果使用了名称选取,则跳转为编号选取,避免Edge浏览器Header编码问题
                    {
                        return(new RedirectResult($"/carddata/{card.CardId}", false));
                    }

                    {
                        var picture = dbContext.Picture.ToArray().Where(m => m.Name.Split(' ').Contains(card.CardName)).ToArray();
                        ViewData["picture"] = picture;
                    }
                    {
                        var SummonerCards = dm.CardData_GetAllSummonerCards(card);
                        ViewData["SummonerCards"] = SummonerCards;
                    }
                    {
                        var SummoneeCards = dm.CardData_GetAllSummoneeCards(card);
                        ViewData["SummoneeCards"] = SummoneeCards;
                    }
                    {
                        var ShowInMapStageLevel = dm.CardData_GetShowInMapStageLevel(card);
                        ViewData["ShowInMapStageLevel"] = ShowInMapStageLevel;
                    }
                    {
                        var RewardInMapStage     = dm.CardData_GetRewardInMapStage(card);
                        var ChipRewardInMapStage = dm.CardData_GetChipRewardInMapStage(card);
                        var list = new List <KeyValuePair <ParsedMapStageData, int> >();
                        list.AddRange(RewardInMapStage);
                        list.AddRange(ChipRewardInMapStage);
                        ViewData["RewardInMapStage"] = list.Distinct().ToArray();
                    }
                    {
                        var RewardInMapStageLevel     = dm.CardData_GetRewardInMapStageLevel(card);
                        var ChipRewardInMapStageLevel = dm.CardData_GetChipRewardInMapStageLevel(card);
                        var list = new List <KeyValuePair <ParsedMapStageDetailLevelData, int> >();
                        list.AddRange(RewardInMapStageLevel);
                        list.AddRange(ChipRewardInMapStageLevel);
                        ViewData["RewardInMapStageLevel"] = list.Distinct().ToArray();
                    }
                    {
                        var vc = Request.Cookies["vc"] ?? "";
                        if (!vc.Contains((char)(card.CardId + 1024)))
                        {
                            Response.Cookies.Append("vc", vc + ((char)(card.CardId + 1024)));
                            dbContext.PvCounter.Add(new PvCounter
                            {
                                Id   = Guid.NewGuid(),
                                Time = DateTime.Now,
                                Ip   = Request.HttpContext.Connection.RemoteIpAddress.ToString(),
                                Ua   = Request.Headers["User-Agent"],
                                Type = "card",
                                Name = card.CardName,
                            });
                            var timeDelete = DateTime.Now.AddDays(-7);
                            dbContext.PvCounter.RemoveRange(dbContext.PvCounter.Where(m => m.Time < timeDelete));
                            dbContext.SaveChanges();
                        }
                    }

                    return(View(card));
                }
            }
            catch (NeedVersionSelectedException)
            {
                return(View("Blank"));
            }
        }
        public IActionResult Detail(string id, string all)
        {
            try
            {
                var dbContext = new MkhxCoreContext();
                var dm        = GameDataManager.Get(Request);

                ViewData["AffectTypeContent"] = AffectTypeContent.List;
                ViewData["GameDataManager"]   = dm;

                {
                    var listall = dm.SkillList.Where(m => m.Abbreviation == id || m.SkillId + "" == id || m.Name == id);

                    var count = listall.Count();
                    if (count < 1)
                    {
                        return(new NotFoundResult());
                    }

                    var skill = listall.First();
                    if (!int.TryParse(id, out int SkillId)) //  如果使用了名称选取,则跳转为编号选取,避免Edge浏览器Header编码问题
                    {
                        return(new RedirectResult($"/skilldata/{skill.SkillId}{(string.IsNullOrEmpty(all) ? "" : $"?all={all}")}", false));
                    }
                    if (count == 1)
                    {
                        listall = dm.SkillList.Where(m => m.Abbreviation == skill.Abbreviation);
                    }

                    ViewData["listall"] = listall;

                    {
                        var sr = Request.Cookies["sr"] ?? "";
                        if (!sr.Contains((char)(skill.SkillId + 1024)))
                        {
                            Response.Cookies.Append("sr", sr + ((char)(skill.SkillId + 1024)));
                            dbContext.PvCounter.Add(new PvCounter
                            {
                                Id   = Guid.NewGuid(),
                                Time = DateTime.Now,
                                Ip   = Request.HttpContext.Connection.RemoteIpAddress.ToString(),
                                Ua   = Request.Headers["User-Agent"],
                                Type = "skill",
                                Name = skill.Abbreviation,
                            });
                            var timeDelete = DateTime.Now.AddDays(-7);
                            dbContext.PvCounter.RemoveRange(dbContext.PvCounter.Where(m => m.Time < timeDelete));
                            dbContext.SaveChanges();
                        }
                    }

                    if (string.IsNullOrEmpty(all))
                    {
                        //  选择特定技能
                        return(View(new ParsedSkillData[] { skill }));
                    }
                    else
                    {
                        //  选择所有同系列技能
                        return(View(listall.OrderBy(m => m.SkillId)));
                    }
                }
            }
        public IActionResult Detail(string id)
        {
            try
            {
                var dbContext = new MkhxCoreContext();
                var dm        = GameDataManager.Get(Request);
                var runeList  = dm.RuneList;

                ParsedRuneData rune = runeList.FirstOrDefault(m => m.RuneId + "" == id || m.RuneName == id);

                if (rune == null)
                {
                    return(new NotFoundResult());
                }
                else
                {
                    if (!int.TryParse(id, out int RuneId))  //  如果使用了名称选取,则跳转为编号选取,避免Edge浏览器Header编码问题
                    {
                        return(new RedirectResult($"/runedata/{rune.RuneId}", false));
                    }

                    {
                        var ShowInMapStageLevel = dm.RuneData_GetShowInMapStageLevel(rune);
                        ViewData["ShowInMapStageLevel"] = ShowInMapStageLevel;
                    }
                    {
                        var RewardInMapStage = dm.RuneData_GetRewardInMapStage(rune);
                        var list             = new List <KeyValuePair <ParsedMapStageData, int> >();
                        list.AddRange(RewardInMapStage);
                        ViewData["RewardInMapStage"] = list.Distinct().ToArray();
                    }
                    {
                        var RewardInMapStageLevel = dm.RuneData_GetRewardInMapStageLevel(rune);
                        var list = new List <KeyValuePair <ParsedMapStageDetailLevelData, int> >();
                        list.AddRange(RewardInMapStageLevel);
                        ViewData["RewardInMapStageLevel"] = list.Distinct().ToArray();
                    }
                    {
                        var vr = Request.Cookies["vr"] ?? "";
                        if (!vr.Contains((char)(rune.RuneId + 1024)))
                        {
                            Response.Cookies.Append("vr", vr + ((char)(rune.RuneId + 1024)));
                            dbContext.PvCounter.Add(new PvCounter
                            {
                                Id   = Guid.NewGuid(),
                                Time = DateTime.Now,
                                Ip   = Request.HttpContext.Connection.RemoteIpAddress.ToString(),
                                Ua   = Request.Headers["User-Agent"],
                                Type = "rune",
                                Name = rune.RuneName,
                            });
                            var timeDelete = DateTime.Now.AddDays(-7);
                            dbContext.PvCounter.RemoveRange(dbContext.PvCounter.Where(m => m.Time < timeDelete));
                            dbContext.SaveChanges();
                        }
                    }
                    return(View(rune));
                }
            }
            catch (NeedVersionSelectedException)
            {
                return(View("Blank"));
            }
        }
Пример #6
0
        private static void UploadData()
        {
            var 务器     = Config["服务器"];
            var 本地数据路径 = new DirectoryInfo(Config["本地数据路径"]);
            var 间隔     = int.Parse(Config["上传间隔"]);
            var DB用户名  = Config["DB用户名"];
            var DB密码   = Config["DB密码"];
            var OSSAKI = Config["OSSAKI"];
            var OSSAKS = Config["OSSAKS"];

            OssHelper.IsDevelopment   = true;
            OssHelper.AccessKeyID     = OSSAKI;
            OssHelper.AccessKeySecret = OSSAKS;

            var dataContext = new MkhxCoreContext(DB用户名, DB密码);

            while (true)
            {
                WriteText("\r\n");
                WriteText(DateTime.Now + "\t");
                WriteInfo("更新数据..." + "\r\n");

                var files = 本地数据路径.GetFiles("*.txt");
                foreach (var fi in files)
                {
                    var FileName = fi.Name.Split('_')[0].ToLower();

                    switch (FileName)
                    {
                    case "allcards":
                    case "allrunes":
                    case "allskills":
                    case "allmapstage":
                    case "allmaphardstage":
                    case "keywords":
                    {
                        try
                        {
                            var Version = GetVersion(fi);

                            WriteText(DateTime.Now + "\t");
                            WriteText(FileName + "\t");
                            WriteText(Version + "\t");

                            var newest = dataContext.GameDataFiles.Where(m => m.Server == 务器 && m.FileName == FileName).OrderByDescending(m => m.Time).FirstOrDefault();

                            if (newest?.Version != Version)
                            {
                                var key = "data/" + Version + ".json";
                                if (!OssHelper.Exist(key))
                                {
                                    OssHelper.Upload(key, fi);
                                }

                                var GameDataFiles = new GameDataFiles
                                {
                                    Id       = Guid.NewGuid(),
                                    Version  = Version,
                                    FileName = FileName,
                                    Server   = 务器,
                                    Time     = fi.LastWriteTime,
                                    Remark   = "",
                                };
                                dataContext.GameDataFiles.Add(GameDataFiles);
                                dataContext.SaveChanges();
                                WriteSuccess("成功" + "\r\n");

                                Console.Title = $"服务器{Config["服务器"]} 更新时间:{fi.LastWriteTime}";
                            }
                            else
                            {
                                WriteWarning("不需要更新" + "\r\n");
                            }
                        }
                        catch (Exception ex)
                        {
                            WriteError("失败 - " + ex + "\r\n");
                        }
                        break;
                    }
                    }
                }

                var Status     = "GameDataLastUpdateTime";
                var UpdateTime = DateTime.Now.ToString();
                var Data       = dataContext.Enum.First(m => m.Type == "GameDataLastUpdateTime");
                Data.Desc         = Status;
                Data.Value1Format = UpdateTime;
                dataContext.SaveChanges();

                WriteText(DateTime.Now + "\t");
                WriteInfo("数据更新完毕" + "\r\n");
                WriteText("\r\n");

                Thread.Sleep(间隔);
            }
        }