Przeglądaj źródła

增加tb滑块提醒;增加pdd可提现余额查询

dodo hold 10 miesięcy temu
rodzic
commit
e9193ef538

+ 6 - 0
molilian.api/Controllers/admin/PddUnionController.cs

@@ -170,6 +170,12 @@ namespace molilian.api.Controllers
                            .Where("id=@id", new { id })
                            .Update();
                     break;
+                case "balance":
+                    // todo 更新账户余额
+                    var account = new DBContext.Table("pdd_pool").Get<PddPoolDTO>("id=@id", new { id });
+                    var plus = new PddUnionPlus(account);
+                    result = await plus.queryMallBalance();
+                    break;
                 default:
                     return new APIResult(new { data = new { success = false, msg = "更新失败,未授权操作" } });
             }

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

@@ -33,7 +33,7 @@ namespace molilian.api.Controllers
 
 
             string cookie = form.Read<string>("cookie", string.Empty);
-            var accountId = TkPoolCore.UpdateCookies(cookie, user_agent);
+            var accountId = await TkPoolCore.UpdateCookies(cookie, user_agent);
             bool success = accountId > 0;
             if (success)
             {
@@ -132,7 +132,7 @@ namespace molilian.api.Controllers
         /// <param name="form"></param>
         /// <returns></returns>
         [HttpPost]
-        public ActionResult list([FromBody] JsonElement form)
+        public async Task<ActionResult> list([FromBody] JsonElement form)
         {
             var token = provider.Get(_accessor.HttpContext);
 
@@ -201,6 +201,8 @@ namespace molilian.api.Controllers
             {
                 item.current_amt = Math.Round(RiskControlCore.GetIncomeAmt(TkChannelEnum.tb, $"{item.id}"), 2);
                 item.cookies = string.Empty;
+                //await RiskControlCore.SetRiskCookie($"tb:{item.id}", "TEST");
+                item.riskCookie = RiskControlCore.GetRiskCookie($"tb:{item.id}");
             }
             return new APIResult(new { data = result });
         }

+ 3 - 3
molilian.api/Controllers/public/TaskController.cs

@@ -195,7 +195,7 @@ namespace molilian.api.Controllers
         }
 
         [HttpGet]
-        public async Task<ActionResult> GetIncyOrders(int sleep = 2000)
+        public async Task<ActionResult> GetIncyOrders(int sleep = 2000, int retry_days = 0)
         {
             var list = await TkPoolCore.ListAsync();
             if (list == null) return new APIResult(new { success = false, message = "没有有效账号", });
@@ -206,12 +206,12 @@ namespace molilian.api.Controllers
                 if (!account.enable_sync_order) continue;
 
 #if DEBUG
-                if (account.id != 113) continue;
+                if (account.id != 128) continue;
 #endif
                 try
                 {
                     var alimama = new AlimamaPlus(account);
-                    total = await alimama.GetIncyOrdersAsync(sleep);
+                    total = await alimama.GetIncyOrdersAsync(sleep, retry_days);
                 }
                 catch (Exception ex)
                 {

+ 8 - 1
molilian.api/Controllers/public/TkController.cs

@@ -242,7 +242,14 @@ namespace molilian.api.Controllers
         [HttpGet]
         public async Task<ActionResult> jd_parse(string s, string s2 = "", string ip = "", string oaid = "")
         {
-            var result = JdUnionPlus.GetFormattedObject(s, ip, oaid);
+            UnionParseRequest request = new()
+            {
+                Content = s,
+                Ip = ip,
+                Oaid = oaid
+            };
+
+            var result = JdUnionPlus.GetFormattedObject(request);
             string body = "";
             string content = s.UrlDecode();
             string content2 = s2.UrlDecode();

Plik diff jest za duży
+ 0 - 0
molilian.api/Properties/PublishProfiles/latest.pubxml.user


+ 21 - 0
molilian.core/Core/taoke/RiskControlCore.cs

@@ -210,6 +210,27 @@ namespace molilian.core
             catch (Exception ex) { return 0; }
         }
 
+
+        public static string GetRiskCookie(string accountName)
+        {
+            try
+            {
+                string cache_key = $":RiskControl:riskCookie:{accountName}";
+                return RedisHelper.Get<string>(cache_key);
+            }
+            catch (Exception ex) { return null; }
+        }
+
+        public static bool SetRiskCookie(string accountName, string flagVal)
+        {
+            try
+            {
+                string cache_key = $":RiskControl:riskCookie:{accountName}";
+                return RedisHelper.Set(cache_key, flagVal);
+            }
+            catch (Exception ex) { return false; }
+        }
+
     }
 
 }

