|
|
@@ -11,7 +11,7 @@ namespace molilian.core
|
|
|
/// 更新API调用日志(1天一次)
|
|
|
/// </summary>
|
|
|
/// <param name="intervalDay"></param>
|
|
|
- public static void DailyLogs(int intervalDay, string prefix = "", string channel = "all")
|
|
|
+ public static void DailyLogs_bak(int intervalDay, string prefix = "", string channel = "all")
|
|
|
{
|
|
|
int channelId = (int)TkChannelEnum.tb;
|
|
|
var db_prefix = channel switch
|
|
|
@@ -24,6 +24,7 @@ namespace molilian.core
|
|
|
DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
|
|
|
|
|
|
var accounts = TkPoolCore.List();
|
|
|
+ using var conn = DBContext.GetOpenConnection();
|
|
|
|
|
|
foreach (var account in accounts)
|
|
|
{
|
|
|
@@ -52,7 +53,7 @@ namespace molilian.core
|
|
|
.Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId", new { log_date, channel = channelId, accountId });
|
|
|
|
|
|
|
|
|
- var createArgs = new DBContext.Table("daily_logs")
|
|
|
+ var createArgs = new DBContext.Table(conn, "daily_logs")
|
|
|
|
|
|
.Add($"{db_prefix}total_count", total_count)
|
|
|
.Add($"{db_prefix}abandon_count", abandon_count)
|
|
|
@@ -87,12 +88,131 @@ namespace molilian.core
|
|
|
all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
|
|
|
all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
|
|
|
}
|
|
|
- var exist2 = new DBContext.Table("daily_logs")
|
|
|
+ var exist2 = new DBContext.Table(conn, "daily_logs")
|
|
|
.Fields("id,log_date")
|
|
|
.Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
|
|
|
new { log_date, channel = channelId, accountId = 0 });
|
|
|
|
|
|
- var createArgs2 = new DBContext.Table("daily_logs")
|
|
|
+ var createArgs2 = new DBContext.Table(conn, "daily_logs")
|
|
|
+ .Add($"{db_prefix}total_count", all_total_count)
|
|
|
+ .Add($"{db_prefix}abandon_count", all_abandon_count)
|
|
|
+ .Add($"{db_prefix}abandon_percentage", all_abandon_percentage)
|
|
|
+ .Add($"{db_prefix}success_count", all_success_count)
|
|
|
+ .Add($"{db_prefix}success_percentage", all_success_percentage)
|
|
|
+ .Add("last_time", DateTime.Now);
|
|
|
+
|
|
|
+ if (exist2 == null)
|
|
|
+ {
|
|
|
+ createArgs2.Add("channel", channelId)
|
|
|
+ .Add("accountId", 0)
|
|
|
+ .Add("accountName", "all")
|
|
|
+ .Add("log_date", log_date)
|
|
|
+ .Add("create_time", DateTime.Now)
|
|
|
+ .Create();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createArgs2.Where("id=@id", new { exist2.id }).Update();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void AllDailyLogs(int intervalDay, string prefix = "", string channel = "all")
|
|
|
+ {
|
|
|
+ DailyLogs(true, intervalDay, prefix, channel);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void NodeDailyLogs(int intervalDay, string prefix = "", string channel = "all")
|
|
|
+ {
|
|
|
+ DailyLogs(false, intervalDay, prefix, channel);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void DailyLogs(bool all_node, int intervalDay, string prefix = "", string channel = "all")
|
|
|
+ {
|
|
|
+ int channelId = (int)TkChannelEnum.tb;
|
|
|
+ var db_prefix = channel switch
|
|
|
+ {
|
|
|
+ "tool" => "tool_",
|
|
|
+ "jd" => "jd_parse_",
|
|
|
+ _ => prefix,
|
|
|
+ };
|
|
|
+
|
|
|
+ DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
|
|
|
+
|
|
|
+ var accounts = TkPoolCore.List();
|
|
|
+ using var conn = all_node ? CenterHub.GetOpenConnection() : DBContext.GetOpenConnection();
|
|
|
+ string tableName = all_node ? "center_daily_logs" : "daily_logs";
|
|
|
+
|
|
|
+ foreach (var account in accounts)
|
|
|
+ {
|
|
|
+ int accountId = account.id;
|
|
|
+ string accountName = $"{TkChannelEnum.tb}_{account.id}";
|
|
|
+
|
|
|
+ int total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
|
|
|
+ if (total_count == 0) accountName = account.name;
|
|
|
+
|
|
|
+ total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
|
|
|
+ if (total_count == 0) continue;
|
|
|
+
|
|
|
+ var success_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}", all_node);
|
|
|
+ var abandon_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}", all_node);
|
|
|
+ string success_percentage = string.Empty;
|
|
|
+ string abandon_percentage = string.Empty;
|
|
|
+
|
|
|
+ if (total_count > 0)
|
|
|
+ {
|
|
|
+ success_percentage = $"{success_count / (double)total_count * 100:f2}%";
|
|
|
+ abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
|
|
|
+ }
|
|
|
+
|
|
|
+ var exist = new DBContext.Table(tableName)
|
|
|
+ .Fields("id,log_date")
|
|
|
+ .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId", new { log_date, channel = channelId, accountId });
|
|
|
+
|
|
|
+
|
|
|
+ var createArgs = new DBContext.Table(conn, tableName)
|
|
|
+
|
|
|
+ .Add($"{db_prefix}total_count", total_count)
|
|
|
+ .Add($"{db_prefix}abandon_count", abandon_count)
|
|
|
+ .Add($"{db_prefix}abandon_percentage", abandon_percentage)
|
|
|
+ .Add($"{db_prefix}success_count", success_count)
|
|
|
+ .Add($"{db_prefix}success_percentage", success_percentage)
|
|
|
+ .Add("last_time", DateTime.Now);
|
|
|
+
|
|
|
+ if (exist == null)
|
|
|
+ {
|
|
|
+ createArgs.Add("channel", channelId)
|
|
|
+ .Add("accountId", accountId)
|
|
|
+ .Add("accountName", account.company)
|
|
|
+ .Add("log_date", log_date)
|
|
|
+ .Add("create_time", DateTime.Now)
|
|
|
+ .Create();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createArgs.Where("id=@id", new { exist.id }).Update();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int all_total_count = TkLogCore.GetTotal($":{prefix}total:{channel}:{log_date:yyyyMMdd}", all_node);
|
|
|
+ var all_success_count = TkLogCore.GetTotal($":{prefix}total:{channel}:success:{log_date:yyyyMMdd}", all_node);
|
|
|
+ var all_abandon_count = TkLogCore.GetTotal($":{prefix}total:{channel}:放弃转链:{log_date:yyyyMMdd}", all_node);
|
|
|
+
|
|
|
+ string all_success_percentage = string.Empty;
|
|
|
+ string all_abandon_percentage = string.Empty;
|
|
|
+ if (all_total_count > 0)
|
|
|
+ {
|
|
|
+ all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
|
|
|
+ all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
|
|
|
+ }
|
|
|
+ var exist2 = new DBContext.Table(conn, tableName)
|
|
|
+ .Fields("id,log_date")
|
|
|
+ .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
|
|
|
+ new { log_date, channel = channelId, accountId = 0 });
|
|
|
+
|
|
|
+ var createArgs2 = new DBContext.Table(conn, tableName)
|
|
|
.Add($"{db_prefix}total_count", all_total_count)
|
|
|
.Add($"{db_prefix}abandon_count", all_abandon_count)
|
|
|
.Add($"{db_prefix}abandon_percentage", all_abandon_percentage)
|
|
|
@@ -114,68 +234,6 @@ namespace molilian.core
|
|
|
createArgs2.Where("id=@id", new { exist2.id }).Update();
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
-
|
|
|
- -- 定义变量用于日期间隔
|
|
|
-SET @interval_days = 4;
|
|
|
-
|
|
|
--- 汇总所有账户的数据
|
|
|
-INSERT INTO daily_logs (
|
|
|
- channel, accountId, accountName, log_date, total_count, abandon_count, abandon_percentage, success_count, success_percentage, create_time, last_time
|
|
|
-)
|
|
|
-SELECT
|
|
|
- 0 AS channel,
|
|
|
- 0 AS accountId,
|
|
|
- 'all' AS accountName,
|
|
|
- DATE_SUB(CURDATE(), INTERVAL @interval_days DAY) AS log_date,
|
|
|
- COUNT(*) AS total_count,
|
|
|
- COALESCE(SUM(CASE WHEN message = '放弃转链' THEN 1 ELSE 0 END), 0) AS abandon_count,
|
|
|
- COALESCE(CONCAT(ROUND((SUM(CASE WHEN message = '放弃转链' THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2), '%'), 0) AS abandon_percentage,
|
|
|
- COALESCE(SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END), 0) AS success_count,
|
|
|
- COALESCE(CONCAT(ROUND((SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2), '%'), 0) AS success_percentage,
|
|
|
- NOW() AS create_time,
|
|
|
- NOW() AS last_time
|
|
|
-FROM tk_logs
|
|
|
-WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL @interval_days DAY)
|
|
|
- AND create_time < DATE_SUB(CURDATE(), INTERVAL @interval_days - 1 DAY)
|
|
|
-ON DUPLICATE KEY UPDATE
|
|
|
- total_count = VALUES(total_count),
|
|
|
- abandon_count = VALUES(abandon_count),
|
|
|
- abandon_percentage = VALUES(abandon_percentage),
|
|
|
- success_count = VALUES(success_count),
|
|
|
- success_percentage = VALUES(success_percentage),
|
|
|
- last_time = NOW();
|
|
|
-
|
|
|
--- 按渠道、账户分组的数据
|
|
|
-INSERT INTO daily_logs (
|
|
|
- channel, accountId, accountName, log_date, total_count, abandon_count, abandon_percentage, success_count, success_percentage, create_time, last_time
|
|
|
-)
|
|
|
-SELECT
|
|
|
- channel,
|
|
|
- accountId,
|
|
|
- accountName,
|
|
|
- DATE_SUB(CURDATE(), INTERVAL @interval_days DAY) AS log_date,
|
|
|
- COUNT(*) AS total_count,
|
|
|
- COALESCE(SUM(CASE WHEN message = '放弃转链' THEN 1 ELSE 0 END), 0) AS abandon_count,
|
|
|
- COALESCE(CONCAT(ROUND((SUM(CASE WHEN message = '放弃转链' THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2), '%'), 0) AS abandon_percentage,
|
|
|
- COALESCE(SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END), 0) AS success_count,
|
|
|
- COALESCE(CONCAT(ROUND((SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2), '%'), 0) AS success_percentage,
|
|
|
- NOW() AS create_time,
|
|
|
- NOW() AS last_time
|
|
|
-FROM tk_logs
|
|
|
-WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL @interval_days DAY)
|
|
|
- AND create_time < DATE_SUB(CURDATE(), INTERVAL @interval_days - 1 DAY)
|
|
|
-GROUP BY channel, accountId, accountName
|
|
|
-ON DUPLICATE KEY UPDATE
|
|
|
- total_count = VALUES(total_count),
|
|
|
- abandon_count = VALUES(abandon_count),
|
|
|
- abandon_percentage = VALUES(abandon_percentage),
|
|
|
- success_count = VALUES(success_count),
|
|
|
- success_percentage = VALUES(success_percentage),
|
|
|
- last_time = NOW();
|
|
|
- */
|
|
|
- //DBContext.Execute(sql, new { });
|
|
|
- //DBContext.Execute(sql2, new { });
|
|
|
}
|
|
|
|
|
|
public static void ApiCallStatistics(int intervalDay, TkChannelEnum channel, string prefix = "")
|