Эх сурвалжийг харах

上线oppo接口,密集修改

dodo hold 2 жил өмнө
parent
commit
766813ddd1

+ 0 - 2
molilian.api/Controllers/admin/TaobaoController.cs

@@ -198,8 +198,6 @@ namespace molilian.api.Controllers
             foreach (var item in result.List)
             {
                 if (item.total_count > 0) continue;
-
-
                 item.total_count = RedisHelper.Get<int>($":total:all:{item.report_date:yyyyMMdd}");
                 if (item.total_count == 0) continue;
                 item.success_count = RedisHelper.Get<int>($":total:all:success:{item.report_date:yyyyMMdd}");

+ 10 - 2
molilian.api/Controllers/public/TaskController.cs

@@ -104,7 +104,7 @@ namespace molilian.api.Controllers
             foreach (var account in list)
             {
 #if DEBUG
-                if (account.id != 13) continue;
+                if (account.id != 17) continue;
 #endif
 
                 try
@@ -216,6 +216,9 @@ namespace molilian.api.Controllers
             string message = string.Empty;
             foreach (var account in list)
             {
+#if DEBUG
+                if (account.id != 5) continue;
+#endif
                 try
                 {
                     var alimama = new AlimamaPlus(account);
@@ -245,6 +248,9 @@ namespace molilian.api.Controllers
             string message = string.Empty;
             foreach (var account in list)
             {
+#if DEBUG
+                if (account.id != 5) continue;
+#endif
                 try
                 {
                     var alimama = new AlimamaPlus(account);
@@ -285,13 +291,15 @@ namespace molilian.api.Controllers
             string message = string.Empty;
             foreach (var account in list)
             {
+#if DEBUG
+                if (account.id != 5) continue;
+#endif
                 try
                 {
                     var alimama = new AlimamaPlus(account);
 
                     while (date.Date < DateTime.Now.Date)
                     {
-                        alimama.SaveReportHourtrend(date);
                         alimama.FixReport(date);
                         date = date.AddDays(1);
                     }

+ 25 - 5
molilian.api/Controllers/public/TkController.cs

@@ -566,20 +566,33 @@ namespace molilian.api.Controllers
                 return new APIResult(new { success = false, message = "查询条件不能为空" });
             }
 #endif
-
             string filter = $"batchId=@query";
+            var account_list = TkPoolCore.List();
+            List<int> account_ids = [];
+            if (account_list.Any())
+            {
+                account_ids = account_list.Where(e => e.enable_fake_click).Select(e => e.id).ToList();
+                filter += $" AND accountId IN @account_ids";
+            }
             string orderBy = "paid_time ASC";
 
             var data = new DBContext.Table("tk_order_tracking")
-                .Where(filter, new { query })
+                .Where(filter, new { query, account_ids })
                 .Order(orderBy)
                 .Select<TkOrderTrackingDTO>();
 
-            List<object> list = new();
+            List<object> list = [];
             foreach (var item in data)
             {
-                list.Add(new { url = item.deeplinkUrl, count = 1, time = item.exp_time });
+                list.Add(new { url = item.deeplinkUrl, count = item.click_num, time = item.exp_time });
             }
+            var clientIp = _accessor.HttpContext.GetUserIp();
+            LoggerLibrary log = new LoggerLibrary("api", "dplist");
+            log.Info($"{clientIp}\t{query}\tcount:{list.Count}");
+
+            var ids = data.Select(e => e.Id).ToArray();
+            log.Info(string.Join(',', ids));
+            log.Save();
 
             return new APIResult(new
             {
@@ -595,7 +608,7 @@ namespace molilian.api.Controllers
 
 
         [HttpGet]
-        public async Task<ActionResult> unsafeParseDpList([FromQuery] string query = "", [FromQuery] string a = "", [FromQuery] int t = 0, [FromQuery] string sign = "")
+        public async Task<ActionResult> unsafeParseDpList([FromQuery] string query = "")
         {
             string filter = $"batchId=@query";
             var account_list = TkPoolCore.List();
@@ -617,6 +630,13 @@ namespace molilian.api.Controllers
             {
                 list.Add(new { url = item.deeplinkUrl, count = item.click_num, time = item.exp_time });
             }
+            var clientIp = _accessor.HttpContext.GetUserIp();
+            LoggerLibrary log = new LoggerLibrary("api", "unsafeParseDpList");
+            log.Info($"{clientIp}\t{query}\tcount:{list.Count}");
+
+            var ids = data.Select(e => e.Id).ToArray();
+            log.Info(string.Join(',', ids));
+            log.Save();
 
             return new APIResult(new
             {

+ 1 - 1
molilian.api/Program.cs

@@ -14,7 +14,7 @@ builder.Services.AddControllers(option =>
     option.Filters.Add(typeof(MyAuthorizationFactory.MyActionFilter));
 });
 
-builder.Services.AddHostedService<TaskWorker>();
+//builder.Services.AddHostedService<TaskWorker>();
 
 
 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
molilian.api/Properties/PublishProfiles/https___ccr.ccs.tencentyun.com_shaobin.pubxml.user


+ 52 - 4
molilian.core/Core/taoke/TkLogCore.cs

@@ -285,7 +285,7 @@ namespace molilian.core
                 var ts = DateTime.Now - response.create_time;
                 response.elapsedTime = (int)ts.TotalMilliseconds;
                 RedisHelper.RPush(queue_parse_tb_key, response);
-                saveCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
+                saveParseCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
                 if (!string.IsNullOrEmpty(response.itemId)) TkOrderTrackingCore.SaveLinkSummary(response);
 
                 if (!response.success && "nologin".Equals(response.message))
@@ -356,7 +356,7 @@ namespace molilian.core
                 var ts = DateTime.Now - response.create_time;
                 response.elapsedTime = (int)ts.TotalMilliseconds;
                 RedisHelper.RPush(queue_parse_jd_key, response);
-                saveCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
+                saveParseCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
 
             }
             catch (Exception ex) { }
@@ -368,7 +368,7 @@ namespace molilian.core
                 var ts = DateTime.Now - response.create_time;
                 response.elapsedTime = (int)ts.TotalMilliseconds;
                 RedisHelper.RPush(queue_parse_dy_key, response);
-                saveCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
+                saveParseCache(response.channel.ToString(), response.accountId, response.accountName, response.success, response.message, response.reason);
 
             }
             catch (Exception ex) { }
@@ -380,7 +380,7 @@ namespace molilian.core
                 var ts = DateTime.Now - response.create_time;
                 response.elapsedTime = (int)ts.TotalMilliseconds;
                 RedisHelper.RPush(queue_parse_tool_key, response);
-                saveCache(response.channel.ToString(), 0, "tool", response.success, response.message, response.reason);
+                saveParseCache(response.channel.ToString(), 0, "tool", response.success, response.message, response.reason);
             }
             catch (Exception ex) { }
         }
@@ -434,6 +434,54 @@ namespace molilian.core
 
         }
 
+        private static void saveParseCache(string channel, int accountId, string accountName, bool success, string message, string reason)
+        {
+            saveParseAccountCache("all", success, message, reason);
+            saveParseAccountCache($"{channel}", success, message, reason);
+            saveParseAccountCache($"{accountName}", success, message, reason);
+            if (accountId != 0)
+            {
+                //todo 放着跑两天,要将读取的地方改成读取accountid
+                saveParseAccountCache($"{channel}_{accountId}", success, message, reason);
+            }
+        }
+
+        private static void saveParseAccountCache(string accountName, bool success, string message, string reason)
+        {
+            RedisHelper.IncrBy($":parse_total:{accountName}:{DateTime.Now:yyyyMM}");
+            RedisHelper.IncrBy($":parse_total:{accountName}:{DateTime.Now:yyyyMMdd}");
+            RedisHelper.IncrBy($":parse_total:{accountName}:{DateTime.Now:yyyyMMddHH}");
+
+
+            string result = success ? "success" : "fail";
+            RedisHelper.IncrBy($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMM}");
+            RedisHelper.IncrBy($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMMdd}");
+            RedisHelper.IncrBy($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMMddHH}");
+
+
+            if (!string.IsNullOrEmpty(message))
+            {
+                RedisHelper.SAdd($":parse_total:{accountName}:message:{DateTime.Now:yyyyMM}", message);
+                RedisHelper.SAdd($":parse_total:{accountName}:message:{DateTime.Now:yyyyMMdd}", message);
+                RedisHelper.SAdd($":parse_total:{accountName}:message:{DateTime.Now:yyyyMMddHH}", message);
+
+                RedisHelper.IncrBy($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMM}");
+                RedisHelper.IncrBy($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMMdd}");
+                RedisHelper.IncrBy($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMMddHH}");
+            }
+
+            if (!string.IsNullOrEmpty(reason))
+            {
+                RedisHelper.SAdd($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMM}", reason);
+                RedisHelper.SAdd($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMMdd}", reason);
+                RedisHelper.SAdd($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMMddHH}", reason);
+
+                RedisHelper.IncrBy($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMM}");
+                RedisHelper.IncrBy($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMMdd}");
+                RedisHelper.IncrBy($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMMddHH}");
+            }
+
+        }
         private static void saveCouponCache(string channel, int accountId, string accountName, bool success, string message, string reason)
         {
             saveAccountCouponCache("all", success, message, reason);

+ 28 - 11
molilian.core/Core/taoke/UnionCouponCore.cs

@@ -52,7 +52,7 @@ namespace molilian.core
                     return new APIResult(new
                     {
                         result.success,
-                        result.message,
+                        message = "没有优惠券",
                         channel = result.channel.ToString(),
                     });
                 }
@@ -67,7 +67,7 @@ namespace molilian.core
                     return new APIResult(new
                     {
                         result.success,
-                        result.message,
+                        message = "没有优惠券",
                         channel = result.channel.ToString(),
                     });
                 }
@@ -79,7 +79,7 @@ namespace molilian.core
                 if (result.success && result.couponAmount == 0)
                 {
                     result.success = false;
-                    result.message = "放弃转链";
+                    result.message = "没有优惠券";
                     result.reason = "没有优惠券";
                 }
             }
@@ -116,17 +116,18 @@ namespace molilian.core
                 return new APIResult(new
                 {
                     result.success,
-                    result.message,
+                    message = "没有优惠券",
                     channel = result?.channel.ToString(),
                 });
             }
+            int couponAmount = (int)result.couponAmount * 100;
             return new APIResult(new
             {
                 result.success,
                 result.message,
                 channel = result?.channel.ToString(),
                 result?.itemId,
-                result?.couponAmount,
+                couponAmount,
                 result?.deeplink_url,
                 result?.pic,
                 result?.couponEffectiveStartTime,
@@ -151,7 +152,12 @@ namespace molilian.core
                     result.message = "放弃转链";
                     result.reason = reason;
                     _ = TkLogCore.CouponLogAsync(result);
-                    return new APIResult(result);
+                    return new APIResult(new
+                    {
+                        result.success,
+                        message = "没有优惠券",
+                        channel = result.channel.ToString(),
+                    });
                 }
 
                 var api = DataokeCore.GetOne();
@@ -162,7 +168,12 @@ namespace molilian.core
                     result.reason = "没有匹配账号";
                     result.rawContent = content;
                     _ = TkLogCore.CouponLogAsync(result);
-                    return new APIResult(result);
+                    return new APIResult(new
+                    {
+                        result.success,
+                        message = "没有优惠券",
+                        channel = result.channel.ToString(),
+                    });
                 }
 
                 var account = JdPoolCore.GetOne();
@@ -172,13 +183,18 @@ namespace molilian.core
                     result.message = "放弃转链";
                     result.reason = "没有匹配账号";
                     _ = TkLogCore.CouponLogAsync(result);
-                    return new APIResult(result);
+                    return new APIResult(new
+                    {
+                        result.success,
+                        message = "没有优惠券",
+                        channel = result.channel.ToString(),
+                    });
                 }
                 result = await JdUnionPlus.JdCouponAsync(account, api, content, result);
                 if (result.success && result.couponAmount == 0)
                 {
                     result.success = false;
-                    result.message = "放弃转链";
+                    result.message = "没有优惠券";
                     result.reason = "没有优惠券";
                 }
             }
@@ -214,17 +230,18 @@ namespace molilian.core
                 return new APIResult(new
                 {
                     result.success,
-                    result.message,
+                    message = "没有优惠券",
                     channel = result?.channel.ToString(),
                 });
             }
