public IActionResult DataComparer()
        {
            var dbContext = new MkhxCoreContext();

            ViewData["IsDevelopment"] = Startup.Environment.IsDevelopment();
            return(View(dbContext.V_GameData));
        }
        public IActionResult AllCardTable()
        {
            var dbContext = new MkhxCoreContext();
            var dm        = GameDataManager.Get(Request);
            var cardList  = dm.CardList;
            var skillList = dm.SkillList;

            ViewData["skillList"] = skillList;
            return(View(cardList));
        }
Пример #3
0
        public IActionResult HeroHp(string server)
        {
            var dbContext = new MkhxCoreContext();

            if (string.IsNullOrEmpty(server))
            {
                server = Request.Cookies["server"];
            }
            return(new JsonResult(dbContext.V_HeroHp.Where(m => m.Server == server).Select(m => new { m.Server, m.Level, m.Hp }).OrderByDescending(m => m.Level)));
        }
Пример #4
0
        public IActionResult Index()
        {
            var dbContext = new MkhxCoreContext();
            var s         = Request.Cookies["server"];

            return(View(
                       dbContext.V_Article
                       .Where(m => string.IsNullOrEmpty(m.Server) || (" " + m.Server + " ").Contains(" " + s + " ") || s[0] == 'T')
                       .OrderByDescending(m => m.CreateTime)
                       ));
        }
        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秒
            }
        }
Пример #6
0
        public IActionResult Index()
        {
            try
            {
                var dm        = GameDataManager.Get(Request);
                var dbContext = new MkhxCoreContext();
                var PvCounter = dbContext.PvCounter;

                ViewData["V_Article"] = dbContext.V_Article;

                ViewData["GameDataManager"] = dm;
                ViewData["PvCounter"]       = PvCounter;

                return(View());
            }
            catch (NeedVersionSelectedException)
            {
                return(View("Blank"));
            }
        }
Пример #7
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 ShowCacheStatus()
        {
            var V_GameData = new MkhxCoreContext().V_GameData;

            var s = new List <string>
            {
                "CACHE STATUS FROM " + Program.StartTime,
                "________________________________",
                ""
            };

            foreach (var gdm in GameDataManager.GameDataList)
            {
                s.Add(gdm.Key.ToString());

                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.allcards);
                    var version = gdm.Value.allcards;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"C"}\t{version}\t{time}\t{server}");
                }
                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.allrunes);
                    var version = gdm.Value.allrunes;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"R"}\t{version}\t{time}\t{server}");
                }
                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.allskills);
                    var version = gdm.Value.allskills;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"S"}\t{version}\t{time}\t{server}");
                }
                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.allmapstage);
                    var version = gdm.Value.allmapstage;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"MS"}\t{version}\t{time}\t{server}");
                }
                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.allmaphardstage);
                    var version = gdm.Value.allmaphardstage;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"MHS"}\t{version}\t{time}\t{server}");
                }
                {
                    var v       = V_GameData.Where(m => m.Version == gdm.Value.keywords);
                    var version = gdm.Value.keywords;
                    var time    = v.Max(m => m.Time);
                    var server  = string.Join(",", v.GroupBy(m => m.Server).Select(m => m.Key).OrderBy(m => m));
                    s.Add($"{"KW"}\t{version}\t{time}\t{server}");
                }

                s.Add("");
            }

            return(new ContentResult
            {
                ContentType = "text/plain",
                Content = string.Join("\r\n", s),
            });
        }
        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)));
                    }
                }
            }
Пример #11
0
        public IActionResult JourneyDeck(string server)
        {
            var dbContext = new MkhxCoreContext();

            if (string.IsNullOrEmpty(server))
            {
                return(new JsonResult(dbContext.V_JourneyDeck.GroupBy(m => m.Server).ToDictionary(m => m.Key, m => m.GroupBy(n => n.DefendPlayerName).ToDictionary(n => n.Key, n => n))));
            }
            else
            {
                var dm        = GameDataManager.Get(Request);
                var cardList  = dm.CardList;
                var runeList  = dm.RuneList;
                var skillList = dm.SkillList;

                return(new JsonResult(dbContext.V_JourneyDeck.Where(m => m.Server == server).GroupBy(m => m.DefendPlayerName).ToDictionary(n => n.Key, n => n.Select(i => new
                {
                    i.DefendPlayerName,
                    DefendPlayerCards = i.DefendPlayerCards.Split(',').Select(m => m.Split('_')).Select(c => new
                    {
                        Card = cardList.FirstOrDefault(m => m.CardId + "" == c[0] || m.CardName == c[0]),
                        Level = int.Parse(c[1]),
                        BonusSkill = skillList.FirstOrDefault(m => m.SkillId + "" == c[2] || m.Name == c[2]),
                        Attack = double.Parse(c[3]),
                        Hp = double.Parse(c[4]),
                    }),
                    DefendPlayerRunes = i.DefendPlayerRunes.Split(',').Select(m => m.Split('_')).Select(r => new
                    {
                        Rune = runeList.FirstOrDefault(m => m.RuneId + "" == r[0] || m.RuneName == r[0]),
                        Level = int.Parse(r[1]),
                    }),
                }).Select(i => new
                {
                    i.DefendPlayerName,
                    DefendPlayerCards = i.DefendPlayerCards.Select(c => new
                    {
                        c.Card.CardId,
                        c.Card.CardName,
                        c.Card.Color,
                        c.Card.Race,
                        c.Level,
                        BonusSkill = c.BonusSkill == null ? null : new
                        {
                            c.BonusSkill.SkillId,
                            c.BonusSkill.Name,
                            c.BonusSkill.SkillCategory,
                        },
                        c.Attack,
                        c.Hp,
                    }),
                    DefendPlayerRunes = i.DefendPlayerRunes.Select(r => new
                    {
                        r.Rune.RuneId,
                        r.Rune.RuneName,
                        r.Rune.Color,
                        r.Rune.Property,
                        r.Level,
                    }),
                    HpSum = i.DefendPlayerCards.Sum(h => h.Hp)
                }).OrderBy(i => i.HpSum))));
            }
        }
        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"));
            }
        }
Пример #13
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(间隔);
            }
        }