crawler.cs 49 KB

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