+            int couponAmount = (int)(result.couponAmount * 100);
             return new APIResult(new
             {
                 result.success,
                 result.message,
                 channel = result?.channel.ToString(),
                 result?.itemId,
-                result?.couponAmount,
+                couponAmount,
                 result?.deeplink_url,
                 result?.pic,
                 result?.couponEffectiveStartTime,

+ 11 - 2
molilian.core/Core/taoke/UnionParseCore.cs

@@ -115,6 +115,7 @@ namespace molilian.core
             AlimamaPlus alimama = null;
             var result = AlimamaPlus.GetFormattedObject(content, ip, oaid);
             content = content.UrlDecode();
+            content = content[..Math.Min(1000, content.Length)];
             result.rawContent = content;
             try
             {
@@ -123,6 +124,8 @@ namespace molilian.core
                     result.success = false;
                     result.message = "放弃转链";
                     result.reason = "平台错误";
+                    result.itemName = "点击打开淘宝APP";
+
                     _ = TkLogCore.ParseLogAsync(result);
                     return new APIResult(new
                     {
@@ -138,6 +141,7 @@ namespace molilian.core
                 {
                     result.success = false;
                     result.message = "放弃转链";
+                    result.itemName = "点击打开淘宝APP";
                     result.reason = reason;
                     _ = TkLogCore.ParseLogAsync(result);
                     return new APIResult(new
@@ -158,6 +162,7 @@ namespace molilian.core
                     result.success = false;
                     result.message = "放弃转链";
                     result.reason = "没有匹配账号";
+                    result.itemName = "点击打开淘宝APP";
                     _ = TkLogCore.ParseLogAsync(result);
                     return new APIResult(new
                     {
@@ -171,9 +176,10 @@ namespace molilian.core
                     });
                 }
                 result.accountId = account.id;
-                result.accountName = account.name;
+                result.accountName = account.company;
                 alimama = new AlimamaPlus(account);
                 result = await alimama.UnionParse2Async(content, result);
+                result.accountName = account.company;
             }
             catch (Exception ex)
             {
@@ -182,6 +188,7 @@ namespace molilian.core
                     result.success = false;
                     result.message = "放弃转链";
                     result.reason = "请求超时";
+                    result.itemName = "点击打开淘宝APP";
                 }
                 else
                 {
@@ -200,9 +207,11 @@ namespace molilian.core
                     result.success = false;
                     result.message = "放弃转链";
                     result.reason = "转链接口异常";
+                    result.itemName = "点击打开淘宝APP";
                 }
             }
             _ = TkLogCore.ParseLogAsync(result, alimama);
+
             return new APIResult(new
             {
                 result.success,
@@ -216,7 +225,7 @@ namespace molilian.core
                 result.promotionPrice,
                 result.couponAmount,
                 result.couponEffectiveStartTime,
-                result.couponEffectiveEndTime,
+                result?.couponEffectiveEndTime,
                 result.shortLinkurl,
                 result.deeplink_url,
                 result.content,

+ 3 - 1
molilian.core/DTO/alimama/TkReportDTO.cs

@@ -17,7 +17,9 @@
         public DateTime last_time { get; set; }
 
 
-
+        /// <summary>
+        /// todo 过时 等待删除
+        /// </summary>
         public int fix_uclk_pv_56 { get; set; } = 0;
         /// <summary>
         /// 点击人数 (访问过您的推广内容的用户数)

+ 0 - 1
molilian.core/DTO/dy/DyDataDTO.cs

@@ -14,7 +14,6 @@
         public string content { get; set; } = string.Empty;
         public string taoToken { get; set; } = string.Empty;
         public string rawContent { get; set; } = string.Empty;
-        public string rawContent2 { get; set; } = string.Empty;
         public string ip { get; set; } = string.Empty;
         public string oaid { get; set; } = string.Empty;
 

+ 18 - 0
molilian.core/Plus/Alimama/account.cs

@@ -84,7 +84,10 @@ namespace molilian.core
                     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();
@@ -97,7 +100,10 @@ namespace molilian.core
                     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();
@@ -109,7 +115,10 @@ namespace molilian.core
                     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();
@@ -138,7 +147,10 @@ namespace molilian.core
                     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();
@@ -165,7 +177,10 @@ namespace molilian.core
                     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
                     //client.AllowAutoRedirect = false;
                     if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
                     var response = client.Request(aso_url);
@@ -178,7 +193,10 @@ namespace molilian.core
                     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();

+ 15 - 2
molilian.core/Plus/Alimama/bills.cs

@@ -54,9 +54,22 @@ namespace molilian.core
                 try
                 {
                     var root = body.Convert2JsonElement();
-                    var succss = root.Read<bool>("success");
+                    var success = root.Read<bool>("success");
                     data = root.ElementRead("data");
-                    if (!succss)
+
+
+                    //{"code":601,"info":{"ok":false,"message":"nologin"}}
+                    if (!success && body.Contains("nologin"))
+                    {
+                        (success, string message) = RenewCookie();
+                        if (!success)
+                        {
+                            TkPoolCore.Disabled(_accountName, $"{body}");
+                        }
+                        return 0;
+                    }
+
+                    if (!success)
                     {
                         throw new APIException(body);
                     }

+ 57 - 33
molilian.core/Plus/Alimama/crawler.cs

@@ -198,7 +198,10 @@ ON DUPLICATE KEY UPDATE
                 var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
                             .AddHeaders("X-Requested-With", "XMLHttpRequest")
                             .AddHeaders("Cookie", _cookies);
-                client.Proxy = _proxy;
+#if DEBUG
+#else
+            client.Proxy = _proxy;
+#endif
                 if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
                 var response = client.Request(url);
 
@@ -234,12 +237,6 @@ ON DUPLICATE KEY UPDATE
                 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);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
-                result.eff_tk_disp_tfee = data.Read<decimal>("eff_tk_disp_tfee", 0);
 
                 DateTime report_date = date.Date;
                 if (report_date == DateTime.Now.Date)
@@ -313,7 +310,10 @@ ON DUPLICATE KEY UPDATE
                 var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
                             .AddHeaders("X-Requested-With", "XMLHttpRequest")
                             .AddHeaders("Cookie", _cookies);
-                client.Proxy = _proxy;
+#if DEBUG
+#else
+            client.Proxy = _proxy;
+#endif
                 if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
                 var response = client.Request(url);
 
@@ -332,32 +332,50 @@ ON DUPLICATE KEY UPDATE
 
                 var data = root.ElementRead("data").ElementRead("data");
 
-                result.fix_uclk_pv_56 = data.Read<int>("uclk_pv_56", 0);
-
-                DateTime report_date = date.Date;
+                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);
 
-                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);
+                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);
 
-                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();
-                }
+                DateTime report_date = date.Date;
+                EachSaveReportOverview(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) { }
         }
@@ -378,7 +396,10 @@ ON DUPLICATE KEY UPDATE
             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);
 
