crawler.cs 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078
  1. using dodohold.core;
  2. using Google.Protobuf.WellKnownTypes;
  3. using System.Text.Json;
  4. using TencentCloud.Cdn.V20180606.Models;
  5. using TencentCloud.Tse.V20201207.Models;
  6. using static molilian.core.ChartDataCore;
  7. namespace molilian.core
  8. {
  9. public partial class AlimamaPlus
  10. {
  11. /// <summary>
  12. /// 更新API调用日志(1天一次)
  13. /// </summary>
  14. /// <param name="intervalDay"></param>
  15. public static void DailyLogs_bak(int intervalDay, string prefix = "", string channel = "all")
  16. {
  17. int channelId = (int)TkChannelEnum.tb;
  18. var db_prefix = channel switch
  19. {
  20. "tool" => "tool_",
  21. "jd" => "jd_parse_",
  22. _ => prefix,
  23. };
  24. DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
  25. var accounts = TkPoolCore.List();
  26. using var conn = DBContext.GetOpenConnection();
  27. foreach (var account in accounts)
  28. {
  29. int accountId = account.id;
  30. string accountName = $"{TkChannelEnum.tb}_{account.id}";
  31. int total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
  32. if (total_count == 0) accountName = account.name;
  33. total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
  34. if (total_count == 0) continue;
  35. var success_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}");
  36. var abandon_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
  37. string success_percentage = string.Empty;
  38. string abandon_percentage = string.Empty;
  39. if (total_count > 0)
  40. {
  41. success_percentage = $"{success_count / (double)total_count * 100:f2}%";
  42. abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
  43. }
  44. var exist = new DBContext.Table("daily_logs")
  45. .Fields("id,log_date")
  46. .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId", new { log_date, channel = channelId, accountId });
  47. var createArgs = new DBContext.Table(conn, "daily_logs")
  48. .Add($"{db_prefix}total_count", total_count)
  49. .Add($"{db_prefix}abandon_count", abandon_count)
  50. .Add($"{db_prefix}abandon_percentage", abandon_percentage)
  51. .Add($"{db_prefix}success_count", success_count)
  52. .Add($"{db_prefix}success_percentage", success_percentage)
  53. .Add("last_time", DateTime.Now);
  54. if (exist == null)
  55. {
  56. createArgs.Add("channel", channelId)
  57. .Add("accountId", accountId)
  58. .Add("accountName", account.company)
  59. .Add("log_date", log_date)
  60. .Add("create_time", DateTime.Now)
  61. .Create();
  62. }
  63. else
  64. {
  65. createArgs.Where("id=@id", new { exist.id }).Update();
  66. }
  67. }
  68. int all_total_count = TkLogCore.GetTotal($":{prefix}total:{channel}:{log_date:yyyyMMdd}");
  69. var all_success_count = TkLogCore.GetTotal($":{prefix}total:{channel}:success:{log_date:yyyyMMdd}");
  70. var all_abandon_count = TkLogCore.GetTotal($":{prefix}total:{channel}:放弃转链:{log_date:yyyyMMdd}");
  71. string all_success_percentage = string.Empty;
  72. string all_abandon_percentage = string.Empty;
  73. if (all_total_count > 0)
  74. {
  75. all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
  76. all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
  77. }
  78. var exist2 = new DBContext.Table(conn, "daily_logs")
  79. .Fields("id,log_date")
  80. .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
  81. new { log_date, channel = channelId, accountId = 0 });
  82. var createArgs2 = new DBContext.Table(conn, "daily_logs")
  83. .Add($"{db_prefix}total_count", all_total_count)
  84. .Add($"{db_prefix}abandon_count", all_abandon_count)
  85. .Add($"{db_prefix}abandon_percentage", all_abandon_percentage)
  86. .Add($"{db_prefix}success_count", all_success_count)
  87. .Add($"{db_prefix}success_percentage", all_success_percentage)
  88. .Add("last_time", DateTime.Now);
  89. if (exist2 == null)
  90. {
  91. createArgs2.Add("channel", channelId)
  92. .Add("accountId", 0)
  93. .Add("accountName", "all")
  94. .Add("log_date", log_date)
  95. .Add("create_time", DateTime.Now)
  96. .Create();
  97. }
  98. else
  99. {
  100. createArgs2.Where("id=@id", new { exist2.id }).Update();
  101. }
  102. }
  103. public static void AllDailyLogs(int intervalDay, string prefix = "", string channel = "all")
  104. {
  105. DailyLogs(true, intervalDay, prefix, channel);
  106. }
  107. public static void NodeDailyLogs(int intervalDay, string prefix = "", string channel = "all")
  108. {
  109. DailyLogs(false, intervalDay, prefix, channel);
  110. }
  111. public static void DailyLogs(bool all_node, int intervalDay, string prefix = "", string channel = "all")
  112. {
  113. int channelId = (int)TkChannelEnum.tb;
  114. var db_prefix = channel switch
  115. {
  116. "tool" => "tool_",
  117. "jd" => "jd_parse_",
  118. "ks" => "ks_parse_",
  119. "pdd" => "pdd_parse_",
  120. "dy" => "dy_parse_",
  121. _ => prefix,
  122. };
  123. DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
  124. var accounts = TkPoolCore.List();
  125. using var conn = all_node ? CenterHub.GetOpenConnection() : DBContext.GetOpenConnection();
  126. string tableName = all_node ? "center_daily_logs" : "daily_logs";
  127. string tableName2 = all_node ? "center_daily_chat_data" : "daily_chat_data";
  128. foreach (var account in accounts)
  129. {
  130. int accountId = account.id;
  131. string accountName = $"{TkChannelEnum.tb}_{account.id}";
  132. int total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
  133. if (total_count == 0) accountName = account.name;
  134. total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}", all_node);
  135. if (total_count == 0) continue;
  136. var success_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}", all_node);
  137. var abandon_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}", all_node);
  138. string success_percentage = string.Empty;
  139. string abandon_percentage = string.Empty;
  140. if (total_count > 0)
  141. {
  142. success_percentage = $"{success_count / (double)total_count * 100:f2}%";
  143. abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
  144. }
  145. var exist = new DBContext.Table(tableName)
  146. .Fields("id,log_date")
  147. .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId", new { log_date, channel = channelId, accountId });
  148. var createArgs = new DBContext.Table(conn, tableName)
  149. .Add($"{db_prefix}total_count", total_count)
  150. .Add($"{db_prefix}abandon_count", abandon_count)
  151. .Add($"{db_prefix}abandon_percentage", abandon_percentage)
  152. .Add($"{db_prefix}success_count", success_count)
  153. .Add($"{db_prefix}success_percentage", success_percentage)
  154. .Add("last_time", DateTime.Now);
  155. if (exist == null)
  156. {
  157. createArgs.Add("channel", channelId)
  158. .Add("accountId", accountId)
  159. .Add("accountName", account.company)
  160. .Add("log_date", log_date)
  161. .Add("create_time", DateTime.Now)
  162. .Create();
  163. }
  164. else
  165. {
  166. createArgs.Where("id=@id", new { exist.id }).Update();
  167. }
  168. }
  169. int all_total_count = TkLogCore.GetTotal($":{prefix}total:{channel}:{log_date:yyyyMMdd}", all_node);
  170. var all_success_count = TkLogCore.GetTotal($":{prefix}total:{channel}:success:{log_date:yyyyMMdd}", all_node);
  171. var all_abandon_count = TkLogCore.GetTotal($":{prefix}total:{channel}:放弃转链:{log_date:yyyyMMdd}", all_node);
  172. string all_success_percentage = string.Empty;
  173. string all_abandon_percentage = string.Empty;
  174. if (all_total_count > 0)
  175. {
  176. all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
  177. all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
  178. }
  179. var exist2 = new DBContext.Table(conn, tableName)
  180. .Fields("id,log_date")
  181. .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
  182. new { log_date, channel = channelId, accountId = 0 });
  183. var createArgs2 = new DBContext.Table(conn, tableName)
  184. .Add($"{db_prefix}total_count", all_total_count)
  185. .Add($"{db_prefix}abandon_count", all_abandon_count)
  186. .Add($"{db_prefix}abandon_percentage", all_abandon_percentage)
  187. .Add($"{db_prefix}success_count", all_success_count)
  188. .Add($"{db_prefix}success_percentage", all_success_percentage)
  189. .Add("last_time", DateTime.Now);
  190. if (exist2 == null)
  191. {
  192. createArgs2.Add("channel", 0)
  193. .Add("accountId", 0)
  194. .Add("accountName", "all")
  195. .Add("log_date", log_date)
  196. .Add("create_time", DateTime.Now)
  197. .Create();
  198. }
  199. else
  200. {
  201. createArgs2.Where("id=@id", new { exist2.id }).Update();
  202. }
  203. //jd_parse_total
  204. //tool_total
  205. //total
  206. //coupon_total
  207. //parse_total
  208. var chatData = ChartDataCore.GetTaobaoData($"{prefix}total", "", $"{log_date:yyyyMMdd}");
  209. //tableName2
  210. }
  211. public static DBContext.Table FillLinkTypeData(DBContext.Table update, int data_type, DateTime report_date, TkChannelEnum channel)
  212. {
  213. long req_other_aff_num = 0;//1
  214. long req_goods_num = 0;//2
  215. long req_live_num = 0;//3
  216. long req_video_num = 0;///4
  217. long req_shop_num = 0;//5
  218. long req_base_num = 0;//6
  219. long req_note_num = 0;//7
  220. int resp_deeplink_num = 0;
  221. try
  222. {
  223. switch (channel)
  224. {
  225. case TkChannelEnum.tb:
  226. string tableName = $"tk_parse_logs_{report_date:yyyyMMdd}";
  227. string exist_sql = @$"SELECT IF( EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_name = '{tableName}'), 1, 0) AS table_exists;";
  228. int exist_table = DBContext.ExecuteScalar<int>(exist_sql);
  229. if (exist_table == 1)
  230. {
  231. var linkTypeTotal = new DBContext.Table(tableName)
  232. .Fields("linkType, count(*) AS total")
  233. .GroupBy("linkType")
  234. .Select<dynamic>();
  235. foreach (var t in linkTypeTotal)
  236. {
  237. int linkType = t.linkType;
  238. long total = t.total;
  239. switch (linkType)
  240. {
  241. case 1: req_other_aff_num = total; break;
  242. case 2: req_goods_num = total; break;
  243. case 3: req_live_num = total; break;
  244. case 4: req_video_num = total; break;
  245. case 5: req_shop_num = total; break;
  246. case 6: req_base_num = total; break;
  247. case 7: req_note_num = total; break;
  248. }
  249. }
  250. }
  251. string total_key = data_type switch
  252. {
  253. 1 => "parse_total",
  254. 2 or _ => "coupon_total",
  255. };
  256. string[] deeplink_keys = ["home", "success", "fail"];
  257. string accountName = "all";
  258. foreach (var keyname in deeplink_keys)
  259. {
  260. string cacheKey = $":{total_key}:dp_{keyname}:{accountName}:{report_date:yyyyMMdd}";
  261. int value = TkLogCore.GetTotal(cacheKey);
  262. if (value == 0) continue;
  263. resp_deeplink_num += value;
  264. }
  265. break;
  266. }
  267. }
  268. catch (Exception e)
  269. {
  270. }
  271. update.Add("req_other_aff_num", req_other_aff_num);
  272. update.Add("req_goods_num", req_goods_num);
  273. update.Add("req_live_num", req_live_num);
  274. update.Add("req_video_num", req_video_num);
  275. update.Add("req_shop_num", req_shop_num);
  276. update.Add("req_base_num", req_base_num);
  277. update.Add("req_note_num", req_note_num);
  278. update.Add("resp_deeplink_num", resp_deeplink_num);
  279. return update;
  280. }
  281. /// <summary>
  282. ///
  283. /// </summary>
  284. /// <param name="data_type">1转链 2优惠券</param>
  285. /// <param name="intervalDay"></param>
  286. /// <param name="channel"></param>
  287. public static void ApiCallStatistics(int data_type, int intervalDay, TkChannelEnum channel)
  288. {
  289. DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
  290. var endpoint = data_type == 1 ? EndPointCore.GetParseAdmin() : EndPointCore.GetCouponAdmin();
  291. if (endpoint == null || string.IsNullOrEmpty(endpoint.db_server)) return;
  292. using var conn = EndPointCore.GetDbConnection(endpoint.db_server);
  293. using var center_conn = CenterHub.GetOpenConnection();
  294. //v_jd_spread_report
  295. var record = new DBContext.Table(center_conn, "api_call_report_dailys")
  296. .Fields("id, report_date, read_num")
  297. .Get<dynamic>("report_date=@log_date AND platform=@platform AND data_type=@data_type",
  298. new { log_date, platform = channel, data_type });
  299. var update = new DBContext.Table(center_conn, "api_call_report_dailys")
  300. .Add("data_type", data_type)
  301. .Add("platform", channel)
  302. .Add("is_show", 1)
  303. .Add("report_date", log_date)
  304. .Add("last_time", DateTime.Now);
  305. switch (channel)
  306. {
  307. case TkChannelEnum.tb:
  308. {
  309. var exist_report_dailys = new DBContext.Table(conn, "v_tk_report_dailys")
  310. .Get<dynamic>("report_date=@log_date", new { log_date });
  311. if (exist_report_dailys != null)
  312. {
  313. update.Add("uclk_uv", exist_report_dailys.uclk_uv_56)
  314. .Add("uclk_pv", exist_report_dailys.uclk_pv_56)
  315. .Add("pay_ord_num", exist_report_dailys.pay_ord_num_56)
  316. .Add("order_ord_num", exist_report_dailys.order_ord_num)
  317. .Add("pay_ord_amt", exist_report_dailys.pay_ord_amt_56)
  318. .Add("pay_tk_disp_tfee", exist_report_dailys.pay_tk_disp_tfee_56)
  319. .Add("pay_ord_uv", exist_report_dailys.pay_ord_uv_56)
  320. .Add("eff_ord_num", exist_report_dailys.eff_ord_num)
  321. .Add("eff_ord_amt", exist_report_dailys.eff_ord_amt)
  322. .Add("eff_tk_disp_tfee", exist_report_dailys.eff_tk_disp_tfee);
  323. }
  324. var exist = new DBContext.Table(center_conn, "center_daily_logs")
  325. .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
  326. new { log_date, channel, accountId = 0 });
  327. if (exist != null)
  328. {
  329. if (data_type == 1)
  330. {
  331. update.Add("total_count", exist.parse_total_count)
  332. .Add("abandon_count", exist.parse_abandon_count)
  333. .Add("success_count", exist.parse_success_count);
  334. }
  335. if (data_type == 2)
  336. {
  337. update.Add("total_count", exist.coupon_total_count)
  338. .Add("abandon_count", exist.coupon_abandon_count)
  339. .Add("success_count", exist.coupon_success_count);
  340. }
  341. }
  342. break;
  343. }
  344. case TkChannelEnum.jd:
  345. {
  346. var exist_report_dailys = new DBContext.Table(conn, "v_jd_spread_report")
  347. .Get<dynamic>("report_date=@log_date", new { log_date });
  348. if (exist_report_dailys != null)
  349. {
  350. update.Add("uclk_uv", 0)
  351. .Add("pay_ord_uv", 0)//付款人数
  352. .Add("uclk_pv", exist_report_dailys.clickNum) //点击量 点击次数
  353. .Add("pay_tk_disp_tfee", exist_report_dailys.cosFee)//预估收入 付款预估收入
  354. .Add("pay_ord_amt", exist_report_dailys.cosPrice) //付款金额
  355. .Add("pay_ord_num", exist_report_dailys.orderNum)
  356. .Add("order_ord_num", 0)
  357. .Add("eff_ord_amt", exist_report_dailys.cosPrice) //有效订单金额 有效订单金额
  358. .Add("eff_ord_num", exist_report_dailys.orderNum) //有效付款笔数
  359. .Add("eff_tk_disp_tfee", exist_report_dailys.cosFee); //有效付款预估收入 预估收入
  360. }
  361. var exist = new DBContext.Table(center_conn, "center_daily_logs")
  362. .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
  363. new { log_date, channel, accountId = 0 });
  364. if (exist != null)
  365. {
  366. update.Add("total_count", exist.jd_parse_total_count)
  367. .Add("abandon_count", exist.jd_parse_abandon_count)
  368. .Add("success_count", exist.jd_parse_success_count);
  369. }
  370. break;
  371. }
  372. case TkChannelEnum.pdd:
  373. {
  374. var exist_report_dailys = new DBContext.Table(conn, "v_pdd_estimate_revenue")
  375. .Get<dynamic>("report_date=@log_date", new { log_date });
  376. if (exist_report_dailys != null)
  377. {
  378. decimal feeAmount = Math.Round(0.01m * (decimal)exist_report_dailys.feeAmount, 2);
  379. decimal orderAmount = Math.Round(0.01m * (decimal)exist_report_dailys.orderAmount, 2);
  380. update.Add("uclk_uv", 0)
  381. .Add("pay_ord_uv", 0)//付款人数
  382. .Add("uclk_pv", 0) //点击量 点击次数
  383. .Add("pay_tk_disp_tfee", feeAmount)//预估收入 付款预估收入
  384. .Add("pay_ord_amt", orderAmount) //付款金额
  385. .Add("pay_ord_num", exist_report_dailys.orderNum)
  386. .Add("order_ord_num", 0)
  387. .Add("eff_ord_amt", orderAmount) //有效订单金额 有效订单金额
  388. .Add("eff_ord_num", exist_report_dailys.orderNum) //有效付款笔数
  389. .Add("eff_tk_disp_tfee", feeAmount); //有效付款预估收入 预估收入
  390. }
  391. var exist = new DBContext.Table(center_conn, "center_daily_logs")
  392. .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
  393. new { log_date, channel, accountId = 0 });
  394. if (exist != null)
  395. {
  396. update.Add("total_count", exist.pdd_parse_total_count)
  397. .Add("abandon_count", exist.pdd_parse_abandon_count)
  398. .Add("success_count", exist.pdd_parse_success_count);
  399. }
  400. break;
  401. }
  402. }
  403. if (data_type == 1)
  404. {
  405. //todo 只有转链需要处理,优惠券和京东(未上线)暂不处理
  406. update = FillLinkTypeData(update, data_type, log_date, channel);
  407. }
  408. if (record == null)
  409. {
  410. update.Add("read_num", 0).Add("create_time", DateTime.Now).Create();
  411. }
  412. else
  413. {
  414. update.Add("read_num", record.read_num).Where("id=@id", new { record.id }).Update();
  415. }
  416. }
  417. //public static void ApiCallStatistics(int intervalDay, TkChannelEnum channel, string prefix = "")
  418. //{
  419. // DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
  420. // var accounts = TkPoolCore.List();
  421. // foreach (var account in accounts)
  422. // {
  423. // int accountId = account.id;
  424. // string accountName = $"{channel}_{account.id}";
  425. // int total_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:{log_date:yyyyMMdd}");
  426. // if (total_count == 0) continue;
  427. // var success_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:success:{log_date:yyyyMMdd}");
  428. // var abandon_count = TkLogCore.GetTotal($":{prefix}total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
  429. // string success_percentage = string.Empty;
  430. // string abandon_percentage = string.Empty;
  431. // if (total_count > 0)
  432. // {
  433. // success_percentage = $"{success_count / (double)total_count * 100:f2}%";
  434. // abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
  435. // }
  436. // var exist = new DBContext.Table("api_call_statistics")
  437. // .Fields("id,log_date")
  438. // .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
  439. // new { log_date, channel, accountId });
  440. // var createArgs = new DBContext.Table("api_call_statistics")
  441. // .Add($"{prefix}total_count", total_count)
  442. // .Add($"{prefix}abandon_count", abandon_count)
  443. // .Add($"{prefix}abandon_percentage", abandon_percentage)
  444. // .Add($"{prefix}success_count", success_count)
  445. // .Add($"{prefix}success_percentage", success_percentage)
  446. // .Add("last_time", DateTime.Now);
  447. // if (exist == null)
  448. // {
  449. // createArgs.Add("channel", channel)
  450. // .Add("accountId", accountId)
  451. // .Add("accountName", account.company)
  452. // .Add("log_date", log_date)
  453. // .Add("create_time", DateTime.Now)
  454. // .Create();
  455. // }
  456. // else
  457. // {
  458. // createArgs.Where("id=@id", new { exist.id }).Update();
  459. // }
  460. // }
  461. // int all_total_count = TkLogCore.GetTotal($":{prefix}total:{channel.ToString()}:{log_date:yyyyMMdd}");
  462. // var all_success_count = TkLogCore.GetTotal($":{prefix}total:{channel.ToString()}:success:{log_date:yyyyMMdd}");
  463. // var all_abandon_count = TkLogCore.GetTotal($":{prefix}total:{channel.ToString()}:放弃转链:{log_date:yyyyMMdd}");
  464. // string all_success_percentage = string.Empty;
  465. // string all_abandon_percentage = string.Empty;
  466. // if (all_total_count > 0)
  467. // {
  468. // all_success_percentage = $"{all_success_count / (double)all_total_count * 100:f2}%";
  469. // all_abandon_percentage = $"{all_abandon_count / (double)all_total_count * 100:f2}%";
  470. // }
  471. // var exist2 = new DBContext.Table("api_call_statistics")
  472. // .Fields("id,log_date")
  473. // .Get<dynamic>("log_date=@log_date AND channel=@channel AND accountId=@accountId",
  474. // new { log_date, channel, accountId = 0 });
  475. // var createArgs2 = new DBContext.Table("api_call_statistics")
  476. // .Add($"{prefix}total_count", all_total_count)
  477. // .Add($"{prefix}abandon_count", all_abandon_count)
  478. // .Add($"{prefix}abandon_percentage", all_abandon_percentage)
  479. // .Add($"{prefix}success_count", all_success_count)
  480. // .Add($"{prefix}success_percentage", all_success_percentage)
  481. // .Add("last_time", DateTime.Now);
  482. // if (exist2 == null)
  483. // {
  484. // createArgs2.Add("channel", channel)
  485. // .Add("accountId", 0)
  486. // .Add("accountName", "all")
  487. // .Add("log_date", log_date)
  488. // .Add("create_time", DateTime.Now)
  489. // .Create();
  490. // }
  491. // else
  492. // {
  493. // createArgs2.Where("id=@id", new { exist2.id }).Update();
  494. // }
  495. //}
  496. /// <summary>
  497. /// 事实动态接口(5分钟一次)
  498. /// </summary>
  499. /// <param name="date"></param>
  500. public void SaveReportOverview()
  501. {
  502. DateTime date = DateTime.Now;
  503. TkReportDTO result = new TkReportDTO();
  504. try
  505. {
  506. string t = $"{date.Convert2UnixTimestamp(true)}";
  507. string dt = date.ToString("yyyy-MM-dd");
  508. string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.overview.json?" +
  509. $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_overview&startDate={dt}&endDate={dt}&fixPeriod=1d";
  510. var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
  511. .AddHeaders("X-Requested-With", "XMLHttpRequest")
  512. .AddHeaders("Cookie", _cookies);
  513. #if DEBUG
  514. #else
  515. client.Proxy = _proxy;
  516. #endif
  517. if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
  518. var response = client.Request(url);
  519. var body = response.Body();
  520. var root = body.Convert2JsonElement();
  521. int resultCode = root.Read<int>("resultCode", 0);
  522. bool success = root.Read("success", false);
  523. if (!success)
  524. {
  525. _ = new LoggerLibrary("report", "error")
  526. .Info(url, body)
  527. .SaveAsync();
  528. var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
  529. if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
  530. {
  531. return;
  532. }
  533. //{"success":false,"resultCode":500,"bizErrorDesc":"For input string: \"null\"","bizErrorCode":400}
  534. throw new Exception(body);
  535. }
  536. var data = root.ElementRead("data").ElementRead("data");
  537. result.eff_ord_num = data.Read<int>("eff_ord_num", 0);
  538. result.eff_ord_amt = data.Read<decimal>("eff_ord_amt", 0);
  539. result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
  540. result.uclk_uv_56 = data.Read<int>("uclk_uv_56", 0);
  541. result.uclk_pv_56 = data.Read<int>("uclk_pv_56", 0);
  542. result.uclt_uv_56 = data.Read<int>("uclt_uv_56", 0);
  543. result.ucart_uv_56 = data.Read<int>("ucart_uv_56", 0);
  544. result.dep_ord_num_56 = data.Read<int>("dep_ord_num_56", 0);
  545. result.dep_ord_dep_amt_56 = data.Read<decimal>("dep_ord_dep_amt_56", 0);
  546. result.pay_ord_num_56 = data.Read<int>("pay_ord_num_56", 0);
  547. result.pay_ord_amt_56 = data.Read<decimal>("pay_ord_amt_56", 0);
  548. result.pay_tk_disp_tfee_56 = data.Read<decimal>("pay_tk_disp_tfee_56", 0);
  549. result.pay_ord_uv_56 = data.Read<int>("pay_ord_uv_56", 0);
  550. result.sett_ord_num_56 = data.Read<int>("sett_ord_num_56", 0);
  551. result.sett_ord_amt_56 = data.Read<decimal>("sett_ord_amt_56", 0);
  552. result.sett_tk_disp_tfee_56 = data.Read<decimal>("sett_tk_disp_tfee_56", 0);
  553. DateTime report_date = date.Date;
  554. if (report_date == DateTime.Now.Date)
  555. {
  556. RiskControlCore.SaveIncomeAmt(TkChannelEnum.tb, $"{_accountId}", result.eff_tk_disp_tfee);
  557. //TkPoolCore.SaveIncomeAmt(_accountName, result.eff_tk_disp_tfee);
  558. EachSaveReportOverview(report_date.AddHours(DateTime.Now.Hour), "tk_report_hourtrend", result);
  559. EachSaveReportOverview(report_date, "tk_report", result);
  560. }
  561. }
  562. catch (Exception ex) { throw; }
  563. }
  564. private void EachSaveReportOverview(DateTime report_date, string tableName, TkReportDTO data)
  565. {
  566. var exist = new DBContext.Table(tableName)
  567. .Fields("id,report_date")
  568. .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
  569. new { report_date, accountId = _accountId });
  570. var createArgs = new DBContext.Table(tableName)
  571. .Add("uclk_uv_56", data.uclk_uv_56)
  572. .Add("uclk_pv_56", data.uclk_pv_56)
  573. .Add("uclt_uv_56", data.uclt_uv_56)
  574. .Add("ucart_uv_56", data.ucart_uv_56)
  575. .Add("dep_ord_num_56", data.dep_ord_num_56)
  576. .Add("dep_ord_dep_amt_56", data.dep_ord_dep_amt_56)
  577. .Add("pay_ord_num_56", data.pay_ord_num_56)
  578. .Add("pay_ord_amt_56", data.pay_ord_amt_56)
  579. .Add("pay_tk_disp_tfee_56", data.pay_tk_disp_tfee_56)
  580. .Add("pay_ord_uv_56", data.pay_ord_uv_56)
  581. .Add("sett_ord_num_56", data.sett_ord_num_56)
  582. .Add("sett_ord_amt_56", data.sett_ord_amt_56)
  583. .Add("sett_tk_disp_tfee_56", data.sett_tk_disp_tfee_56)
  584. .Add("eff_ord_num", data.eff_ord_num)
  585. .Add("eff_ord_amt", data.eff_ord_amt)
  586. .Add("eff_tk_disp_tfee", data.eff_tk_disp_tfee);
  587. string data_suffix = report_date.ToString("yyyyMMdd");
  588. if ("tk_report_hourtrend".Equals(tableName))
  589. {
  590. data_suffix = report_date.ToString("yyyyMMddHH");
  591. }
  592. string accountName = $"{TkChannelEnum.tb}_{_accountId}";
  593. int total_count = TkLogCore.GetTotal($":total:{accountName}:{data_suffix}");
  594. int success_count = 0, abandon_count = 0;
  595. string success_percentage = string.Empty, abandon_percentage = string.Empty;
  596. if (total_count > 0)
  597. {
  598. success_count = TkLogCore.GetTotal($":total:{accountName}:success:{data_suffix}");
  599. abandon_count = TkLogCore.GetTotal($":total:{accountName}:放弃转链:{data_suffix}");
  600. if (total_count > 0)
  601. {
  602. success_percentage = $"{success_count / (double)total_count * 100:f2}%";
  603. abandon_percentage = $"{abandon_count / (double)total_count * 100:f2}%";
  604. }
  605. }
  606. createArgs.Add("total_count", total_count);
  607. createArgs.Add("success_count", success_count);
  608. createArgs.Add("abandon_count", abandon_count);
  609. createArgs.Add("success_percentage", success_percentage);
  610. createArgs.Add("abandon_percentage", abandon_percentage);
  611. int parse_total_count = TkLogCore.GetTotal($":parse_total:{accountName}:{data_suffix}");
  612. int parse_success_count = 0, parse_abandon_count = 0;
  613. string parse_success_percentage = string.Empty, parse_abandon_percentage = string.Empty;
  614. if (parse_total_count > 0)
  615. {
  616. parse_success_count = TkLogCore.GetTotal($":parse_total:{accountName}:success:{data_suffix}");
  617. parse_abandon_count = TkLogCore.GetTotal($":parse_total:{accountName}:放弃转链:{data_suffix}");
  618. if (parse_total_count > 0)
  619. {
  620. parse_success_percentage = $"{parse_success_count / (double)parse_total_count * 100:f2}%";
  621. parse_abandon_percentage = $"{parse_abandon_count / (double)parse_total_count * 100:f2}%";
  622. }
  623. }
  624. createArgs.Add("parse_total_count", parse_total_count);
  625. createArgs.Add("parse_success_count", parse_success_count);
  626. createArgs.Add("parse_abandon_count", parse_abandon_count);
  627. createArgs.Add("parse_success_percentage", parse_success_percentage);
  628. createArgs.Add("parse_abandon_percentage", parse_abandon_percentage);
  629. int coupon_total_count = TkLogCore.GetTotal($":coupon_total:{accountName}:{data_suffix}", false);
  630. int coupon_success_count = 0, coupon_abandon_count = 0;
  631. string coupon_success_percentage = string.Empty, coupon_abandon_percentage = string.Empty;
  632. if (coupon_total_count > 0)
  633. {
  634. coupon_success_count = TkLogCore.GetTotal($":coupon_total:{accountName}:success:{data_suffix}", false);
  635. coupon_abandon_count = TkLogCore.GetTotal($":coupon_total:{accountName}:放弃转链:{data_suffix}", false);
  636. if (coupon_total_count > 0)
  637. {
  638. coupon_success_percentage = $"{coupon_success_count / (double)coupon_total_count * 100:f2}%";
  639. coupon_abandon_percentage = $"{coupon_abandon_count / (double)coupon_total_count * 100:f2}%";
  640. }
  641. }
  642. createArgs.Add("coupon_total_count", coupon_total_count);
  643. createArgs.Add("coupon_success_count", coupon_success_count);
  644. createArgs.Add("coupon_abandon_count", coupon_abandon_count);
  645. createArgs.Add("coupon_success_percentage", coupon_success_percentage);
  646. createArgs.Add("coupon_abandon_percentage", coupon_abandon_percentage);
  647. int tool_total_count = TkLogCore.GetTotal($":tool_total:{accountName}:{data_suffix}");
  648. int tool_success_count = 0, tool_abandon_count = 0;
  649. string tool_success_percentage = string.Empty, tool_abandon_percentage = string.Empty;
  650. if (tool_total_count > 0)
  651. {
  652. tool_success_count = TkLogCore.GetTotal($":tool_total:{accountName}:success:{data_suffix}");
  653. tool_abandon_count = TkLogCore.GetTotal($":tool_total:{accountName}:放弃转链:{data_suffix}");
  654. if (tool_total_count > 0)
  655. {
  656. tool_success_percentage = $"{tool_success_count / (double)tool_total_count * 100:f2}%";
  657. tool_abandon_percentage = $"{tool_abandon_count / (double)tool_total_count * 100:f2}%";
  658. }
  659. }
  660. createArgs.Add("tool_total_count", tool_total_count);
  661. createArgs.Add("tool_success_count", tool_success_count);
  662. createArgs.Add("tool_abandon_count", tool_abandon_count);
  663. createArgs.Add("tool_success_percentage", tool_success_percentage);
  664. createArgs.Add("tool_abandon_percentage", tool_abandon_percentage);
  665. if (exist == null)
  666. {
  667. createArgs.Add("accountId", _accountId)
  668. .Add("accountName", _company)
  669. .Add("report_date", report_date)
  670. .Add("create_time", DateTime.Now)
  671. .Add("last_time", DateTime.Now)
  672. .Create();
  673. }
  674. else
  675. {
  676. createArgs.Add("last_time", DateTime.Now)
  677. .Where("id=@id", new { exist.id })
  678. .Update();
  679. }
  680. }
  681. /// <summary>
  682. /// 修正点击数
  683. /// </summary>
  684. public void FixReport(DateTime date)
  685. {
  686. TkReportDTO result = new TkReportDTO();
  687. try
  688. {
  689. string t = $"{date.Convert2UnixTimestamp(true)}";
  690. string dt = date.ToString("yyyy-MM-dd");
  691. string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.overview.json?" +
  692. $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_overview&startDate={dt}&endDate={dt}&fixPeriod=1d";
  693. var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
  694. .AddHeaders("X-Requested-With", "XMLHttpRequest")
  695. .AddHeaders("Cookie", _cookies);
  696. #if DEBUG
  697. #else
  698. client.Proxy = _proxy;
  699. #endif
  700. if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
  701. var response = client.Request(url);
  702. var body = response.Body();
  703. var root = body.Convert2JsonElement();
  704. int resultCode = root.Read<int>("resultCode", 0);
  705. bool success = root.Read("success", false);
  706. if (!success)
  707. {
  708. var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
  709. if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
  710. {
  711. return;
  712. }
  713. _ = new LoggerLibrary("report", "error")
  714. .Info(url, body)
  715. .SaveAsync();
  716. throw new Exception(body);
  717. }
  718. var data = root.ElementRead("data").ElementRead("data");
  719. result.eff_ord_num = data.Read<int>("eff_ord_num", 0);
  720. result.eff_ord_amt = data.Read<decimal>("eff_ord_amt", 0);
  721. result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
  722. result.uclk_uv_56 = data.Read<int>("uclk_uv_56", 0);
  723. result.uclk_pv_56 = data.Read<int>("uclk_pv_56", 0);
  724. result.uclt_uv_56 = data.Read<int>("uclt_uv_56", 0);
  725. result.ucart_uv_56 = data.Read<int>("ucart_uv_56", 0);
  726. result.dep_ord_num_56 = data.Read<int>("dep_ord_num_56", 0);
  727. result.dep_ord_dep_amt_56 = data.Read<decimal>("dep_ord_dep_amt_56", 0);
  728. result.pay_ord_num_56 = data.Read<int>("pay_ord_num_56", 0);
  729. result.pay_ord_amt_56 = data.Read<decimal>("pay_ord_amt_56", 0);
  730. result.pay_tk_disp_tfee_56 = data.Read<decimal>("pay_tk_disp_tfee_56", 0);
  731. result.pay_ord_uv_56 = data.Read<int>("pay_ord_uv_56", 0);
  732. result.sett_ord_num_56 = data.Read<int>("sett_ord_num_56", 0);
  733. result.sett_ord_amt_56 = data.Read<decimal>("sett_ord_amt_56", 0);
  734. result.sett_tk_disp_tfee_56 = data.Read<decimal>("sett_tk_disp_tfee_56", 0);
  735. DateTime report_date = date.Date;
  736. EachSaveReportOverview(report_date, "tk_report", result);
  737. //var exist = new DBContext.Table("tk_report")
  738. // .Fields("id,report_date")
  739. // .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
  740. // new { report_date, accountId = _accountId });
  741. //var createArgs = new DBContext.Table("tk_report")
  742. // .Add("fix_uclk_pv_56", result.fix_uclk_pv_56);
  743. //if (exist == null)
  744. //{
  745. // createArgs.Add("accountId", _accountId)
  746. // .Add("accountName", _company)
  747. // .Add("report_date", report_date)
  748. // .Add("create_time", DateTime.Now)
  749. // .Add("last_time", DateTime.Now)
  750. // .Create();
  751. //}
  752. //else
  753. //{
  754. // createArgs.Add("last_time", DateTime.Now)
  755. // .Where("id=@id", new { exist.id })
  756. // .Update();
  757. //}
  758. }
  759. catch (Exception ex) { }
  760. }
  761. /// <summary>
  762. /// 1小时更新一次
  763. /// </summary>
  764. public void SaveReportHourtrend(DateTime date)
  765. {
  766. string t = $"{DateTime.Now.Convert2UnixTimestamp(true)}";
  767. string dt = date.ToString("yyyy-MM-dd");
  768. string url = "https://pub.alimama.com/openapi/param2/1/gateway.unionpub/data.lens.report.hourtrend.dod.json?" +
  769. $"t={t}&_tb_token_={_tb_token}&ruleEnum=pub_homepage&startDate={dt}&endDate={dt}&fixPeriod=realTime";
  770. var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
  771. .AddHeaders("X-Requested-With", "XMLHttpRequest")
  772. .AddHeaders("Cookie", _cookies);
  773. #if DEBUG
  774. #else
  775. client.Proxy = _proxy;
  776. #endif
  777. if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
  778. var response = client.Request(url);
  779. var body = response.Body();
  780. var root = body.Convert2JsonElement();
  781. int resultCode = root.Read<int>("resultCode", 0);
  782. bool success = root.Read("success", false);
  783. if (!success)
  784. {
  785. _ = new LoggerLibrary("report", "error")
  786. .Info(url, body)
  787. .SaveAsync();
  788. var bizErrorDesc = root.Read("bizErrorDesc", string.Empty);
  789. if (resultCode == 500 && bizErrorDesc.Contains("For input string"))
  790. {
  791. return;
  792. }
  793. _ = new LoggerLibrary("report", "error")
  794. .Info(url, body)
  795. .SaveAsync();
  796. throw new Exception(body);
  797. }
  798. var data_list = root.ElementRead("data").ElementRead("data");
  799. foreach (var data in data_list.EnumerateArray())
  800. {
  801. string xAxis = data.Read<string>("xAxis");
  802. string _report_date = $"{dt} {xAxis}";
  803. EachSaveReport(_report_date, "tk_report_hourtrend", data);
  804. if ("23:00".Equals(xAxis))
  805. {
  806. EachSaveReport(dt, "tk_report", data);
  807. }
  808. }
  809. }
  810. private void EachSaveReport(string _report_date, string tableName, JsonElement data)
  811. {
  812. _ = DateTime.TryParse(_report_date, out DateTime report_date);
  813. var exist = new DBContext.Table(tableName)
  814. .Fields("id,report_date")
  815. .Get<dynamic>("report_date=@report_date AND accountId=@accountId",
  816. new { report_date, accountId = _accountId });
  817. if (exist == null)
  818. {
  819. new DBContext.Table(tableName)
  820. .Fill(data)
  821. .Loader<int>("uclk_uv_56", 0)
  822. .Loader<int>("uclk_pv_56", 0)
  823. .Loader<int>("uclt_uv_56", 0)
  824. .Loader<int>("ucart_uv_56", 0)
  825. .Loader<int>("dep_ord_num_56", 0)
  826. .Loader<decimal>("dep_ord_dep_amt_56", 0)
  827. .Loader<int>("pay_ord_num_56", 0)
  828. .Loader<decimal>("pay_ord_amt_56", 0)
  829. .Loader<decimal>("pay_tk_disp_tfee_56", 0)
  830. .Loader<int>("pay_ord_uv_56", 0)
  831. .Loader<int>("sett_ord_num_56", 0)
  832. .Loader<decimal>("sett_ord_amt_56", 0)
  833. .Loader<decimal>("sett_tk_disp_tfee_56", 0)
  834. .Add("accountId", _accountId)
  835. .Add("accountName", _company)
  836. .Add("report_date", report_date)
  837. .Add("create_time", DateTime.Now)
  838. .Add("last_time", DateTime.Now)
  839. .Create();
  840. }
  841. else
  842. {
  843. new DBContext.Table(tableName)
  844. .Fill(data)
  845. .Loader<int>("uclk_uv_56", 0)
  846. .Loader<int>("uclk_pv_56", 0)
  847. .Loader<int>("uclt_uv_56", 0)
  848. .Loader<int>("ucart_uv_56", 0)
  849. .Loader<int>("dep_ord_num_56", 0)
  850. .Loader<decimal>("dep_ord_dep_amt_56", 0)
  851. .Loader<int>("pay_ord_num_56", 0)
  852. .Loader<decimal>("pay_ord_amt_56", 0)
  853. .Loader<decimal>("pay_tk_disp_tfee_56", 0)
  854. .Loader<int>("pay_ord_uv_56", 0)
  855. .Loader<int>("sett_ord_num_56", 0)
  856. .Loader<decimal>("sett_ord_amt_56", 0)
  857. .Loader<decimal>("sett_tk_disp_tfee_56", 0)
  858. .Add("last_time", DateTime.Now)
  859. .Where("id=@id", new { exist.id })
  860. .Update();
  861. }
  862. }
  863. /// <summary>
  864. /// 警告消息
  865. /// </summary>
  866. public void GetViolationuWarning()
  867. {
  868. try
  869. {
  870. string url = "https://media.alimama.com/violationu2/warning_instance_page_v2.json?r=mx_208&toPage=1&pageSize=40&params=";
  871. var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
  872. .AddHeaders("X-Requested-With", "XMLHttpRequest")
  873. .AddHeaders("Cookie", _cookies);
  874. #if DEBUG
  875. #else
  876. client.Proxy = _proxy;
  877. #endif
  878. if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
  879. var response = client.Request(url);
  880. var body = response.Body();
  881. var root = body.Convert2JsonElement();
  882. int resultCode = root.Read<int>("resultCode", 0);
  883. int totalCount = root.PathRead<int>("data.totalCount", 0);
  884. bool success = root.Read("success", false);
  885. if (!success)
  886. {
  887. _ = new LoggerLibrary("violationu", "warning_error")
  888. .Info(url, body)
  889. .SaveAsync();
  890. throw new Exception(body);
  891. }
  892. if (totalCount == 0) return;
  893. _ = new LoggerLibrary("violationu", "warning").Info(url, body).SaveAsync();
  894. var list = root.ElementRead("data").ElementRead("result").EnumerateArray();
  895. foreach (var data in list)
  896. {
  897. var violation_commission = data.PathRead<decimal>("mediaInfo.订单虚假交易违规佣金", 0);
  898. new DBContext.Table("alimama_warning")
  899. .Fill(data)
  900. .Loader<int>("filterRuleId", 0)
  901. .Loader<long>("gmtCreate", 0)
  902. .Loader<long>("id", 0, "ali_id")
  903. .Loader<string>("idStr", string.Empty)
  904. .Loader<int>("mediaDimension", 0)
  905. .Loader<long>("mediaId", 0)
  906. .Loader<int>("mediaInfo.abn_cnt", 0, "abn_cnt")
  907. .Add("violation_commission", violation_commission)
  908. .Loader<int>("mediaInfo.warning_cnt", 0, "warning_cnt")
  909. .Loader<string>("mediaName", string.Empty)
  910. .Loader<long>("memberId", 0)
  911. .Loader<string>("noticeCategory", string.Empty)
  912. .Loader<int>("noticeTemplateId", 0)
  913. .Loader<string>("noticeTemplateName", string.Empty)
  914. .Loader<string>("orderFile", string.Empty)
  915. .Loader<string>("pid", string.Empty)
  916. .Loader<int>("punishRuleId", 0)
  917. .Loader<string>("riskType", string.Empty)
  918. .Loader<string>("roleName", string.Empty)
  919. .Loader<string>("ruleLink", string.Empty)
  920. .Loader<bool>("showOrderDetail", false)
  921. .Loader<int>("status", 0, "ali_status")
  922. .Loader<string>("warningText", string.Empty)
  923. .Add("accountName", _company)
  924. .Add("status", true)
  925. .Add("create_time", DateTime.Now)
  926. .Add("last_time", DateTime.Now)
  927. .Create(DBContext.InsertType.REPLACE);
  928. }
  929. }
  930. catch (Exception ex) { }
  931. }
  932. }
  933. }