+ 3 - 1
molilian.core/Core/taoke/TkPoolCore.cs

@@ -410,7 +410,7 @@ namespace molilian.core
             _ = EndPointCore.NotifyReload(true);
         }
 
-        public static int UpdateCookies(string cookies, string user_agent)
+        public static async Task<int> UpdateCookies(string cookies, string user_agent)
         {
             if (string.IsNullOrEmpty(cookies)) return 0;
             cookies += ";";
@@ -438,6 +438,7 @@ namespace molilian.core
                    .Add("login_time", DateTime.Now)
                    .Where("id=@id", new { exist.id })
                    .Update();
+                RiskControlCore.SetRiskCookie($"tb:{exist.id}", "");
                 if (status == 1) _ = ListAsync(true);
             }
             else
@@ -454,6 +455,7 @@ namespace molilian.core
                     .Add("login_time", DateTime.Now)
                     .Add("status", 0)
                     .Create();
+                RiskControlCore.SetRiskCookie($"tb:{accountId}", "");
             }
 
             NotifyCore.Notify(new NifyMessage

+ 8 - 8
molilian.core/Core/taoke/UnionParseCore/UnionParseCore.cs

@@ -170,7 +170,7 @@ namespace molilian.core
             bool other_aff = false;
             AlimamaPlus alimama = null;
             //content = content.UrlDecode();
-            var result = AlimamaPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
+            var result = AlimamaPlus.GetFormattedObject(request);
 
             result.riskStrategy = request.RiskStrategy;
             result.launchScene = request.LaunchScene;
@@ -582,7 +582,7 @@ namespace molilian.core
         public static async Task<APIResult> GoodsJdParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
             var config = TkConfigCore.Get();
-            var result = JdUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid, request.ClickId);
+            var result = JdUnionPlus.GetFormattedObject(request);
 
             result.rawContent = request.Content;
             result.riskStrategy = request.RiskStrategy;
@@ -757,7 +757,7 @@ namespace molilian.core
         public static async Task<APIResult> JdParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
             var config = TkConfigCore.Get();
-            var result = JdUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid, request.ClickId);
+            var result = JdUnionPlus.GetFormattedObject(request);
 
             result.rawContent = request.Content;
             result.riskStrategy = request.RiskStrategy;
@@ -1021,7 +1021,7 @@ namespace molilian.core
 
         public static async Task<APIResult> PddParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
-            var result = PddUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
+            var result = PddUnionPlus.GetFormattedObject(request);
 
             var overrideContent = await OverrideRuleCore.ProcessAsync(request);
             if (overrideContent != null)