@@ -476,7 +497,10 @@ ON DUPLICATE KEY UPDATE
                 var client = new WebClientUtility().SetContentType("application/json;charset=utf-8")
                             .AddHeaders("X-Requested-With", "XMLHttpRequest")
                             .AddHeaders("Cookie", _cookies);
-                client.Proxy = _proxy;
+#if DEBUG
+#else
+            client.Proxy = _proxy;
+#endif
                 if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
                 var response = client.Request(url);
 

+ 15 - 2
molilian.core/Plus/Alimama/orders.cs

@@ -183,9 +183,22 @@ SET tr.order_ord_amt_14 = sub.order_ord_amt, tr.order_ord_tfee_14 = sub.order_or
                 try
                 {
                     var root = body.Convert2JsonElement();
-                    var succss = root.Read<bool>("success");
+                    var success = root.Read<bool>("success");
                     data = root.ElementRead("data");
-                    if (!succss)
+
+
+                    //{"code":601,"info":{"ok":false,"message":"nologin"}}
+                    if (!success && body.Contains("nologin"))
+                    {
+                        (success, string message) = RenewCookie();
+                        if (!success)
+                        {
+                            TkPoolCore.Disabled(_accountName, $"{body}");
+                        }
+                        return (0, DateTime.MinValue, new List<DateTime>());
+                    }
+
+                    if (!success)
                     {
                         throw new APIException(body);
                     }

+ 9 - 3
molilian.core/Plus/Alimama/parse.cs

@@ -91,7 +91,8 @@ namespace molilian.core
                 result.accountName = string.Empty;
                 result.content = content;
                 result.deeplink_url = GetDeeplink(null);
-                result.itemName = GetTitle(content);
+                //result.itemName = GetTitle(content);
+                result.itemName = "点击打开淘宝APP";
             }
             else
             {
@@ -99,7 +100,11 @@ namespace molilian.core
                 if (!result.success) { result.content = content; }
 
                 result = await alimamaParseAsync(result.content, result);
-                if (string.IsNullOrEmpty(result.itemName)) result.itemName = GetTitle(content);
+                if (!result.success)
+                {
+                    result.itemName = "点击打开淘宝APP";
+                }
+                //if (string.IsNullOrEmpty(result.itemName)) result.itemName = GetTitle(content);
             }
             if (string.IsNullOrEmpty(result.itemName) || result.link_type == LinkTypeEnum.profile)
             {
@@ -134,6 +139,7 @@ namespace molilian.core
             if (string.IsNullOrEmpty(content)) return content;
             string result = content;
             string pattern = @"https?:\/\/?([\da-z\.-]+)\.([a-z]{2,6})(:\d{1,5})?([\/\w\.-]*)*\/?(#[\S]+)?(\?[\S]+)?";
+            //string pattern = @"https?:\/\/[\da-z\.-]+\.[a-z]{2,6}(:\d{1,5})?(\/[\w\.-]*)*";
             Regex regex = new(pattern);
             MatchCollection matches = regex.Matches(content);
 
@@ -157,7 +163,7 @@ namespace molilian.core
         {
             if (string.IsNullOrEmpty(content)) return string.Empty;
             string url = GetLink(content);
-            content = content.Replace(url, string.Empty);
+            if (!string.IsNullOrEmpty(url)) content = content.Replace(url, string.Empty);
 
             content = content.Replace("点击链接直接打开 或者 淘宝搜索直接打开", string.Empty).Trim();
             string[] words = Regex.Split(content, @"\s+");

+ 11 - 15
molilian.core/Plus/Alimama/parse_2.cs

@@ -127,7 +127,7 @@ namespace molilian.core
         {
             // 使用正则表达式匹配内容中是否含有特定格式的字符串
             //string pattern = @"¥[a-zA-Z0-9\s]+¥";
-            string pattern = @"[$¥🗝₴€₤£₳✔《💰🔑🎵✔️💲🔐📲]+[a-zA-Z0-9\s]+[$¥🗝₴€₤£₳✔《💰🔑🎵✔️💲🔐📲]*";
+            string pattern = @"[$¥🗝₴€₤£₳✔《💰🔑🎵✔️💲🔐📲]+[a-zA-Z0-9\s]+[$¥🗝₴€₤£₳✔《💰🔑🎵✔️💲🔐📲]*";
             return Regex.IsMatch(content, pattern);
         }
 
@@ -154,7 +154,7 @@ namespace molilian.core
 #if DEBUG
                 client.Proxy = null;
 #else
-                client.Timeout = TimeSpan.FromMilliseconds(3000);
+                client.Timeout = TimeSpan.FromMilliseconds(5000);
 #endif
                 var response = client.Request(url);
 
@@ -233,7 +233,9 @@ namespace molilian.core
             //判断淘客的¥羊角符号
             if (ContainsSpecialFormat(content)) return (false, "排除淘口令", LinkTypeEnum.other_aff, null);
 
-            return (false, "纯口令 没链接", link_type, null);
+            //todo 临时应急  0614
+            //return (false, "纯口令 没链接", link_type, null);
+            return (false, "纯口令 没链接", LinkTypeEnum.other_aff, null);
         }
 
         private LinkTypeEnum GetLinkType(string url)
@@ -285,7 +287,7 @@ namespace molilian.core
 #endif
             if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
 
-            client.Timeout = TimeSpan.FromMilliseconds(1000);
+            client.Timeout = TimeSpan.FromMilliseconds(2000);
             var response = client.Request(url);
 
             var body = string.Empty;
@@ -460,7 +462,7 @@ namespace molilian.core
                         .AddHeaders("Cookie", _cookies);
             client.Proxy = _proxy;
             if (!string.IsNullOrEmpty(_user_agent)) client.UserAgent = _user_agent;
-            client.Timeout = TimeSpan.FromMilliseconds(1000);
+            client.Timeout = TimeSpan.FromMilliseconds(2000);
 #if DEBUG
             client.Proxy = null;
             client.Timeout = TimeSpan.FromMilliseconds(10000);
@@ -507,8 +509,8 @@ namespace molilian.core
                 string couponLinkTaoToken = root.PathRead("data.couponLinkTaoToken", string.Empty);
                 string couponShortLinkUrl = root.PathRead("data.couponShortLinkUrl", string.Empty);
                 decimal couponAmount = root.PathRead<decimal>("data.couponAmount", 0);
-                long couponEffectiveEndTime = root.PathRead<long>("data.couponEffectiveEndTime", 0);
-                long couponEffectiveStartTime = root.PathRead<long>("data.couponEffectiveStartTime", 0);
+                string couponEffectiveEndTime = root.PathRead("data.couponEffectiveEndTime", string.Empty);
+                string couponEffectiveStartTime = root.PathRead("data.couponEffectiveStartTime", string.Empty);
 
                 string itemId = root.PathRead("data.itemId", string.Empty);
                 string itemName = root.PathRead("data.itemName", string.Empty);
@@ -611,14 +613,8 @@ namespace molilian.core
                 result.content = content;
                 result.couponAmount = couponAmount;
 
-                if (couponEffectiveEndTime > 0)
-                {
-                    result.couponEffectiveEndTime = couponEffectiveEndTime.Convert2Datetime().ToString("yyyy-MM-dd HH:mm:ss");
-                }
-                if (couponEffectiveStartTime > 0)
-                {
-                    result.couponEffectiveStartTime = couponEffectiveStartTime.Convert2Datetime().ToString("yyyy-MM-dd HH:mm:ss");
-                }
+                result.couponEffectiveEndTime = couponEffectiveEndTime;
+                result.couponEffectiveStartTime = couponEffectiveStartTime;
 
                 result.taoToken = taoToken;
                 result.shortLinkurl = shortLinkurl;

+ 10 - 2
molilian.core/Plus/JDUnion/coupon.cs

@@ -63,8 +63,16 @@ namespace molilian.core
             result.deeplink_url = GetDeeplink(dtkResult.couponLink);
             result.couponAmount = dtkResult.couponAmount;
             result.itemId = dtkResult.skuId.ToString();
-            result.couponEffectiveStartTime = dtkResult.couponStartTime;
-            result.couponEffectiveEndTime = dtkResult.couponEndTime;
+
+            if (DateTime.TryParse(dtkResult.couponStartTime, out DateTime couponStartTime))
+            {
+                result.couponEffectiveStartTime = couponStartTime.Convert2UnixTimestamp(true).ToString();
+            }
+            if (DateTime.TryParse(dtkResult.couponEndTime, out DateTime couponEndTime))
+            {
+                result.couponEffectiveEndTime =couponEndTime.Convert2UnixTimestamp(true).ToString();
+            }
+
             result.pic = dtkResult.picMain;
 
             //2202076

+ 29 - 13
molilian.core/Plus/Tool/ToolParsePlus.cs

@@ -193,24 +193,40 @@ namespace molilian.core
 
         public static string GetWemeetIdFromUrl(string content)
         {
-            string pattern = @"https:\/\/meeting\.tencent\.com\/dm\/[a-zA-Z0-9]+";
+            {
+                string pattern = @"https:\/\/meeting\.tencent\.com\/p\/([0-9]+)";
 
-            Regex regex = new Regex(pattern);
-            Match match = regex.Match(content);
+                Regex regex = new Regex(pattern);
+                Match match = regex.Match(content);
+
+                // 判断是否匹配成功
+                if (match.Success)
+                {
+                    // 提取会议编码
+                    string meetingCode = match.Groups[1].Value;
+                    return meetingCode;
+                }
+            }
 
-            // 判断是否匹配成功
-            if (match.Success)
             {
-                // 提取会议编码
-                string meeting_url = match.Value;
-                var body = GetDesiredUrl(meeting_url);
-                if (string.IsNullOrEmpty(body)) return string.Empty;
+                string pattern = @"https:\/\/meeting\.tencent\.com\/dm\/[a-zA-Z0-9]+";
+
+                Regex regex = new Regex(pattern);
+                Match match = regex.Match(content);
+
+                // 判断是否匹配成功
+                if (match.Success)
+                {
+                    // 提取会议编码
+                    string meeting_url = match.Value;
+                    var body = GetDesiredUrl(meeting_url);
+                    if (string.IsNullOrEmpty(body)) return string.Empty;
 
-                string meetingCode = body.GetContentPart("\"meeting_code\":\"", "\"");
-                return meetingCode;
+                    string meetingCode = body.GetContentPart("\"meeting_code\":\"", "\"");
+                    return meetingCode;
+                }
+                return string.Empty;
             }
-            return string.Empty;
         }
-
     }
 }

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно