PddDailyLogs.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc.Controllers;
  3. using Microsoft.AspNetCore.Mvc.Filters;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using dodohold.core;
  9. using Dataoke;
  10. using System.Text.RegularExpressions;
  11. using Org.BouncyCastle.Ocsp;
  12. using System.Diagnostics;
  13. using TencentCloud.Fmu.V20191213.Models;
  14. using Microsoft.VisualBasic;
  15. using System.Text.Json;
  16. using static System.Runtime.InteropServices.JavaScript.JSType;
  17. using System.Security.Cryptography;
  18. using Google.Protobuf.WellKnownTypes;
  19. using Microsoft.Extensions.FileSystemGlobbing.Internal;
  20. using System.Threading.Channels;
  21. namespace molilian.core
  22. {
  23. public partial class PddUnionPlus
  24. {
  25. public static async Task DailyLogsAsync(int intervalDay)
  26. {
  27. TkChannelEnum channelEnum = TkChannelEnum.pdd;
  28. DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
  29. var accounts = PddPoolCore.List();
  30. using var conn = CenterHub.GetOpenConnection();
  31. int all_total_count = 0, all_success_count = 0, all_abandon_count = 0;
  32. foreach (var account in accounts)
  33. {
  34. //跳过隐藏的
  35. if (account.is_hide) continue;
  36. int accountId = account.id;
  37. string accountName = $"{channelEnum}_{account.id}";
  38. //if (account.is_hide) continue;
  39. int total_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:{log_date:yyyyMMdd}");
  40. if (total_count == 0) accountName = account.name;
  41. total_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:{log_date:yyyyMMdd}");
  42. if (total_count == 0) continue;
  43. var success_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:success:{log_date:yyyyMMdd}");
  44. var abandon_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
  45. string success_percentage = string.Empty;
  46. string abandon_percentage = string.Empty;
  47. if (total_count > 0)
  48. {
  49. success_percentage = $"{success_count / (double)total_count * 100:f2}%";
  50. abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
  51. }
  52. //all_total_count += total_count;
  53. //all_success_count += success_count;
  54. //all_abandon_count += abandon_count;
  55. var exist = new DBContext.Table(conn, "center_daily_logs")
  56. .Fields("id,log_date")
  57. .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
  58. new { log_date, channel = (int)channelEnum, accountId });
  59. var createArgs = new DBContext.Table(conn, "center_daily_logs")
  60. .Add($"pdd_parse_total_count", total_count)
  61. .Add($"pdd_parse_abandon_count", abandon_count)
  62. .Add($"pdd_parse_abandon_percentage", abandon_percentage)
  63. .Add($"pdd_parse_success_count", success_count)
  64. .Add($"pdd_parse_success_percentage", success_percentage)
  65. .Add("last_time", DateTime.Now);
  66. if (exist == null)
  67. {
  68. createArgs.Add("channel", (int)channelEnum)
  69. .Add("accountId", accountId)
  70. .Add("accountName", account.name)
  71. .Add("log_date", log_date)
  72. .Add("create_time", DateTime.Now)
  73. .Create();
  74. }
  75. else
  76. {
  77. createArgs.Where("id=@id", new { exist.id }).Update();
  78. }
  79. }
  80. all_total_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:{log_date:yyyyMMdd}");
  81. all_success_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:success:{log_date:yyyyMMdd}");
  82. all_abandon_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:放弃转链:{log_date:yyyyMMdd}");
  83. string all_success_percentage = string.Empty;
  84. string all_abandon_percentage = string.Empty;
  85. if (all_total_count > 0)
  86. {
  87. all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
  88. all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
  89. }
  90. var exist2 = new DBContext.Table(conn, "center_daily_logs")
  91. .Fields("id,log_date")
  92. .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
  93. new { log_date, accountId = 0 });
  94. var createArgs2 = new DBContext.Table(conn, "center_daily_logs")
  95. .Add($"pdd_parse_total_count", all_total_count)
  96. .Add($"pdd_parse_abandon_count", all_abandon_count)
  97. .Add($"pdd_parse_abandon_percentage", all_abandon_percentage)
  98. .Add($"pdd_parse_success_count", all_success_count)
  99. .Add($"pdd_parse_success_percentage", all_success_percentage)
  100. .Add("last_time", DateTime.Now);
  101. if (exist2 == null)
  102. {
  103. createArgs2.Add("channel", (int)channelEnum)
  104. .Add("accountId", 0)
  105. .Add("accountName", "all")
  106. .Add("log_date", log_date)
  107. .Add("create_time", DateTime.Now)
  108. .Create();
  109. }
  110. else
  111. {
  112. createArgs2.Where("id=@id", new { exist2.id }).Update();
  113. }
  114. }
  115. }
  116. }