@@ -1039,7 +1039,7 @@ namespace molilian.core
             if (string.IsNullOrEmpty(result.shortLinkurl))
             {
                 result.success = false;
-                result.deeplink_url = string.Empty;
+                result.deeplink_url = PddUnionPlus.GetDeeplink(string.Empty);
                 result.message = "放弃转链";
                 result.reason = "纯口令";
                 _ = TkLogCore.ParseLogAsync(result);
@@ -1064,7 +1064,7 @@ namespace molilian.core
                     if (anyMatch)
                     {
                         result.success = false;
-                        result.deeplink_url = string.Empty;
+                        result.deeplink_url = PddUnionPlus.GetDeeplink(result.shortLinkurl);
                         result.message = "放弃转链";
                         result.reason = "规则排除";
                         _ = TkLogCore.ParseLogAsync(result);
@@ -1077,7 +1077,7 @@ namespace molilian.core
                     result.success = false;
                     result.message = "放弃转链";
                     result.reason = reason;
-                    result.deeplink_url = PddUnionPlus.GetDeeplink(result.rawContent);
+                    result.deeplink_url = PddUnionPlus.GetDeeplink(result.shortLinkurl);
                     _ = TkLogCore.ParseLogAsync(result);
                     return PddParseOutput(result);
                 }
@@ -1143,7 +1143,7 @@ namespace molilian.core
         }
         public static async Task<APIResult> GoodsPddParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
-            var result = PddUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
+            var result = PddUnionPlus.GetFormattedObject(request);
 
             string content = request.Content;
             content = content.UrlDecode();

+ 3 - 3
molilian.core/Core/taoke/UnionParseCore/dp2dp.cs

@@ -20,7 +20,7 @@ namespace molilian.core
         {
             bool other_aff = false;
             AlimamaPlus alimama = null;
-            var result = AlimamaPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
+            var result = AlimamaPlus.GetFormattedObject(request);
 
             result.riskStrategy = request.RiskStrategy;
             result.launchScene = request.LaunchScene;
@@ -508,7 +508,7 @@ namespace molilian.core
         public static async Task<APIResult> DeeplinkJdParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
             var config = TkConfigCore.Get();
-            var result = JdUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid, request.ClickId);
+            var result = JdUnionPlus.GetFormattedObject(request);
 
             result.rawContent = request.Content;
             result.parse_type = "dp";
@@ -686,7 +686,7 @@ namespace molilian.core
 
         public static async Task<APIResult> DeeplinkPddParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
         {
-            var result = PddUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
+            var result = PddUnionPlus.GetFormattedObject(request);
             var content = request.Content.UrlDecode();
             result.rawContent = content;
 

+ 1 - 0
molilian.core/DTO/alimama/TkPoolDTO.cs

@@ -72,6 +72,7 @@
         public bool useCouponLinkFirst { get; set; } = true;
         public string parse_type { get; set; } = string.Empty;
         public string strategy_id { get; set; } = string.Empty;
+        public string riskCookie { get; set; } = string.Empty;
 
     }
 }

+ 1 - 0
molilian.core/Plus/Alimama/RefundOrders.cs

