/// <summary> /// 更新最佳选项到db /// </summary> /// <param name="session"></param> private static void UpdateCorrectOptions(Session session) { var kingRequest = KingRequest.FromSession(session); var kingAnswer = KingAnswer.FromSession(session); if (kingAnswer == null || kingAnswer.IsValidate() == false) { return; } var context = KingContextTable.TakeByRequest(kingRequest); if (context == null) { return; } using (var sqlLite = new SqlliteContext()) { var quiz = context.KingQuestion.data.quiz; var quizAnswer = sqlLite.QuizAnswer.Find(quiz); if (quizAnswer != null) { quizAnswer.Answer = context.GetAnswer(kingAnswer); sqlLite.SaveChanges(); Console.WriteLine($"更新正确答案到db:{Environment.NewLine}{quizAnswer}"); } } }
public async Task <ActionResult> Index() { using (var db = new SqlliteContext()) { var proxyHost = this.GetProxyHost(); var model = new IndexModel { ProxyIpEndpoint = $"{proxyHost}:{AppConfig.ProxyPort}", WsIpEndpoint = $"{proxyHost}:{AppConfig.WsPort}", ClientsIp = await db.UserIpAddress.ToArrayAsync() }; model.ClientsIp = model.ClientsIp .Where(item => item.IpAddress != null) .Select(item => item.FixIpAddress()) .ToArray(); return(this.View("Index", model)); } }
/// <summary> /// 测试搜索引擎 /// </summary> static void TestSearchEngine() { var ran = new Random(); var sqlLite = new SqlliteContext(); var datas = sqlLite.QuizAnswer.ToArray().OrderBy(item => ran.Next()).ToArray(); datas.AsParallel().ForAll(item => { Interlocked.Increment(ref current); var question = item.ToKingQuestion(); var best = Searcher.Search(question); var isCorrect = best?.Option == item.Answer; if (isCorrect == true) { Interlocked.Increment(ref correct); } lock (syncRoot) { Console.WriteLine(item.Quiz); if (isCorrect == false) { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"猜测答案:{best?.Option}"); Console.WriteLine($"正确答案:{item.Answer}"); if (isCorrect == false) { Console.ForegroundColor = ConsoleColor.Gray; } var correctRrate = ((double)correct / (double)current * 100d).ToString("0.00"); Console.Title = $"进度:{current}/{datas.Length} 准确率:{correctRrate}%"; Console.WriteLine(); } }); }
public async Task <ActionResult> ImportDataAsync() { if (this.Request.Files.Length == 0) { return(this.RedirectToIndex()); } var file = this.Request.Files.First(); if (file.FileName.EndsWith(".db", StringComparison.OrdinalIgnoreCase) == false) { return(this.RedirectToIndex()); } var dbFile = $"data\\import_{Environment.TickCount}.db"; System.IO.File.WriteAllBytes(dbFile, file.Stream); using (var sourceDb = new SqlliteContext(dbFile, false)) { using (var targetDb = new SqlliteContext()) { var datas = await sourceDb.QuizAnswer.ToArrayAsync(); foreach (var data in datas) { if (await targetDb.QuizAnswer.AnyAsync(item => item.Quiz == data.Quiz) == false) { targetDb.QuizAnswer.Add(data); } } var count = await targetDb.SaveChangesAsync(); Console.WriteLine($"成功的导入了{count}条数据.."); } } System.IO.File.Delete(dbFile); return(this.RedirectToIndex()); }
/// <summary> /// 查找问题答案并保存到db /// </summary> /// <param name="kingQuestion">问题</param> /// <returns></returns> private static int SearchOptionIndex(KingQuestion kingQuestion) { using (var sqlLite = new SqlliteContext()) { var quiz = kingQuestion.data.quiz; var quizAnswer = sqlLite.QuizAnswer.FirstOrDefault(item => item.Quiz == quiz); if (quizAnswer != null) { Console.WriteLine($"从db中找到记录:{Environment.NewLine}{quizAnswer}"); var answer = quizAnswer.Answer?.Trim(); return(Array.FindIndex(kingQuestion.data.options, item => item?.Trim() == answer)); } // 搜索 var best = Searcher.Search(kingQuestion); if (best == null) { Console.WriteLine($"找不到答案:{kingQuestion.data.quiz}"); return(-1); } if (sqlLite.QuizAnswer.Any(item => item.Quiz == quiz) == false) { quizAnswer = new QuizAnswer { Answer = best.Option, Quiz = quiz, OptionsJson = JsonConvert.SerializeObject(kingQuestion.data.options) }; sqlLite.QuizAnswer.Add(quizAnswer); sqlLite.SaveChanges(); Console.WriteLine($"保存网络答案到db:{Environment.NewLine}{quizAnswer}"); } return(best.Index); } }
/// <summary> /// 异步登录 /// </summary> /// <param name="name"></param> /// <returns></returns> private async Task <bool> LoginAsync(string name) { if (string.IsNullOrEmpty(name) == true) { return(false); } using (var db = new SqlliteContext()) { var userIpAddress = await db.UserIpAddress.FindAsync(name); if (userIpAddress == null) { return(false); } var clientIp = Request.Headers.TryGet <string>("ClientIpAddress"); userIpAddress.IpAddress = clientIp; await db.SaveChangesAsync(); Console.WriteLine($"用户登录:{name} ip为{clientIp}"); return(true); } }