cps.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using dodohold.core;
  2. using CSRedis;
  3. using System.Data;
  4. namespace molilian.core
  5. {
  6. public partial class TkLogCore
  7. {
  8. static string queue_cps_key = "queue:cps_logs";
  9. public static int task_insert_parse_cps_logs(IDbConnection connection, IDbTransaction transaction, int limit, CSRedisClient redis)
  10. {
  11. int total = 0;
  12. for (int i = 0; i < limit; i++)
  13. {
  14. var data = redis.LPop<UnionCpsDTO>(queue_cps_key);
  15. if (data == null) break;
  16. if (_test_oaid.Equals(data.oaid) ||
  17. data.ip.Contains("127.0.0"))
  18. {
  19. var test_data = data.Convert2Json().Convert2Object<TestUnionCpsDTO>();
  20. connection.Insert(test_data);
  21. }
  22. else
  23. {
  24. connection.Insert(data);
  25. if (data.success)
  26. {
  27. var success_data = data.Convert2Json().Convert2Object<SuccessUnionCpsDTO>();
  28. connection.Insert(success_data);
  29. }
  30. }
  31. total++;
  32. }
  33. return total;
  34. }
  35. public static async Task CpsLogAsync(UnionCpsDTO response, AlimamaPlus? alimamaPlus = null)
  36. {
  37. try
  38. {
  39. var ts = DateTime.Now - response.create_time;
  40. response.elapsedTime = (int)ts.TotalMilliseconds;
  41. _ = RedisHelper.RPushAsync(queue_cps_key, response);
  42. if (response.success) saveClientRequestTotal(response.channel, response.ip, response.oaid);
  43. if (!response.ip.Contains("127.0.0"))
  44. {
  45. saveCpsCache(response.channel, response.accountId,
  46. response.success, response.message, response.reason);
  47. }
  48. }
  49. catch (Exception ex)
  50. {
  51. _ = new LoggerLibrary("unionCps", "database_error")
  52. .Info(response.rawContent)
  53. .Info(response.Convert2Json())
  54. .Info(ex.Message, ex.StackTrace)
  55. .SaveAsync();
  56. }
  57. }
  58. private static void saveCpsCache(string channel, int accountId, bool success, string message, string reason)
  59. {
  60. saveAccountCpsCache("all", success, message, reason);
  61. saveAccountCpsCache($"{channel}", success, message, reason);
  62. if (accountId != 0)
  63. {
  64. saveAccountCpsCache($"{channel}_{accountId}", success, message, reason);
  65. }
  66. }
  67. private static void saveAccountCpsCache(string flagName, bool success, string message, string reason)
  68. {
  69. RedisHelper.IncrBy($":cps_total:{flagName}:{DateTime.Now:yyyyMM}");
  70. RedisHelper.IncrBy($":cps_total:{flagName}:{DateTime.Now:yyyyMMdd}");
  71. RedisHelper.IncrBy($":cps_total:{flagName}:{DateTime.Now:yyyyMMddHH}");
  72. string result = success ? "success" : "fail";
  73. RedisHelper.IncrBy($":cps_total:{flagName}:{result}:{DateTime.Now:yyyyMM}");
  74. RedisHelper.IncrBy($":cps_total:{flagName}:{result}:{DateTime.Now:yyyyMMdd}");
  75. RedisHelper.IncrBy($":cps_total:{flagName}:{result}:{DateTime.Now:yyyyMMddHH}");
  76. if (!string.IsNullOrEmpty(message))
  77. {
  78. RedisHelper.SAdd($":cps_total:{flagName}:message:{DateTime.Now:yyyyMM}", message);
  79. RedisHelper.SAdd($":cps_total:{flagName}:message:{DateTime.Now:yyyyMMdd}", message);
  80. RedisHelper.SAdd($":cps_total:{flagName}:message:{DateTime.Now:yyyyMMddHH}", message);
  81. RedisHelper.IncrBy($":cps_total:{flagName}:{message}:{DateTime.Now:yyyyMM}");
  82. RedisHelper.IncrBy($":cps_total:{flagName}:{message}:{DateTime.Now:yyyyMMdd}");
  83. RedisHelper.IncrBy($":cps_total:{flagName}:{message}:{DateTime.Now:yyyyMMddHH}");
  84. RedisHelper.IncrBy($":cps_total:{flagName}:message:{message}:{DateTime.Now:yyyyMM}");
  85. RedisHelper.IncrBy($":cps_total:{flagName}:message:{message}:{DateTime.Now:yyyyMMdd}");
  86. RedisHelper.IncrBy($":cps_total:{flagName}:message:{message}:{DateTime.Now:yyyyMMddHH}");
  87. }
  88. if (!string.IsNullOrEmpty(reason))
  89. {
  90. RedisHelper.SAdd($":cps_total:{flagName}:reason:{DateTime.Now:yyyyMM}", reason);
  91. RedisHelper.SAdd($":cps_total:{flagName}:reason:{DateTime.Now:yyyyMMdd}", reason);
  92. RedisHelper.SAdd($":cps_total:{flagName}:reason:{DateTime.Now:yyyyMMddHH}", reason);
  93. RedisHelper.IncrBy($":cps_total:{flagName}:{reason}:{DateTime.Now:yyyyMM}");
  94. RedisHelper.IncrBy($":cps_total:{flagName}:{reason}:{DateTime.Now:yyyyMMdd}");
  95. RedisHelper.IncrBy($":cps_total:{flagName}:{reason}:{DateTime.Now:yyyyMMddHH}");
  96. RedisHelper.IncrBy($":cps_total:{flagName}:reason:{reason}:{DateTime.Now:yyyyMM}");
  97. RedisHelper.IncrBy($":cps_total:{flagName}:reason:{reason}:{DateTime.Now:yyyyMMdd}");
  98. RedisHelper.IncrBy($":cps_total:{flagName}:reason:{reason}:{DateTime.Now:yyyyMMddHH}");
  99. }
  100. }
  101. }
  102. }