using molilian.core; using dodohold.core; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Ocsp; using System.Text.Json; using System.Runtime.InteropServices; using System.Net; using System.Threading.Channels; using TencentCloud.Cdwch.V20200915.Models; using COSXML.Network; using System.Security.Cryptography; using System.Threading; using TencentCloud.Batch.V20170312.Models; namespace molilian.api.Controllers { [ApiController] [Route("[controller]_70160bd632/[action]")] public class TaskController : ControllerBase { protected IHttpContextAccessor _accessor; public TaskController(IHttpContextAccessor accessor) { _accessor = accessor; } [HttpGet] public async Task BatchInsertLogDB(int limit = 100) { int total = await TkLogCore.BatchInsertLogDBAsync(limit); return new APIResult(new { success = true, message = "ok", limit, total }); } [HttpGet] public async Task GetAaliyunBlance() { AliyunPoolCore core = new AliyunPoolCore(); core.GetBlances(); return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task GetSettleBills(int sleep = 2000) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { if (!account.enable_sync_order) continue; #if DEBUG if (13 != account.id) continue; #endif try { var alimama = new AlimamaPlus(account); total += alimama.GetSettleBills(sleep); } catch (Exception ex) { message = $"【收益接口异常】\t{account.name}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetHistoryOrders(int id, int sleep, DateTime startTime, DateTime endTime) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); if (id == 0) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { if (id != account.id) continue; try { //DateTime endTime = DateTime.Now; //DateTime startTime = endTime.AddDays(-90); if (account.id == 3) endTime = DateTime.Parse("2024-04-07"); var alimama = new AlimamaPlus(account); total += alimama.GetHistoryOrders(sleep, startTime, endTime); } catch (Exception ex) { message = $"【历史订单接口异常】[{account.id}]{account.company}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetIncyOrders(int sleep = 2000) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { #if DEBUG if (account.id != 17) continue; #endif if (!account.enable_sync_order) continue; try { var alimama = new AlimamaPlus(account); total += alimama.GetIncyOrders(sleep); } catch (Exception ex) { message = $"【新增订单接口异常】[{account.id}]{account.company}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetOrdersByAdZone(int id, long adzoneId, int sleep, DateTime startTime, DateTime endTime) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { #if DEBUG if (account.id != id) continue; #endif try { var alimama = new AlimamaPlus(account); total += alimama.GetOrdersByAdZone(adzoneId, startTime, endTime, sleep); } catch (Exception ex) { message = $"【新增订单接口异常adzone】[{account.id}]{account.company}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetHistoryRefundOrders(int id, int sleep, DateTime startTime, DateTime endTime) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); if (id == 0) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { if (id != account.id) continue; try { //DateTime endTime = DateTime.Now; //DateTime startTime = endTime.AddDays(-90); if (account.id == 3) endTime = DateTime.Parse("2024-04-07"); var alimama = new AlimamaPlus(account); total += alimama.GetHistoryRefundOrders(sleep, startTime, endTime); } catch (Exception ex) { message = $"【维权订单接口异常】[{account.id}]{account.company}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetIncyRefundOrders(int sleep = 2000) { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; int total = 0; foreach (var account in list) { #if DEBUG if (account.id != 17) continue; #endif if (!account.enable_sync_order) continue; try { var alimama = new AlimamaPlus(account); total += alimama.GetIncyRefundOrders(sleep); } catch (Exception ex) { message = $"【维权订单接口异常】[{account.id}]{account.company}\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok", total }); } [HttpGet] public async Task GetViolationuWarning() { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; foreach (var account in list) { try { var alimama = new AlimamaPlus(account); alimama.GetViolationuWarning(); } catch (Exception ex) { message = $"【报表接口异常】GetViolationuWarning\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task DailyLogs(int intervalDay = 1) { try { //本节点统计 AlimamaPlus.NodeDailyLogs(intervalDay, "parse_", "tb"); AlimamaPlus.NodeDailyLogs(intervalDay, "coupon_", "tb"); AlimamaPlus.NodeDailyLogs(intervalDay); //第三方老的统计 if (CenterHub.IsCenter) { JdUnionPlus.DailyLogs(intervalDay); ToolParsePlus.DailyLogs(intervalDay); //中心服务器统计 AlimamaPlus.AllDailyLogs(intervalDay, "parse_", "tb"); AlimamaPlus.AllDailyLogs(intervalDay, "coupon_", "tb"); KsUnionPlus.DailyLogs(intervalDay); PddUnionPlus.DailyLogs(intervalDay); AlimamaPlus.AllDailyLogs(intervalDay); } } catch (Exception ex) { string message = $"【报表接口异常】DailyLogs\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task ApiCallStatistics(int intervalDay = 1) { try { #if DEBUG AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.pdd); #else AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.tb); AlimamaPlus.ApiCallStatistics(2, intervalDay, TkChannelEnum.tb); AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.jd); AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.pdd); #endif } catch (Exception ex) { string message = $"【API报表更新异常】ApiCallStatistics\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task DailyTable(int days = 3) { try { for (int i = 0; i < days; i++) { if (CenterHub.IsCenter) { string table_suffix = DateTime.Now.AddDays(i).ToString("yyyyMMdd"); string sql = $"CREATE TABLE IF NOT EXISTS tk_parse_logs_{table_suffix} LIKE tk_parse_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS jd_parse_logs_{table_suffix} LIKE jd_parse_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS ks_parse_logs_{table_suffix} LIKE ks_parse_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS dy_parse_logs_{table_suffix} LIKE dy_parse_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS tk_promotion_logs_{table_suffix} LIKE tk_promotion_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS deeplink_parse_logs_{table_suffix} LIKE deeplink_parse_logs;"; DBContext.Execute(sql, null); sql = $"CREATE TABLE IF NOT EXISTS pdd_parse_logs_{table_suffix} LIKE pdd_parse_logs;"; DBContext.Execute(sql, null); } else { string table_suffix = DateTime.Now.AddDays(i).ToString("yyyyMMdd"); string sql = $"CREATE TABLE IF NOT EXISTS tk_cps_logs_{table_suffix} LIKE tk_cps_logs;"; DBContext.Execute(sql, null); } } TkLogCore.save_dailys_log = true; RedisHelper.Set("turn:save_dailys_log", 1, 86400); } catch (Exception ex) { string message = $"【创建数据标错误】\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); } return new APIResult(new { success = true, message = "ok" }); } //[HttpGet] //public async Task ApiCallStatistics(int intervalDay = 1) //{ // try // { // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.tb); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.tb, "parse_"); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.tb, "coupon_"); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.wemeet, "parse_"); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.bdpan, "parse_"); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.dy, "parse_"); // AlimamaPlus.ApiCallStatistics(intervalDay, TkChannelEnum.jd, "parse_"); // } // catch (Exception ex) // { // string message = $"【报表接口异常】ApiCallStatistics\n{ex.Message}\n{ex.StackTrace}"; // NotifyCore.Notify(new NifyMessage // { // message = message, // priority = NifyMessagePriority.high, // tags = ["red_circle"] // }); // } // return new APIResult(new { success = true, message = "ok" }); //} [HttpGet] public async Task GetDrawBalance() { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; foreach (var account in list) { if (!account.enable_sync_order) continue; try { var alimama = new AlimamaPlus(account); alimama.GetDrawBalance(); } catch (Exception ex) { message = $"【报表接口异常】GetDrawBalance\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task FastReport() { string message = string.Empty; var list = TkPoolCore.List(); if (list != null) { foreach (var account in list) { try { account.current_daily_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.tb, account.id, DateTime.Now.ToString("yyyyMMdd")); account.current_hourly_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.tb, account.id, DateTime.Now.ToString("yyyyMMddHH")); new DBContext.Table("tk_pool") .Add("current_hourly_calls", account.current_hourly_calls) .Add("current_daily_calls", account.current_daily_calls) .Where("id=@id", new { account.id }) .Update(); } catch (Exception ex) { message = $"【TB计数异常】SaveCalls\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } if (!account.enable_sync_order) continue; try { var alimama = new AlimamaPlus(account); alimama.SaveReportOverview(); } catch (Exception ex) { message = $"【报表接口异常】FastReport\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } } string filter = ""; var jd_list = new DBContext.Table("jd_pool").Where(filter, null).Select(); if (jd_list != null) { bool any_jd_changed = false; foreach (var account in jd_list) { bool changed = false; try { account.current_daily_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.jd, account.id, DateTime.Now.ToString("yyyyMMdd")); account.current_hourly_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.jd, account.id, DateTime.Now.ToString("yyyyMMddHH")); changed = true; any_jd_changed = true; } catch (Exception ex) { message = $"【JD计数异常】SaveCalls\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } if (!account.status) continue; if (!string.IsNullOrEmpty(account.cookies)) { try { var plus = new JdUnionPlus(account); var data = await plus.queryTodaySpreadEffectData(); account.today_clickNum = data.clickNum; account.today_cosFee = data.cosFee; account.today_cosPrice = data.cosPrice; account.today_finishCosFee = data.finishCosFee; account.today_finishCosPrice = data.finishCosPrice; account.today_finishOrderNum = data.finishOrderNum; account.today_orderNum = data.orderNum; changed = true; any_jd_changed = true; } catch (Exception ex) { if (ex.Message.Contains("no login")) { account.status = false; JdPoolCore.Disabled(account.id, account.name, ex.Message); } message = $"【JD报表接口异常】{account.id}:{account.name}\tqueryTodaySpreadEffectData\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(message); continue; } } if (changed) JdPoolCore.Update(account); } if (any_jd_changed) JdPoolCore.Refresh(); } var pdd_list = new DBContext.Table("pdd_pool").Where(filter, null).Select(); if (pdd_list != null) { bool any_pdd_changed = false; foreach (var account in pdd_list) { bool changed = false; try { account.current_daily_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.pdd, account.id, DateTime.Now.ToString("yyyyMMdd")); account.current_hourly_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.pdd, account.id, DateTime.Now.ToString("yyyyMMddHH")); changed = true; any_pdd_changed = true; } catch (Exception ex) { message = $"【Pdd计数异常】SaveCalls\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } if (changed) PddPoolCore.Update(account); } if (any_pdd_changed) PddPoolCore.Refresh(); } var cps_list = new DBContext.Table("cps_links") .Where("status=@status", new { status = 1 }) .Select(); if (cps_list != null) { bool any_cps_changed = false; foreach (var link in cps_list) { bool changed = false; try { link.current_daily_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.cps, link.id, DateTime.Now.ToString("yyyyMMdd")); link.current_hourly_calls = RiskControlCore.GetAllNodesCalls(TkChannelEnum.cps, link.id, DateTime.Now.ToString("yyyyMMddHH")); changed = true; any_cps_changed = true; } catch (Exception ex) { message = $"【Cps计数异常】SaveCalls\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } if (changed) CpsPoolCore.Update(link); } if (any_cps_changed) CpsPoolCore.Refresh(); } await EndPointCore.NotifyReload(true); return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task SaveReport() { string message = string.Empty; var list = TkPoolCore.List(); if (list != null) { foreach (var account in list) { if (!account.enable_sync_order) continue; #if DEBUG if (account.id != 5) continue; #endif try { var alimama = new AlimamaPlus(account); alimama.SaveReportHourtrend(DateTime.Now.AddDays(-1)); alimama.SaveReportHourtrend(DateTime.Now); if (DateTime.Now.Hour >= 12 && DateTime.Now.Hour < 16) { DateTime date = DateTime.Now.AddDays(-1); alimama.FixReport(date); } } catch (Exception ex) { message = $"【报表接口异常】SaveReport\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task JdSaveReport() { string message = string.Empty; var jd_list = new DBContext.Table("jd_pool").Where("", null).Select(); if (jd_list != null) { DateTime startDate = DateTime.Now.AddDays(-89); DateTime endDate = DateTime.Now.AddDays(-1); foreach (var account in jd_list) { if (!account.status) continue; #if DEBUG startDate = DateTime.Parse("2024-07-31"); endDate = DateTime.Parse("2024-07-31"); if (account.id != 15) continue; #endif if (account.is_hide) continue; if (!string.IsNullOrEmpty(account.cookies)) { try { var plus = new JdUnionPlus(account); _ = await plus.querySpreadEffectData(startDate, endDate); _ = await plus.queryEstimateCommList(); } catch (Exception ex) { if (ex.Message.Contains("no login")) { JdPoolCore.Disabled(account.id, account.name, ex.Message); } message = $"【JD报表接口异常】{account.id}:{account.name}\tquerySpreadEffectData\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(message); continue; } } } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task PddSaveReport() { string message = string.Empty; var pdd_list = new DBContext.Table("pdd_pool").Where("cookie_status=1", new { }).Select(); if (pdd_list != null) { DateTime startDate = DateTime.Now.AddDays(-91); DateTime endDate = DateTime.Now.AddDays(-1); foreach (var account in pdd_list) { if (account.is_hide) continue; if (!string.IsNullOrEmpty(account.cookies)) { try { var plus = new PddUnionPlus(account); await plus.queryEstimateRevenueList(startDate, endDate); } catch (Exception ex) { if (ex.Message.Contains("43001:会话已过期")) { PddPoolCore.CookieDisabled(account.id); } message = $"【PDD报表接口异常】{account.id}:{account.name}\tqueryEstimateRevenueList\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task FixReport(int id, string dt) { if (!DateTime.TryParse(dt, out DateTime date)) { return new APIResult(new { success = false, message = "日期错误", }); } var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; foreach (var account in list) { if (id != account.id) continue; try { var alimama = new AlimamaPlus(account); while (date.Date < DateTime.Now.Date) { alimama.FixReport(date); date = date.AddDays(1); } } catch (Exception ex) { message = $"【报表接口异常】SaveReport\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public ActionResult RenewCookie(string name) { var account = new DBContext.Table("tk_pool").Get("name=@name", new { name }); if (account == null) return new APIResult(new { success = false, message = "没有有效账号", }); var alimama = new AlimamaPlus(account); (bool success, string message) = alimama.RenewCookie(); return new APIResult(new { success, message }); } [HttpGet] public ActionResult Reload() { RiskControlCore.Refresh(); TkConfigCore.Refresh(); EndPointCore.Refresh(); ProxyNodesCore.Refresh(); TkPoolCore.Refresh(); VeapiPoolCore.Refresh(); ApiAccountCore.Refresh(); DataokeCore.Refresh(); JdPoolCore.Refresh(); PddPoolCore.Refresh(); PangolinPoolCore.Refresh(); ReduPoolCore.Refresh(); //ElePoolCore.Refresh(); //MeituanPoolCore.Refresh(); CpsPoolCore.Refresh(); DeeplinkParseRuleCore.Refresh(); return new APIResult(new { success = true, message = "ok", }); } [HttpGet] public ActionResult ReloadAccount() { RiskControlCore.Refresh(); EndPointCore.Refresh(); ProxyNodesCore.Refresh(); TkPoolCore.Refresh(); VeapiPoolCore.Refresh(); JdPoolCore.Refresh(); PddPoolCore.Refresh(); //ElePoolCore.Refresh(); //MeituanPoolCore.Refresh(); CpsPoolCore.Refresh(); return new APIResult(new { success = true, message = "ok", }); } [HttpGet] public async Task CheckDeepUrl(int accountid) { var postContent = "88✔7Fi43dJwWpV£ https://m.tb.cn/h.g92hfR4JLgn7yvG MF7997 我分享给你了一个超赞的内容,快来看看吧"; var channel = "tb"; var ip = "127.0.0.1"; var oaid = "test-oaid"; bool success = false; string message; //============================== 放弃转链-没有匹配账号 ============================== TkPoolDTO? account = TkPoolCore.GetOne(accountid); if (account == null) { return new APIResult(new { success = false, message = "没有匹配账号", }); } var alimama = new AlimamaPlus(account); TkDataDTO result = new TkDataDTO(); string url = AlimamaPlus.GetLink(postContent); if (string.IsNullOrEmpty(url)) { return new APIResult(new { success = false, message = "无效URL", }); } WebProxy proxy = ProxyNodesCore.RandomOne(account.nodeName); (success, string content) = await alimama.GetDesiredUrlAsync(proxy, url); if (content.Contains("霸下通用 web 页面-验证码")) { message = "霸下验证码"; } else { message = content; } return new APIResult(new { success = true, message, }); } } }