| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076 |
- using dodohold.core;
- using Google.Protobuf.WellKnownTypes;
- using System.Text.Json;
- using TencentCloud.Cdn.V20180606.Models;
- using TencentCloud.Tse.V20201207.Models;
- using static molilian.core.ChartDataCore;
- namespace molilian.core
- {
- public partial class AlimamaPlus
- {
- /// <summary>
- /// 更新API调用日志(1天一次)
- /// </summary>
- /// <param name="intervalDay"></param>
- public static async Task DailyLogs_bak(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 = await TkPoolCore.ListAsync();
- using var conn = DBContext.GetOpenConnection();
- foreach (var account in accounts)
- {
- int accountId = account.id;
- string accountName = $"{TkChannelEnum.tb}_{account.id}";
- int total_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
- if (total_count == 0) accountName = account.name;
- total_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
- if (total_count == 0) continue;
- var success_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}");
- var abandon_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
- 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("daily_logs")
- .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, "daily_logs")
- .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 = await TkLogCore.GetTotalAsync($":{prefix}total:{channel}:{log_date:yyyyMMdd}");
- var all_success_count = await TkLogCore.GetTotalAsync($":{prefix}total:{channel}:success:{log_date:yyyyMMdd}");
- var all_abandon_count = await TkLogCore.GetTotalAsync($":{prefix}total:{channel}:放弃转链:{log_date:yyyyMMdd}");
- 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, "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(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 async Task AllDailyLogsAsync(int intervalDay, string prefix = "", string channel = "all")
- {
- await DailyLogsAsync(true, intervalDay, prefix, channel);
- }
- public static async Task NodeDailyLogsAsync(int intervalDay, string prefix = "", string channel = "all")
- {
- await DailyLogsAsync(false, intervalDay, prefix, channel);
- }
- public static async Task DailyLogsAsync(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_",
- "ks" => "ks_parse_",
- "pdd" => "pdd_parse_",
- "dy" => "dy_parse_",
- _ => prefix,
- };
- DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
- var accounts = await TkPoolCore.ListAsync();
- using var conn = all_node ? CenterHub.GetOpenConnection() : DBContext.GetOpenConnection();
- string tableName = all_node ? "center_daily_logs" : "daily_logs";
- string tableName2 = all_node ? "center_daily_chat_data" : "daily_chat_data";
- foreach (var account in accounts)
- {
- if (!account.enable_call_stats) continue;
- int accountId = account.id;
- string accountName = $"{TkChannelEnum.tb}_{account.id}";
- int total_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
- if (total_count == 0) accountName = account.name;
- total_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
- if (total_count == 0) continue;
- var success_count = await TkLogCore.GetTotalAsync($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}", all_node);
- var abandon_count = await TkLogCore.GetTotalAsync($":{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 = await TkLogCore.GetTotalAsync($":{prefix}total:{channel}:{log_date:yyyyMMdd}", all_node);
- var all_success_count = await TkLogCore.GetTotalAsync($":{prefix}total:{channel}:success:{log_date:yyyyMMdd}", all_node);
- var all_abandon_count = await TkLogCore.GetTotalAsync($":{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 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)
- .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", 0)
- .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();
- }
- //jd_parse_total
- //tool_total
- //total
- //coupon_total
- //parse_total
- var chatData = await GetTaobaoDataAsync($"{prefix}total", "", $"{log_date:yyyyMMdd}");
- //tableName2
- }
- public static async Task<DBContext.Table> FillLinkTypeDataAsync(DBContext.Table update, int data_type, DateTime report_date, TkChannelEnum channel)
- {
- long req_other_aff_num = 0;//1
- long req_goods_num = 0;//2
- long req_live_num = 0;//3
- long req_video_num = 0;///4
- long req_shop_num = 0;//5
- long req_base_num = 0;//6
- long req_note_num = 0;//7
- int resp_deeplink_num = 0;
- try
- {
- switch (channel)
- {
- case TkChannelEnum.tb:
- string tableName = $"tk_parse_logs_{report_date:yyyyMMdd}";
- string exist_sql = @$"SELECT IF( EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_name = '{tableName}'), 1, 0) AS table_exists;";
- int exist_table = DBContext.ExecuteScalar<int>(exist_sql);
- if (exist_table == 1)
- {
- var linkTypeTotal = new DBContext.Table(tableName)
- .Fields("linkType, count(*) AS total")
- .GroupBy("linkType")
- .Select<dynamic>();
- foreach (var t in linkTypeTotal)
- {
- int linkType = t.linkType;
- long total = t.total;
- switch (linkType)
- {
- case 1: req_other_aff_num = total; break;
- case 2: req_goods_num = total; break;
- case 3: req_live_num = total; break;
- case 4: req_video_num = total; break;
- case 5: req_shop_num = total; break;
- case 6: req_base_num = total; break;
- case 7: req_note_num = total; break;
- }
- }
- }
- string total_key = data_type switch
- {
- 1 => "parse_total",
- 2 or _ => "coupon_total",
- };
- string[] deeplink_keys = ["home", "success", "fail"];
- string accountName = "all";
- foreach (var keyname in deeplink_keys)
- {
- string cacheKey = $":{total_key}:dp_{keyname}:{accountName}:{report_date:yyyyMMdd}";
- int value = await TkLogCore.GetTotalAsync(cacheKey);
- if (value == 0) continue;
- resp_deeplink_num += value;
- }
- break;
- }
- }
- catch (Exception e)
- {
- }
- update.Add("req_other_aff_num", req_other_aff_num);
- update.Add("req_goods_num", req_goods_num);
- update.Add("req_live_num", req_live_num);
- update.Add("req_video_num", req_video_num);
- update.Add("req_shop_num", req_shop_num);
- update.Add("req_base_num", req_base_num);
- update.Add("req_note_num", req_note_num);
- update.Add("resp_deeplink_num", resp_deeplink_num);
- return update;
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="data_type">1转链 2优惠券</param>
- /// <param name="intervalDay"></param>
- /// <param name="channel"></param>
- public static async Task ApiCallStatisticsAsync(int data_type, int intervalDay, TkChannelEnum channel)
- {
- DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
- var endpoint = data_type == 1 ? EndPointCore.GetParseAdmin() : EndPointCore.GetCouponAdmin();
- if (endpoint == null || string.IsNullOrEmpty(endpoint.db_server)) return;
- using var conn = EndPointCore.GetDbConnection(endpoint.db_server);
- using var center_conn = CenterHub.GetOpenConnection();
- //v_jd_spread_report
- var record = new DBContext.Table(center_conn, "api_call_report_dailys")
- .Fields("id, report_date, read_num")
- .Get<dynamic>("report_date=@log_date AND platform=@platform AND data_type=@data_type",
- new { log_date, platform = channel, data_type });
- var update = new DBContext.Table(center_conn, "api_call_report_dailys")
- .Add("data_type", data_type)
- .Add("platform", channel)
- .Add("is_show", 1)
- .Add("report_date", log_date)
- .Add("last_time", DateTime.Now);
- switch (channel)
- {
- case TkChannelEnum.tb:
- {
- var exist_report_dailys = new DBContext.Table(conn, "v_tk_report_dailys")
- .Get<dynamic>("report_date=@log_date", new { log_date });
- if (exist_report_dailys != null)
- {
- update.Add("uclk_uv", exist_report_dailys.uclk_uv_56)
- .Add("uclk_pv", exist_report_dailys.uclk_pv_56)
- .Add("pay_ord_num", exist_report_dailys.pay_ord_num_56)
- .Add("order_ord_num", exist_report_dailys.order_ord_num)
- .Add("pay_ord_amt", exist_report_dailys.pay_ord_amt_56)
- .Add("pay_tk_disp_tfee", exist_report_dailys.pay_tk_disp_tfee_56)
- .Add("pay_ord_uv", exist_report_dailys.pay_ord_uv_56)
- .Add("eff_ord_num", exist_report_dailys.eff_ord_num)
- .Add("eff_ord_amt", exist_report_dailys.eff_ord_amt)
- .Add("eff_tk_disp_tfee", exist_report_dailys.eff_tk_disp_tfee);
- }
- var exist = new DBContext.Table(center_conn, "center_daily_logs")
- .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
- new { log_date, channel, accountId = 0 });
- if (exist != null)
- {
- if (data_type == 1)
- {
- update.Add("total_count", exist.parse_total_count)
- .Add("abandon_count", exist.parse_abandon_count)
- .Add("success_count", exist.parse_success_count);
- }
- if (data_type == 2)
- {
- update.Add("total_count", exist.coupon_total_count)
- .Add("abandon_count", exist.coupon_abandon_count)
- .Add("success_count", exist.coupon_success_count);
- }
- }
- break;
- }
- case TkChannelEnum.jd:
- {
- var exist_report_dailys = new DBContext.Table(conn, "v_jd_spread_report")
- .Get<dynamic>("report_date=@log_date", new { log_date });
- if (exist_report_dailys != null)
- {
- update.Add("uclk_uv", 0)
- .Add("pay_ord_uv", 0)//付款人数
- .Add("uclk_pv", exist_report_dailys.clickNum) //点击量 点击次数
- .Add("pay_tk_disp_tfee", exist_report_dailys.cosFee)//预估收入 付款预估收入
- .Add("pay_ord_amt", exist_report_dailys.cosPrice) //付款金额
- .Add("pay_ord_num", exist_report_dailys.orderNum)
- .Add("order_ord_num", 0)
- .Add("eff_ord_amt", exist_report_dailys.cosPrice) //有效订单金额 有效订单金额
- .Add("eff_ord_num", exist_report_dailys.orderNum) //有效付款笔数
- .Add("eff_tk_disp_tfee", exist_report_dailys.cosFee); //有效付款预估收入 预估收入
- }
- var exist = new DBContext.Table(center_conn, "center_daily_logs")
- .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
- new { log_date, channel, accountId = 0 });
- if (exist != null)
- {
- update.Add("total_count", exist.jd_parse_total_count)
- .Add("abandon_count", exist.jd_parse_abandon_count)
- .Add("success_count", exist.jd_parse_success_count);
- }
- break;
- }
- case TkChannelEnum.pdd:
- {
- var exist_report_dailys = new DBContext.Table(conn, "v_pdd_estimate_revenue")
- .Get<dynamic>("report_date=@log_date", new { log_date });
- if (exist_report_dailys != null)
- {
- decimal feeAmount = Math.Round(0.01m * (decimal)exist_report_dailys.feeAmount, 2);
- decimal orderAmount = Math.Round(0.01m * (decimal)exist_report_dailys.orderAmount, 2);
- update.Add("uclk_uv", 0)
- .Add("pay_ord_uv", 0)//付款人数
- .Add("uclk_pv", 0) //点击量 点击次数
- .Add("pay_tk_disp_tfee", feeAmount)//预估收入 付款预估收入
- .Add("pay_ord_amt", orderAmount) //付款金额
- .Add("pay_ord_num", exist_report_dailys.orderNum)
- .Add("order_ord_num", 0)
- .Add("eff_ord_amt", orderAmount) //有效订单金额 有效订单金额
- .Add("eff_ord_num", exist_report_dailys.orderNum) //有效付款笔数
- .Add("eff_tk_disp_tfee", feeAmount); //有效付款预估收入 预估收入
- }
- var exist = new DBContext.Table(center_conn, "center_daily_logs")
- .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
- new { log_date, channel, accountId = 0 });
- if (exist != null)
- {
- update.Add("total_count", exist.pdd_parse_total_count)
- .Add("abandon_count", exist.pdd_parse_abandon_count)
- .Add("success_count", exist.pdd_parse_success_count);
- }
- break;
- }
- }
- if (data_type == 1)
- {
- //todo 只有转链需要处理,优惠券和京东(未上线)暂不处理
- update = await FillLinkTypeDataAsync(update, data_type, log_date, channel);
- }
- if (record == null)
- {
- update.Add("read_num", 0).Add("create_time", DateTime.Now).Create();
- }
- else
- {
- update.Add("read_num", record.read_num).Where("id=@id", new { record.id }).Update();
- }
- }
- //public static void ApiCallStatistics(int intervalDay, TkChannelEnum channel, string prefix = "")
- //{
- // DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
- // var accounts = TkPoolCore.List();
- // foreach (var account in accounts)
- // {
- // int accountId = account.id;
- // string accountName = $"{channel}_{account.id}";
- // int total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
- // if (total_count == 0) continue;
- // var success_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}");
- // var abandon_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
- // 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("api_call_statistics")
- // .Fields("id,log_date")
- // .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
- // new { log_date, channel, accountId });
- // var createArgs = new DBContext.Table("api_call_statistics")
- // .Add($"{prefix}total_count", total_count)
- // .Add($"{prefix}abandon_count", abandon_count)
- // .Add($"{prefix}abandon_percentage", abandon_percentage)
- // .Add($"{prefix}success_count", success_count)
- // .Add($"{prefix}success_percentage", success_percentage)
- // .Add("last_time", DateTime.Now);
- // if (exist == null)
- // {
- // createArgs.Add("channel", channel)
- // .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.ToString()}:{log_date:yyyyMMdd}");
- // var all_success_count = TkLogCore.GetTotal($":{prefix}total:{channel.ToString()}:success:{log_date:yyyyMMdd}");
- // var all_abandon_count = TkLogCore.GetTotal($":{prefix}total:{channel.ToString()}:放弃转链:{log_date:yyyyMMdd}");
- // 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("api_call_statistics")
- // .Fields("id,log_date")
- // .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
- // new { log_date, channel, accountId = 0 });
- // var createArgs2 = new DBContext.Table("api_call_statistics")
- // .Add($"{prefix}total_count", all_total_count)
- // .Add($"{prefix}abandon_count", all_abandon_count)
- // .Add($"{prefix}abandon_percentage", all_abandon_percentage)
- // .Add($"{prefix}success_count", all_success_count)
- // .Add($"{prefix}success_percentage", all_success_percentage)
- // .Add("last_time", DateTime.Now);
- // if (exist2 == null)
- // {
- // createArgs2.Add("channel", channel)
- // .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();
- // }
- //}
- /// <summary>
- /// 事实动态接口(5分钟一次)
- /// </summary>
- /// <param name="date"></param>
- public async void SaveReportOverview()
- {
- DateTime date = DateTime.Now;
- TkReportDTO result = new TkReportDTO();
- try
- {
- string t = $"{date.Convert2UnixTimestamp(true)}";
- string dt = date.ToString("yyyy-MM-dd");
- string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.overview.json?" +
- $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_overview&startDate={dt}&endDate={dt}&fixPeriod=1d";
- var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
- .AddHeaders("X-Requested-With", "XMLHttpRequest")
- .AddHeaders("Cookie", _cookies);
- #if DEBUG
- #else
- client.Proxy = _proxy;
- #endif
- if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
- var response = client.Request(url);
- var body = response.Body();
- var root = body.Convert2JsonElement();
- int resultCode = root.Read<int>("resultCode", 0);
- bool success = root.Read("success", false);
- if (!success)
- {
- _ = new LoggerLibrary("report", "error")
- .Info(url, body)
- .SaveAsync();
- var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
- if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
- {
- return;
- }
- //{"success":false,"resultCode":500,"bizErrorDesc":"For input string: \"null\"","bizErrorCode":400}
- throw new Exception(body);
- }
- var data = root.ElementRead("data").ElementRead("data");
- result.eff_ord_num = data.Read<int>("eff_ord_num", 0);
- result.eff_ord_amt = data.Read<decimal>("eff_ord_amt", 0);
- result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
- result.uclk_uv_56 = data.Read<int>("uclk_uv_56", 0);
- result.uclk_pv_56 = data.Read<int>("uclk_pv_56", 0);
- result.uclt_uv_56 = data.Read<int>("uclt_uv_56", 0);
- result.ucart_uv_56 = data.Read<int>("ucart_uv_56", 0);
- result.dep_ord_num_56 = data.Read<int>("dep_ord_num_56", 0);
- result.dep_ord_dep_amt_56 = data.Read<decimal>("dep_ord_dep_amt_56", 0);
- result.pay_ord_num_56 = data.Read<int>("pay_ord_num_56", 0);
- result.pay_ord_amt_56 = data.Read<decimal>("pay_ord_amt_56", 0);
- result.pay_tk_disp_tfee_56 = data.Read<decimal>("pay_tk_disp_tfee_56", 0);
- result.pay_ord_uv_56 = data.Read<int>("pay_ord_uv_56", 0);
- result.sett_ord_num_56 = data.Read<int>("sett_ord_num_56", 0);
- result.sett_ord_amt_56 = data.Read<decimal>("sett_ord_amt_56", 0);
- result.sett_tk_disp_tfee_56 = data.Read<decimal>("sett_tk_disp_tfee_56", 0);
- DateTime report_date = date.Date;
- if (report_date == DateTime.Now.Date)
- {
- await RiskControlCore.SaveIncomeAmtAsync(TkChannelEnum.tb, $"{_accountId}", result.eff_tk_disp_tfee);
- await EachSaveReportOverviewAsync(report_date.AddHours(DateTime.Now.Hour), "tk_report_hourtrend", result);
- await EachSaveReportOverviewAsync(report_date, "tk_report", result);
- }
- }
- catch (Exception ex) { throw; }
- }
- private async Task EachSaveReportOverviewAsync(DateTime report_date, string tableName, TkReportDTO data)
- {
- var exist = new DBContext.Table(tableName)
- .Fields("id, report_date")
- .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
- new { report_date, accountId = _accountId });
- var createArgs = new DBContext.Table(tableName)
- .Add("uclk_uv_56", data.uclk_uv_56)
- .Add("uclk_pv_56", data.uclk_pv_56)
- .Add("uclt_uv_56", data.uclt_uv_56)
- .Add("ucart_uv_56", data.ucart_uv_56)
- .Add("dep_ord_num_56", data.dep_ord_num_56)
- .Add("dep_ord_dep_amt_56", data.dep_ord_dep_amt_56)
- .Add("pay_ord_num_56", data.pay_ord_num_56)
- .Add("pay_ord_amt_56", data.pay_ord_amt_56)
- .Add("pay_tk_disp_tfee_56", data.pay_tk_disp_tfee_56)
- .Add("pay_ord_uv_56", data.pay_ord_uv_56)
- .Add("sett_ord_num_56", data.sett_ord_num_56)
- .Add("sett_ord_amt_56", data.sett_ord_amt_56)
- .Add("sett_tk_disp_tfee_56", data.sett_tk_disp_tfee_56)
- .Add("eff_ord_num", data.eff_ord_num)
- .Add("eff_ord_amt", data.eff_ord_amt)
- .Add("eff_tk_disp_tfee", data.eff_tk_disp_tfee);
- string data_suffix = report_date.ToString("yyyyMMdd");
- if ("tk_report_hourtrend".Equals(tableName))
- {
- data_suffix = report_date.ToString("yyyyMMddHH");
- }
- string accountName = $"{TkChannelEnum.tb}_{_accountId}";
- int total_count = await TkLogCore.GetTotalAsync($":total:{accountName}:{data_suffix}");
- int success_count = 0, abandon_count = 0;
- string success_percentage = string.Empty, abandon_percentage = string.Empty;
- if (total_count > 0)
- {
- success_count = await TkLogCore.GetTotalAsync($":total:{accountName}:success:{data_suffix}");
- abandon_count = await TkLogCore.GetTotalAsync($":total:{accountName}:放弃转链:{data_suffix}");
- if (total_count > 0)
- {
- success_percentage = $"{success_count / (double)total_count * 100:f2}%";
- abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
- }
- }
- createArgs.Add("total_count", total_count);
- createArgs.Add("success_count", success_count);
- createArgs.Add("abandon_count", abandon_count);
- createArgs.Add("success_percentage", success_percentage);
- createArgs.Add("abandon_percentage", abandon_percentage);
- int parse_total_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:{data_suffix}");
- int parse_success_count = 0, parse_abandon_count = 0;
- string parse_success_percentage = string.Empty, parse_abandon_percentage = string.Empty;
- if (parse_total_count > 0)
- {
- parse_success_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:success:{data_suffix}");
- parse_abandon_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:放弃转链:{data_suffix}");
- if (parse_total_count > 0)
- {
- parse_success_percentage = $"{parse_success_count / (double)parse_total_count * 100:f2}%";
- parse_abandon_percentage = $"{parse_abandon_count / (double)parse_total_count * 100:f2}%";
- }
- }
- createArgs.Add("parse_total_count", parse_total_count);
- createArgs.Add("parse_success_count", parse_success_count);
- createArgs.Add("parse_abandon_count", parse_abandon_count);
- createArgs.Add("parse_success_percentage", parse_success_percentage);
- createArgs.Add("parse_abandon_percentage", parse_abandon_percentage);
- int coupon_total_count = await TkLogCore.GetTotalAsync($":coupon_total:{accountName}:{data_suffix}", false);
- int coupon_success_count = 0, coupon_abandon_count = 0;
- string coupon_success_percentage = string.Empty, coupon_abandon_percentage = string.Empty;
- if (coupon_total_count > 0)
- {
- coupon_success_count = await TkLogCore.GetTotalAsync($":coupon_total:{accountName}:success:{data_suffix}", false);
- coupon_abandon_count = await TkLogCore.GetTotalAsync($":coupon_total:{accountName}:放弃转链:{data_suffix}", false);
- if (coupon_total_count > 0)
- {
- coupon_success_percentage = $"{coupon_success_count / (double)coupon_total_count * 100:f2}%";
- coupon_abandon_percentage = $"{coupon_abandon_count / (double)coupon_total_count * 100:f2}%";
- }
- }
- createArgs.Add("coupon_total_count", coupon_total_count);
- createArgs.Add("coupon_success_count", coupon_success_count);
- createArgs.Add("coupon_abandon_count", coupon_abandon_count);
- createArgs.Add("coupon_success_percentage", coupon_success_percentage);
- createArgs.Add("coupon_abandon_percentage", coupon_abandon_percentage);
- int tool_total_count = await TkLogCore.GetTotalAsync($":tool_total:{accountName}:{data_suffix}");
- int tool_success_count = 0, tool_abandon_count = 0;
- string tool_success_percentage = string.Empty, tool_abandon_percentage = string.Empty;
- if (tool_total_count > 0)
- {
- tool_success_count = await TkLogCore.GetTotalAsync($":tool_total:{accountName}:success:{data_suffix}");
- tool_abandon_count = await TkLogCore.GetTotalAsync($":tool_total:{accountName}:放弃转链:{data_suffix}");
- if (tool_total_count > 0)
- {
- tool_success_percentage = $"{tool_success_count / (double)tool_total_count * 100:f2}%";
- tool_abandon_percentage = $"{tool_abandon_count / (double)tool_total_count * 100:f2}%";
- }
- }
- createArgs.Add("tool_total_count", tool_total_count);
- createArgs.Add("tool_success_count", tool_success_count);
- createArgs.Add("tool_abandon_count", tool_abandon_count);
- createArgs.Add("tool_success_percentage", tool_success_percentage);
- createArgs.Add("tool_abandon_percentage", tool_abandon_percentage);
- if (exist == null)
- {
- createArgs.Add("accountId", _accountId)
- .Add("accountName", _company)
- .Add("report_date", report_date)
- .Add("create_time", DateTime.Now)
- .Add("last_time", DateTime.Now)
- .Create();
- }
- else
- {
- createArgs.Add("last_time", DateTime.Now)
- .Where("id=@id", new { exist.id })
- .Update();
- }
- }
- /// <summary>
- /// 修正点击数
- /// </summary>
- public async Task FixReport(DateTime date)
- {
- TkReportDTO result = new TkReportDTO();
- try
- {
- string t = $"{date.Convert2UnixTimestamp(true)}";
- string dt = date.ToString("yyyy-MM-dd");
- string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.overview.json?" +
- $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_overview&startDate={dt}&endDate={dt}&fixPeriod=1d";
- var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
- .AddHeaders("X-Requested-With", "XMLHttpRequest")
- .AddHeaders("Cookie", _cookies);
- #if DEBUG
- #else
- client.Proxy = _proxy;
- #endif
- if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
- var response = client.Request(url);
- var body = response.Body();
- var root = body.Convert2JsonElement();
- int resultCode = root.Read<int>("resultCode", 0);
- bool success = root.Read("success", false);
- if (!success)
- {
- var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
- if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
- {
- return;
- }
- _ = new LoggerLibrary("report", "error")
- .Info(url, body)
- .SaveAsync();
- throw new Exception(body);
- }
- var data = root.ElementRead("data").ElementRead("data");
- result.eff_ord_num = data.Read<int>("eff_ord_num", 0);
- result.eff_ord_amt = data.Read<decimal>("eff_ord_amt", 0);
- result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
- result.uclk_uv_56 = data.Read<int>("uclk_uv_56", 0);
- result.uclk_pv_56 = data.Read<int>("uclk_pv_56", 0);
- result.uclt_uv_56 = data.Read<int>("uclt_uv_56", 0);
- result.ucart_uv_56 = data.Read<int>("ucart_uv_56", 0);
- result.dep_ord_num_56 = data.Read<int>("dep_ord_num_56", 0);
- result.dep_ord_dep_amt_56 = data.Read<decimal>("dep_ord_dep_amt_56", 0);
- result.pay_ord_num_56 = data.Read<int>("pay_ord_num_56", 0);
- result.pay_ord_amt_56 = data.Read<decimal>("pay_ord_amt_56", 0);
- result.pay_tk_disp_tfee_56 = data.Read<decimal>("pay_tk_disp_tfee_56", 0);
- result.pay_ord_uv_56 = data.Read<int>("pay_ord_uv_56", 0);
- result.sett_ord_num_56 = data.Read<int>("sett_ord_num_56", 0);
- result.sett_ord_amt_56 = data.Read<decimal>("sett_ord_amt_56", 0);
- result.sett_tk_disp_tfee_56 = data.Read<decimal>("sett_tk_disp_tfee_56", 0);
- DateTime report_date = date.Date;
- await EachSaveReportOverviewAsync(report_date, "tk_report", result);
- //var exist = new DBContext.Table("tk_report")
- // .Fields("id,report_date")
- // .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
- // new { report_date, accountId = _accountId });
- //var createArgs = new DBContext.Table("tk_report")
- // .Add("fix_uclk_pv_56", result.fix_uclk_pv_56);
- //if (exist == null)
- //{
- // createArgs.Add("accountId", _accountId)
- // .Add("accountName", _company)
- // .Add("report_date", report_date)
- // .Add("create_time", DateTime.Now)
- // .Add("last_time", DateTime.Now)
- // .Create();
- //}
- //else
- //{
- // createArgs.Add("last_time", DateTime.Now)
- // .Where("id=@id", new { exist.id })
- // .Update();
- //}
- }
- catch (Exception ex) { }
- }
- /// <summary>
- /// 1小时更新一次
- /// </summary>
- public void SaveReportHourtrend(DateTime date)
- {
- string t = $"{DateTime.Now.Convert2UnixTimestamp(true)}";
- string dt = date.ToString("yyyy-MM-dd");
- string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.hourtrend.dod.json?" +
- $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_homepage&startDate={dt}&endDate={dt}&fixPeriod=realTime";
- var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
- .AddHeaders("X-Requested-With", "XMLHttpRequest")
- .AddHeaders("Cookie", _cookies);
- #if DEBUG
- #else
- client.Proxy = _proxy;
- #endif
- if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
- var response = client.Request(url);
- var body = response.Body();
- var root = body.Convert2JsonElement();
- int resultCode = root.Read<int>("resultCode", 0);
- bool success = root.Read("success", false);
- if (!success)
- {
- _ = new LoggerLibrary("report", "error")
- .Info(url, body)
- .SaveAsync();
- var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
- if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
- {
- return;
- }
- _ = new LoggerLibrary("report", "error")
- .Info(url, body)
- .SaveAsync();
- throw new Exception(body);
- }
- var data_list = root.ElementRead("data").ElementRead("data");
- foreach (var data in data_list.EnumerateArray())
- {
- string xAxis = data.Read<string>("xAxis");
- string _report_date = $"{dt} {xAxis}";
- EachSaveReport(_report_date, "tk_report_hourtrend", data);
- if ("23:00".Equals(xAxis))
- {
- EachSaveReport(dt, "tk_report", data);
- }
- }
- }
- private void EachSaveReport(string _report_date, string tableName, JsonElement data)
- {
- _ = DateTime.TryParse(_report_date, out DateTime report_date);
- var exist = new DBContext.Table(tableName)
- .Fields("id,report_date")
- .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
- new { report_date, accountId = _accountId });
- if (exist == null)
- {
- new DBContext.Table(tableName)
- .Fill(data)
- .Loader<int>("uclk_uv_56", 0)
- .Loader<int>("uclk_pv_56", 0)
- .Loader<int>("uclt_uv_56", 0)
- .Loader<int>("ucart_uv_56", 0)
- .Loader<int>("dep_ord_num_56", 0)
- .Loader<decimal>("dep_ord_dep_amt_56", 0)
- .Loader<int>("pay_ord_num_56", 0)
- .Loader<decimal>("pay_ord_amt_56", 0)
- .Loader<decimal>("pay_tk_disp_tfee_56", 0)
- .Loader<int>("pay_ord_uv_56", 0)
- .Loader<int>("sett_ord_num_56", 0)
- .Loader<decimal>("sett_ord_amt_56", 0)
- .Loader<decimal>("sett_tk_disp_tfee_56", 0)
- .Add("accountId", _accountId)
- .Add("accountName", _company)
- .Add("report_date", report_date)
- .Add("create_time", DateTime.Now)
- .Add("last_time", DateTime.Now)
- .Create();
- }
- else
- {
- new DBContext.Table(tableName)
- .Fill(data)
- .Loader<int>("uclk_uv_56", 0)
- .Loader<int>("uclk_pv_56", 0)
- .Loader<int>("uclt_uv_56", 0)
- .Loader<int>("ucart_uv_56", 0)
- .Loader<int>("dep_ord_num_56", 0)
- .Loader<decimal>("dep_ord_dep_amt_56", 0)
- .Loader<int>("pay_ord_num_56", 0)
- .Loader<decimal>("pay_ord_amt_56", 0)
- .Loader<decimal>("pay_tk_disp_tfee_56", 0)
- .Loader<int>("pay_ord_uv_56", 0)
- .Loader<int>("sett_ord_num_56", 0)
- .Loader<decimal>("sett_ord_amt_56", 0)
- .Loader<decimal>("sett_tk_disp_tfee_56", 0)
- .Add("last_time", DateTime.Now)
- .Where("id=@id", new { exist.id })
- .Update();
- }
- }
- /// <summary>
- /// 警告消息
- /// </summary>
- public void GetViolationuWarning()
- {
- try
- {
- string url = "https://media.alimama.com/violationu2/warning_instance_page_v2.json?r=mx_208&toPage=1&pageSize=40¶ms=";
- var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
- .AddHeaders("X-Requested-With", "XMLHttpRequest")
- .AddHeaders("Cookie", _cookies);
- #if DEBUG
- #else
- client.Proxy = _proxy;
- #endif
- if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
- var response = client.Request(url);
- var body = response.Body();
- var root = body.Convert2JsonElement();
- int resultCode = root.Read<int>("resultCode", 0);
- int totalCount = root.PathRead<int>("data.totalCount", 0);
- bool success = root.Read("success", false);
- if (!success)
- {
- _ = new LoggerLibrary("violationu", "warning_error")
- .Info(url, body)
- .SaveAsync();
- throw new Exception(body);
- }
- if (totalCount == 0) return;
- _ = new LoggerLibrary("violationu", "warning").Info(url, body).SaveAsync();
- var list = root.ElementRead("data").ElementRead("result").EnumerateArray();
- foreach (var data in list)
- {
- var violation_commission = data.PathRead<decimal>("mediaInfo.订单虚假交易违规佣金", 0);
- new DBContext.Table("alimama_warning")
- .Fill(data)
- .Loader<int>("filterRuleId", 0)
- .Loader<long>("gmtCreate", 0)
- .Loader<long>("id", 0, "ali_id")
- .Loader<string>("idStr", string.Empty)
- .Loader<int>("mediaDimension", 0)
- .Loader<long>("mediaId", 0)
- .Loader<int>("mediaInfo.abn_cnt", 0, "abn_cnt")
- .Add("violation_commission", violation_commission)
- .Loader<int>("mediaInfo.warning_cnt", 0, "warning_cnt")
- .Loader<string>("mediaName", string.Empty)
- .Loader<long>("memberId", 0)
- .Loader<string>("noticeCategory", string.Empty)
- .Loader<int>("noticeTemplateId", 0)
- .Loader<string>("noticeTemplateName", string.Empty)
- .Loader<string>("orderFile", string.Empty)
- .Loader<string>("pid", string.Empty)
- .Loader<int>("punishRuleId", 0)
- .Loader<string>("riskType", string.Empty)
- .Loader<string>("roleName", string.Empty)
- .Loader<string>("ruleLink", string.Empty)
- .Loader<bool>("showOrderDetail", false)
- .Loader<int>("status", 0, "ali_status")
- .Loader<string>("warningText", string.Empty)
- .Add("accountName", _company)
- .Add("status", true)
- .Add("create_time", DateTime.Now)
- .Add("last_time", DateTime.Now)
- .Create(DBContext.InsertType.REPLACE);
- }
- }
- catch (Exception ex) { }
- }
- }
- }
|