@@ -305,6 +305,7 @@ namespace molilian.core
                         body = response.Body();
                         if (body.Contains("{\"action\":\"captcha\""))
                         {
+                            RiskControlCore.SetRiskCookie($"tb:{_accountId}", "滑块");
                             string message = $"【GetTkRefundOrders】【{_accountId}:{_accountName}】第 {i} 次出现滑动验证码";
                             NotifyCore.Notify(new NifyMessage
                             {

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

@@ -138,7 +138,7 @@ SET  order_ord_num = order_ord_num_3 + order_ord_num_12 + order_ord_num_13 + ord
             }
 
         }
-        public async Task<int> GetIncyOrdersAsync(int sleep)
+        public async Task<int> GetIncyOrdersAsync(int sleep, int retry_days = 0)
         {
             string lockKey = $"lock:GetIncyOrders:{_accountId}";
 
@@ -174,7 +174,10 @@ SET  order_ord_num = order_ord_num_3 + order_ord_num_12 + order_ord_num_13 + ord
                 {
                     last_modifiedTime = startTime;
                 }
-
+                if (retry_days > 0)
+                {
+                    last_modifiedTime = DateTime.Now.AddDays(-retry_days);
+                }
                 //当日往前查询
                 (int total, DateTime max_modifiedTime, List<DateTime> orderTimes) = await GetTkOrdersAsync(startTime, endTime, last_modifiedTime, true, sleep);
                 if (max_modifiedTime != DateTime.MinValue)
@@ -360,6 +363,7 @@ SET  order_ord_num = order_ord_num_3 + order_ord_num_12 + order_ord_num_13 + ord
 #endif
                     if (body.Contains("{\"action\":\"captcha\""))
                     {
+                        RiskControlCore.SetRiskCookie($"tb:{_accountId}", "滑块");
                         string message = $"【GetTkOrdersByAdZone】【{_accountId}:{_accountName}】出现滑动验证码";
                         NotifyCore.Notify(new NifyMessage
                         {
@@ -535,6 +539,7 @@ SET  order_ord_num = order_ord_num_3 + order_ord_num_12 + order_ord_num_13 + ord
 
                     if (body.Contains("{\"action\":\"captcha\""))
                     {
+                        RiskControlCore.SetRiskCookie($"tb:{_accountId}", "滑块");
                         string message = $"【GetTkOrders】【{_accountId}:{_accountName}】出现滑动验证码";
                         NotifyCore.Notify(new NifyMessage
                         {

+ 6 - 5
molilian.core/Plus/Alimama/parse.cs

@@ -614,9 +614,9 @@ namespace molilian.core
             return false;
         }
 
-        public static TkDataDTO GetFormattedObject(string content, string ip, string oaid)
+        public static TkDataDTO GetFormattedObject(UnionParseRequest request)
         {
-            string shortLinkurl = GetTaobaoLink(content);
+            string shortLinkurl = GetTaobaoLink(request.Content);
             string deeplink_url = GetDeeplink(shortLinkurl);
             return new TkDataDTO()
             {
@@ -625,10 +625,10 @@ namespace molilian.core
                 channel = TkChannelEnum.tb,
                 accountName = string.Empty,
                 success = false,
-                content = content,
+                content = request.Content,
                 link_type = LinkTypeEnum.unknown,
-                ip = ip,
-                oaid = oaid,
+                ip = request.Ip,
+                oaid = request.Oaid,
                 couponAmount = 0,
                 taoToken = string.Empty,
                 elapsedTime = 0,
@@ -637,6 +637,7 @@ namespace molilian.core
                 deeplink_url = deeplink_url,
                 create_time = DateTime.Now,
                 end_point = _end_point,
+                parse_type = request.Type,
             };
         }
 

+ 6 - 5
molilian.core/Plus/JDUnion/JdUnionPlus.cs

@@ -132,9 +132,9 @@ namespace molilian.core
         //    return result;
         //}
 
-        public static JdDataDTO GetFormattedObject(string content, string ip = "", string oaid = "", string clickId = "")
+        public static JdDataDTO GetFormattedObject(UnionParseRequest request)
         {
-            string shortLinkurl = GetLink(content);
+            string shortLinkurl = GetLink(request.Content);
             string deeplink_url = GetDefaultStyleDeeplink(shortLinkurl);
 
             return new JdDataDTO()
@@ -144,15 +144,16 @@ namespace molilian.core
                 channel = TkChannelEnum.jd,
                 accountName = string.Empty,
                 success = false,
-                content = content,
-                ip = ip,
-                oaid = oaid,
+                content = request.Content,
+                ip = request.Ip,
+                oaid = request.Oaid,
                 elapsedTime = 0,
                 itemName = "点击打开京东APP",
                 shortLinkurl = shortLinkurl,
                 deeplink_url = deeplink_url,
                 create_time = DateTime.Now,
                 end_point = _end_point,
+                parse_type = request.Type,
             };
         }
 

+ 45 - 4
molilian.core/Plus/pdd/EstimateRevenue.cs

@@ -3,7 +3,6 @@ using Sayaka.Common;
 using System.Drawing.Printing;
 using System.Text.Json;
 
-
 namespace molilian.core
 {
     public partial class PddUnionPlus
@@ -80,7 +79,49 @@ namespace molilian.core
             }
         }
 
-        public async Task<JsonElement> RequestAsync(string url, string data, CancellationToken cancellationToken = default)
+        public async Task<int> queryMallBalance(CancellationToken cancellationToken = default)
+        {
+            try
+            {
+                var ts = DateTime.Now.Convert2UnixTimestamp(true);
+                string cookies = _account.cookies;
+
+                DateTime stime = DateTime.Now;
+                string url = "https://jinbao.pinduoduo.com/network/api/finance/mallBalance";
+                var root = await this.RequestAsync(url);
+                TimeSpan ts2 = DateTime.Now - stime;
+
+                string xx = ts2.TotalSeconds.ToString();
+
+                var success = root.Read<bool>("success");
+                if (!success) throw new Exception(root.Convert2Json());
+                var balanceAmount = root.PathRead<int>("result.balanceAmount");
+                var withdrawalAmount = root.PathRead<int>("result.withdrawalAmount");
+
+
+                return new DBContext.Table("pdd_pool")
+                     .Add("draw_balance", withdrawalAmount * 0.001)
+                     .Where("id=@id", new { _account.id })
+                     .Update();
+            }
+            catch (Exception ex)
+            {
+                if (ex.Message.Contains("43001:会话已过期"))
+                {
+                    PddPoolCore.CookieDisabled(_account.id);
+                }
+                string message = $"【PDD报表接口异常】{_account.id}:{_account.name}\tmallBalance\n{ex.Message}\n{ex.StackTrace}";
+                NotifyCore.Notify(new NifyMessage
+                {
+                    message = message,
+                    priority = NifyMessagePriority.high,
+                    tags = ["red_circle"]
+                });
+            }
+            return 0;
+        }
+
+        public async Task<JsonElement> RequestAsync(string url, string data = null, CancellationToken cancellationToken = default)
         {
             string cookies = _account.cookies.Trim();
             string useragent = ProviderFakeUserAgent.RandomComputer;
@@ -95,8 +136,8 @@ namespace molilian.core
             client.AddHeaders("Origin", "https://jinbao.pinduoduo.com");
             client.UserAgent = useragent;
             client.AddHeaders("Cookie", cookies);
-            client.Post(data);
-            var response = await client.RequestAsync(url, "POST", cancellationToken);
+            if (string.IsNullOrEmpty(data)) client.Post(data);
+            var response = await client.RequestAsync(url, string.IsNullOrEmpty(data) ? "GET" : "POST", cancellationToken);
             string body = response.Body();
             var root = body.Convert2JsonElement();
 

+ 6 - 5
molilian.core/Plus/pdd/PddUnionPlus.cs

@@ -103,9 +103,9 @@ namespace molilian.core
 
 
 
-        public static PddDataDTO GetFormattedObject(string content, string ip = "", string oaid = "")
+        public static PddDataDTO GetFormattedObject(UnionParseRequest request)
         {
-            string shortLinkurl = GetLink(content);
+            string shortLinkurl = GetLink(request.Content);
             string deeplink_url = GetDeeplink(shortLinkurl);
             var link_type = LinkTypeEnum.unknown;
             if (!string.IsNullOrEmpty(shortLinkurl) && shortLinkurl.StartsWith("https://p.pinduoduo.com/"))
@@ -120,15 +120,16 @@ namespace molilian.core
                 channel = TkChannelEnum.pdd,
                 accountName = string.Empty,
                 success = false,
-                content = content,
-                ip = ip,
-                oaid = oaid,
+                content = request.Content,
+                ip = request.Ip,
+                oaid = request.Oaid,
                 elapsedTime = 0,
                 itemName = "点击打开拼多多APP",
                 shortLinkurl = shortLinkurl,
                 deeplink_url = string.Empty,
                 create_time = DateTime.Now,
                 end_point = _end_point,
+                parse_type = request.Type,
             };
         }
 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików