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)); }
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))); }
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秒 } }
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")); } }
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))); } } }
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")); } }
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(间隔); } }