Browse Source

小范围修改redis底层库,京东先走;
增加health;

dodo hold 1 năm trước cách đây
mục cha
commit
a952292d88

+ 2 - 2
molilian.api/Controllers/admin/AliyunController.cs

@@ -141,7 +141,7 @@ namespace molilian.api.Controllers
 
 
         [HttpPost]
-        public ActionResult ecs_list([FromBody] JsonElement form)
+        public async Task<ActionResult> ecs_list([FromBody] JsonElement form)
         {
             var token = provider.Get(_accessor.HttpContext);
 
@@ -201,7 +201,7 @@ namespace molilian.api.Controllers
                 .PageList<DailyLogsDTO>(getTotal);
 
 
-            var accounts = JdPoolCore.List();
+            var accounts = await JdPoolCore.ListAsync();
             var hide_ids = accounts.Where(e => e.is_hide).Select(e => e.id).ToList();
             result.List = result.List.Where(e => e.channel != 1 || !hide_ids.Contains(e.accountId));
             return new APIResult(new { data = result });

+ 2 - 2
molilian.api/Controllers/admin/ReportController.cs

@@ -18,7 +18,7 @@ namespace molilian.api.Controllers
         }
 
         [HttpPost]
-        public ActionResult daily_list([FromBody] JsonElement form)
+        public async Task<ActionResult> daily_list([FromBody] JsonElement form)
         {
             var token = provider.Get(_accessor.HttpContext);
 
@@ -78,7 +78,7 @@ namespace molilian.api.Controllers
                 .PageList<DailyLogsDTO>(getTotal);
 
 
-            var accounts = JdPoolCore.List();
+            var accounts = await JdPoolCore.ListAsync();
             var hide_ids = accounts.Where(e => e.is_hide).Select(e => e.id).ToList();
             result.List = result.List.Where(e => e.channel != 1 || !hide_ids.Contains(e.accountId));
             return new APIResult(new { data = result });

+ 2 - 2
molilian.api/Controllers/public/JDTaskController.cs

@@ -29,7 +29,7 @@ namespace molilian.api.Controllers
         [HttpGet]
         public async Task<ActionResult> GetHistoryOrders(int id, int sleep, int h = 0)
         {
-            var list = JdPoolCore.List();
+            var list = await JdPoolCore.ListAsync();
             if (list == null) return new APIResult(new { success = false, message = "没有有效账号", });
 
             string message = string.Empty;
@@ -91,7 +91,7 @@ namespace molilian.api.Controllers
         [HttpGet]
         public async Task<ActionResult> GetIncyOrders(int sleep = 2000)
         {
-            var list = JdPoolCore.List();
+            var list = await JdPoolCore.ListAsync();
             if (list == null) return new APIResult(new { success = false, message = "没有有效账号", });
             string message = string.Empty;
             int total = 0;

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

@@ -347,7 +347,7 @@ namespace molilian.api.Controllers
 
                 if (CenterHub.IsCenter)
                 {
-                    JdUnionPlus.DailyLogs(intervalDay);
+                    _ = JdUnionPlus.DailyLogsAsync(intervalDay);
                     ToolParsePlus.DailyLogs(intervalDay);
 
                     //中心服务器统计
@@ -615,7 +615,7 @@ namespace molilian.api.Controllers
                             if (ex.Message.Contains("no login"))
                             {
                                 account.status = false;
-                                JdPoolCore.Disabled(account.id, account.name, ex.Message);
+                                _ = JdPoolCore.DisabledAsync(account.id, account.name, ex.Message);
                             }
                             message = $"【JD报表接口异常】{account.id}:{account.name}\tqueryTodaySpreadEffectData\n{ex.Message}\n{ex.StackTrace}";
                             NotifyCore.Notify(message);
@@ -770,7 +770,7 @@ namespace molilian.api.Controllers
                         {
                             if (ex.Message.Contains("no login"))
                             {
-                                JdPoolCore.Disabled(account.id, account.name, ex.Message);
+                                _ = JdPoolCore.DisabledAsync(account.id, account.name, ex.Message);
                             }
                             message = $"【JD报表接口异常】{account.id}:{account.name}\tquerySpreadEffectData\n{ex.Message}\n{ex.StackTrace}";
                             NotifyCore.Notify(message);

+ 2 - 2
molilian.api/Controllers/public/TkController.cs

@@ -298,7 +298,7 @@ namespace molilian.api.Controllers
         }
 
         [HttpGet]
-        public ActionResult jd_parse(string s, string s2 = "", string ip = "", string oaid = "")
+        public async Task<ActionResult> jd_parse(string s, string s2 = "", string ip = "", string oaid = "")
         {
             var result = JdUnionPlus.GetFormattedObject(s, ip, oaid);
             string body = "";
@@ -329,7 +329,7 @@ namespace molilian.api.Controllers
                     return new APIResult(result);
                 }
 
-                var account = JdPoolCore.GetOne();
+                var account = await JdPoolCore.GetOneAsync();
                 if (account == null)
                 {
                     result.success = false;

+ 26 - 0
molilian.api/Program.cs

@@ -3,6 +3,8 @@ using dodohold.core;
 using Microsoft.Extensions.DependencyInjection.Extensions;
 using Microsoft.OpenApi.Models;
 using System.Security.Cryptography.Xml;
+using Microsoft.Extensions.Diagnostics.HealthChecks;
+using Microsoft.AspNetCore.Diagnostics.HealthChecks;
 
 var builder = WebApplication.CreateBuilder(args);
 builder.Services.Init();
@@ -55,8 +57,32 @@ builder.Services.AddCors(options =>
         });
 });
 
+
+// Ìí¼Ó½¡¿µ¼ì²é·þÎñ
+builder.Services.AddHealthChecks().AddCheck("self", () => HealthCheckResult.Healthy());
+
+
 var app = builder.Build();
 
+app.MapHealthChecks("/health", new HealthCheckOptions
+{
+    ResponseWriter = async (context, report) =>
+    {
+        context.Response.ContentType = "application/json";
+        await context.Response.WriteAsJsonAsync(new
+        {
+            status = report.Status.ToString(),
+            checks = report.Entries.Select(e => new
+            {
+                name = e.Key,
+                status = e.Value.Status.ToString(),
+                description = e.Value.Description
+            })
+        });
+    }
+});
+
+
 // Configure the HTTP request pipeline.
 if (app.Environment.IsDevelopment())
 {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
molilian.api/Properties/PublishProfiles/tester.pubxml.user


+ 1 - 1
molilian.api/molilian.api.csproj

@@ -15,7 +15,7 @@
     <PackageReference Include="dodohold.core" Version="1.0.1.17" />
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.0-Preview.1" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
-    <PackageReference Include="YunhuiKit" Version="0.0.5" />
+    <PackageReference Include="YunhuiKit" Version="0.0.7" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
molilian.api/molilian.api.csproj.user

@@ -2,7 +2,7 @@
 <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <ActiveDebugProfile>http</ActiveDebugProfile>
-    <NameOfLastUsedPublishProfile>E:\project\2024\molilian\server\molilian.api\Properties\PublishProfiles\latest.pubxml</NameOfLastUsedPublishProfile>
+    <NameOfLastUsedPublishProfile>E:\project\2024\molilian\server\molilian.api\Properties\PublishProfiles\tester.pubxml</NameOfLastUsedPublishProfile>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <DebuggerFlavor>ProjectDebugger</DebuggerFlavor>

+ 55 - 33
molilian.core/Core/jd/JdPoolCore.cs

@@ -10,6 +10,8 @@ using Dataoke;
 using Google.Protobuf.WellKnownTypes;
 using System.Xml.Linq;
 using Mysqlx.Crud;
+using ZstdSharp.Unsafe;
+using YunhuiKit;
 
 
 namespace molilian.core
@@ -35,35 +37,57 @@ namespace molilian.core
         private static readonly object _lockObj = new();
         private static IEnumerable<JdPoolDTO> _cached;
         private static IEnumerable<JdPoolDTO> _all_cached;
-        public static JdPoolDTO? GetOne()
+        public static async Task<JdPoolDTO?> GetOneAsync()
         {
-            var list = List();
+            var list = await ListAsync();
             if (!list.Any()) return null;
             return list.OrderBy(l => Guid.NewGuid()).FirstOrDefault();
         }
 
-        public static JdPoolDTO? GetSpecialOne(int accountid)
+        public static async Task<JdPoolDTO?> GetSpecialOneAsync(int accountid)
         {
-            var list = AllList();
+            var list = await AllListAsync();
             if (!list.Any()) return null;
             return list.Where(e => e.id == accountid).OrderBy(l => Guid.NewGuid()).FirstOrDefault();
         }
 
 
-        public static JdPoolDTO? GetOne(int id, JdAction action)
+        public static async Task<JdPoolDTO?> GetOneAsync(int id, JdAction action)
         {
-            var list = List();
+            var list = await ListAsync();
             if (!list.Any()) return null;
-            return list.Where(e => e.id == id && IsNotExceedDailyIncomeLimit(e, action)).OrderBy(l => Guid.NewGuid()).FirstOrDefault();
+
+            var eligibleItems = new List<JdPoolDTO>();
+            foreach (var item in list.Where(e => e.id == id))
+            {
+                if (await IsNotExceedDailyIncomeLimitAsync(item, action))
+                {
+                    eligibleItems.Add(item);
+                }
+            }
+
+            return eligibleItems.OrderBy(l => Guid.NewGuid()).FirstOrDefault();
         }
 
-        public static JdPoolDTO? GetOne(JdAction action)
+        public static async Task<JdPoolDTO?> GetOneAsync(JdAction action)
         {
-            var list = List();
+            var list = await ListAsync();
             if (!list.Any()) return null;
-            return list.Where(e => IsNotExceedDailyIncomeLimit(e, action)).OrderBy(l => Guid.NewGuid()).FirstOrDefault();
+
+            var eligibleItems = new List<JdPoolDTO>();
+            foreach (var item in list)
+            {
+                if (await IsNotExceedDailyIncomeLimitAsync(item, action))
+                {
+                    eligibleItems.Add(item);
+                }
+            }
+
+            return eligibleItems.OrderBy(l => Guid.NewGuid()).FirstOrDefault();
         }
-        private static bool IsNotExceedDailyIncomeLimit(JdPoolDTO item, JdAction action)
+
+
+        private static async Task<bool> IsNotExceedDailyIncomeLimitAsync(JdPoolDTO item, JdAction action)
         {
             if (!string.IsNullOrEmpty(_end_point) && !string.IsNullOrEmpty(item.end_point))
             {
@@ -98,11 +122,11 @@ namespace molilian.core
             return true;
         }
 
-        public static IEnumerable<JdPoolDTO> AllList(bool force = false)
+        public static async Task<IEnumerable<JdPoolDTO>> AllListAsync(bool force = false)
         {
             if (!force && _all_cached != default) return _all_cached;
             string cache_key = $"cache:all_jd_pool";
-            var list = RedisHelper.Get<IEnumerable<JdPoolDTO>>(cache_key);
+            var list = await RedisKit.GetAsync<IEnumerable<JdPoolDTO>>(cache_key);
             if (force || list == default)
             {
                 lock (_lockObj)
@@ -110,18 +134,18 @@ namespace molilian.core
                     list = new DBContext.Table("jd_pool").Select<JdPoolDTO>();
                     if (list == null) return default;
 
-                    RedisHelper.Set(cache_key, list, 30 * 86400);
+                    _ = RedisKit.SetAsync(cache_key, list, 30 * 86400);
                 }
             }
             _all_cached = list;
             return list;
         }
 
-        public static IEnumerable<JdPoolDTO> List(bool force = false)
+        public static async Task<IEnumerable<JdPoolDTO>> ListAsync(bool force = false)
         {
             if (!force && _cached != null) return _cached;
             string cache_key = $"cache:jd_pool";
-            var list = RedisHelper.Get<IEnumerable<JdPoolDTO>>(cache_key);
+            var list = await RedisKit.GetAsync<IEnumerable<JdPoolDTO>>(cache_key);
             if (force || list == null)
             {
                 lock (_lockObj)
@@ -133,10 +157,10 @@ namespace molilian.core
 
                     foreach (var item in list)
                     {
-                        RiskControlCore.SetCallsAsync(TkChannelEnum.jd, item.id, DateTime.Now.ToString("yyyyMMddHH"), item.current_hourly_calls);
-                        RiskControlCore.SetCallsAsync(TkChannelEnum.jd, item.id, DateTime.Now.ToString("yyyyMMdd"), item.current_daily_calls);
+                        _ = RiskControlCore.SetCallsAsync(TkChannelEnum.jd, item.id, DateTime.Now.ToString("yyyyMMddHH"), item.current_hourly_calls);
+                        _ = RiskControlCore.SetCallsAsync(TkChannelEnum.jd, item.id, DateTime.Now.ToString("yyyyMMdd"), item.current_daily_calls);
                     }
-                    RedisHelper.Set(cache_key, list, 30 * 86400);
+                    _ = RedisKit.SetAsync(cache_key, list, 30 * 86400);
                 }
             }
             _cached = list;
@@ -147,8 +171,8 @@ namespace molilian.core
         {
             _all_cached = [];
             _cached = [];
-            _ = List(true);
-            _ = AllList();
+            _ = ListAsync(true);
+            _ = AllListAsync();
         }
 
         public static int Update(JdPoolDTO account)
@@ -199,7 +223,7 @@ namespace molilian.core
                 if (!string.IsNullOrEmpty(h5st)) update.Add("h5st", h5st);
 
                 update.Update();
-                if (status) _ = List(true);
+                if (status) _ = ListAsync(true);
             }
             else
             {
@@ -223,17 +247,17 @@ namespace molilian.core
                 message = $"【京东{accountId}:{company}】cookie 上线",
                 tags = ["green_circle"]
             });
-            EndPointCore.NotifyReload(true);
+            _ = EndPointCore.NotifyReload(true);
             //NotifyCore.AnPushNotify("上线", $"【淘宝联盟:{dnk}】cookie 上报更新");
             return accountId;
         }
 
 
-        public static void Disabled(int accountId, string name, string content)
+        public static async Task DisabledAsync(int accountId, string name, string content)
         {
             string cache_key = $"cache:jd_pool:{name}:disabled";
-            long count = RedisHelper.IncrBy(cache_key);
-            RedisHelper.Expire(cache_key, 10);
+            long count = await RedisKit.IncrByAsync(cache_key);
+            _ = RedisKit.ExpireAsync(cache_key, 10);
             if (count > 1) return;
 
             var update = new DBContext.Table("jd_pool").Add("status", 0);
@@ -245,9 +269,7 @@ namespace molilian.core
             {
                 update.Where("name=@name", new { name }).Update();
             }
-
-            _ = List(true);
-
+            _ = ListAsync(true);
             NotifyCore.Notify(new NifyMessage
             {
                 message = $"【京东联盟{accountId}:{name}】cookie 掉线\n\n{content}",
@@ -256,18 +278,18 @@ namespace molilian.core
             });
 
             //NotifyCore.AnPushNotify("掉线", $"【京东{accountId}:{name}】cookie 掉线");
-            EndPointCore.NotifyReload(true);
+            _ = EndPointCore.NotifyReload(true);
         }
 
 
 
 
-        internal static void AccountExhausted()
+        internal static async Task AccountExhaustedAsync()
         {
             string cache_key = $"cache:tk_pool:account:exhausted";
-            long count = RedisHelper.IncrBy(cache_key);
+            long count = await RedisKit.IncrByAsync(cache_key);
             if (count > 1) return;
-            RedisHelper.Expire(cache_key, 3600);
+            _ = RedisKit.ExpireAsync(cache_key, 3600);
             NotifyCore.Notify(new NifyMessage
             {
                 message = $"【京东联盟】没有匹配账号",

+ 74 - 1
molilian.core/Core/log/base.cs

@@ -80,7 +80,6 @@ namespace molilian.core
                         }
 #endif
 
-
                         var redis = RedisClientManager.GetRedisClient(node.redis_server);
                         return BatchInsertLogDB(limit, redis);
                     });
@@ -529,6 +528,80 @@ namespace molilian.core
         }
 
 
+        private static async Task SaveParseCacheAsync(string channel, int accountId, string accountName,
+            bool success, string message, string reason, string deeplink)
+        {
+            string dp_flag = deeplink switch
+            {
+                "" => "none",
+                "tbopen://m.taobao.com/tbopen/index.html" or
+                "pinduoduo://com.xunmeng.pinduoduo/" or
+                "snssdk1128://feed?refer=web" or
+                "bdnetdisk://n/action.EXTERNAL_ACTIVITY" or
+                "openapp.jdmobile://virtual?params=" or "openapp.jdmobile://" => "home",
+                _ => success ? "success" : "fail",
+            };
+
+            //关于dp的缓存
+            await SaveParseAccountCacheAsync($"dp_{dp_flag}:all", success, message, reason);
+            await SaveParseAccountCacheAsync($"dp_{dp_flag}:{channel}", success, message, reason);
+            await SaveParseAccountCacheAsync($"dp_{dp_flag}:{accountName}", success, message, reason);
+            if (accountId != 0)
+            {
+                await SaveParseAccountCacheAsync($"dp_{dp_flag}:{channel}_{accountId}", success, message, reason);
+            }
+
+            await SaveParseAccountCacheAsync("all", success, message, reason);
+            await SaveParseAccountCacheAsync($"{channel}", success, message, reason);
+            await SaveParseAccountCacheAsync($"{accountName}", success, message, reason);
+            if (accountId != 0)
+            {
+                //todo 放着跑两天,要将读取的地方改成读取accountid
+                await SaveParseAccountCacheAsync($"{channel}_{accountId}", success, message, reason);
+            }
+        }
+
+        private static async Task SaveParseAccountCacheAsync(string accountName, bool success,
+            string message, string reason)
+        {
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{DateTime.Now:yyyyMM}");
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{DateTime.Now:yyyyMMdd}");
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{DateTime.Now:yyyyMMddHH}");
+
+            string result = success ? "success" : "fail";
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMM}");
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMMdd}");
+            await RedisKit.IncrByAsync($":parse_total:{accountName}:{result}:{DateTime.Now:yyyyMMddHH}");
+
+            if (!string.IsNullOrEmpty(message))
+            {
+                await RedisKit.SAddAsync($":parse_total:{accountName}:message:{DateTime.Now:yyyyMM}", message);
+                await RedisKit.SAddAsync($":parse_total:{accountName}:message:{DateTime.Now:yyyyMMdd}", message);
+                await RedisKit.SAddAsync($":parse_total:{accountName}:message:{DateTime.Now:yyyyMMddHH}", message);
+
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMM}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMMdd}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{message}:{DateTime.Now:yyyyMMddHH}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:message:{message}:{DateTime.Now:yyyyMM}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:message:{message}:{DateTime.Now:yyyyMMdd}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:message:{message}:{DateTime.Now:yyyyMMddHH}");
+            }
+
+            if (!string.IsNullOrEmpty(reason))
+            {
+                await RedisKit.SAddAsync($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMM}", reason);
+                await RedisKit.SAddAsync($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMMdd}", reason);
+                await RedisKit.SAddAsync($":parse_total:{accountName}:reason:{DateTime.Now:yyyyMMddHH}", reason);
+
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMM}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMMdd}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:{reason}:{DateTime.Now:yyyyMMddHH}");
+
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:reason:{reason}:{DateTime.Now:yyyyMM}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:reason:{reason}:{DateTime.Now:yyyyMMdd}");
+                await RedisKit.IncrByAsync($":parse_total:{accountName}:reason:{reason}:{DateTime.Now:yyyyMMddHH}");
+            }
+        }
 
 
 

+ 11 - 28
molilian.core/Core/log/jd.cs

@@ -1,6 +1,7 @@
 using dodohold.core;
 using CSRedis;
 using System.Data;
+using YunhuiKit;
 
 namespace molilian.core
 {
@@ -21,7 +22,6 @@ namespace molilian.core
                     var data = redis.LPop<JdDataDTO>(queue_parse_jd_key);
                     if (data == null) break;
 
-
                     if (_test_oaid.Equals(data.oaid) ||
                          data.ip.StartsWith("127.0.0"))
                     {
@@ -71,7 +71,7 @@ namespace molilian.core
             {
                 var ts = DateTime.Now - response.create_time;
                 response.elapsedTime = (int)ts.TotalMilliseconds;
-                _ = RedisHelper.RPushAsync(queue_parse_jd_key, response);
+                _ = RedisKit.RPushAsync(queue_parse_jd_key, response);
 
                 if (!response.ip.StartsWith("127.0.0"))
                 {
@@ -91,52 +91,34 @@ namespace molilian.core
                     "方法不存在".Equals(response.reason) ||
                     "未登录".Equals(response.reason)))
                 {
-                    await Task.Run(() =>
-                    {
-                        JdPoolCore.Disabled(response.accountId, response.accountName, $"{response.rawContent}\n{response.rawContent2}");
-                    });
-                    //switch (response.channel)
-                    //{
-                    //    case TkChannelEnum.tb:
-
-                    //        //await Task.Run(() =>
-                    //        //{
-                    //        //    if (alimamaPlus != null)
-                    //        //    {
-                    //        //        (bool success, string message) = alimamaPlus.RenewCookie();
-                    //        //        if (success) return;
-                    //        //    }
-                    //        //    TkPoolCore.Disabled(response.accountId, response.accountName, $"{response.rawContent}\n{response.rawContent2}");
-                    //        //});
-                    //        break;
-                    //}
+                    await JdPoolCore.DisabledAsync(response.accountId, response.accountName, $"{response.rawContent}\n{response.rawContent2}");
                 }
                 if ("没有匹配账号".Equals(response.reason))
                 {
-                    JdPoolCore.AccountExhausted();
+                    await JdPoolCore.AccountExhaustedAsync();
                 }
 
                 string failure_key = ":total:continuous_failure";
                 string failure_lock_key = ":lock:continuous_failure";
-                if (response.success) RedisHelper.Del(failure_key);
+                if (response.success) await RedisKit.DelAsync(failure_key);
 
                 //连续错误发送报警
                 if ("签名失败".Equals(response.reason) || "网络异常".Equals(response.reason))
                 {
-                    var total = RedisHelper.IncrBy(failure_key);
-                    RedisHelper.Expire(failure_key, 3600);
+                    var total = await RedisKit.IncrByAsync(failure_key);
+                    await RedisKit.ExpireAsync(failure_key, 3600);
 
                     if (total > 30)
                     {
                         //没有锁定记录才发送,
-                        string lockfFlag = RedisHelper.Get(failure_lock_key);
+                        string lockfFlag = await RedisKit.GetAsync<string>(failure_lock_key);
                         if (string.IsNullOrEmpty(lockfFlag))
                         {
                             //发送锁,保存半小时(半小时内只发送1次)
-                            RedisHelper.Set(failure_lock_key, 1, 1800);
+                            await RedisKit.SetAsync(failure_lock_key, 1, 1800);
 
                             string message = $"【京东{response.accountName}】{EndPointCore.CurrentEndPoint},连续的{response.reason}";
-                            RedisHelper.Expire(failure_key, 3600);
+                            await RedisKit.ExpireAsync(failure_key, 3600);
                             NotifyCore.Notify(new NifyMessage
                             {
                                 message = message,
@@ -152,6 +134,7 @@ namespace molilian.core
             }
             catch (Exception ex) { }
         }
+
         private static int save_jd_parse_logs(JdDataDTO data, string tablename, IDbConnection connection, IDbTransaction transaction)
         {
             return new DBContext.Table(connection, tablename)

+ 1 - 1
molilian.core/Core/taoke/UnionCouponCore.cs

@@ -243,7 +243,7 @@ namespace molilian.core
                     });
                 }
 
-                var account = JdPoolCore.GetOne();
+                var account = await JdPoolCore.GetOneAsync();
                 if (account == null)
                 {
                     result.success = false;

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

@@ -505,9 +505,9 @@ namespace molilian.core
         {
 
             var config = TkConfigCore.Get();
-         
 
-            var result = JdUnionPlus.GetFormattedObject(   content, ip, oaid, clickId);
+
+            var result = JdUnionPlus.GetFormattedObject(content, ip, oaid, clickId);
             content = content.UrlDecode();
             result.rawContent = content;
             bool IfExceptional = false;
@@ -533,7 +533,7 @@ namespace molilian.core
                         _ = TkLogCore.ParseLogAsync(result);
                         return JdParseOutput(result);
                     }
-                } 
+                }
 
                 //============================== 放弃转链-地区过滤 ==============================
                 if (!result.ip.StartsWith("127.0.0") && accountid == 0 && JdUnionPlus.ShouldIgnoreRequest(config, ip, oaid, out string reason))
@@ -586,7 +586,7 @@ namespace molilian.core
                 //                    return JdParseOutput(result);
                 //                }
 
-                var account = accountid > 0 ? JdPoolCore.GetOne(accountid, JdPoolCore.JdAction.parse) : JdPoolCore.GetOne(JdPoolCore.JdAction.parse);
+                var account = accountid > 0 ? await JdPoolCore.GetOneAsync(accountid, JdPoolCore.JdAction.parse) : await JdPoolCore.GetOneAsync(JdPoolCore.JdAction.parse);
                 if (account == null)
                 {
                     result.success = false;

+ 9 - 11
molilian.core/Plus/JDUnion/JdDailyLogs.cs

@@ -24,17 +24,15 @@ namespace molilian.core
 {
     public partial class JdUnionPlus
     {
-        public static void DailyLogs(int intervalDay)
+        public static async Task DailyLogsAsync(int intervalDay)
         {
             TkChannelEnum channelEnum = TkChannelEnum.jd;
 
             DateTime log_date = DateTime.Now.AddDays(-intervalDay).Date;
 
-            var accounts = JdPoolCore.List();
+            var accounts = await JdPoolCore.ListAsync();
             using var conn = CenterHub.GetOpenConnection();
 
-
-
             int all_total_count = 0, all_success_count = 0, all_abandon_count = 0;
             foreach (var account in accounts)
             {
@@ -42,14 +40,14 @@ namespace molilian.core
                 string accountName = $"{channelEnum}_{account.id}";
                 //if (account.is_hide) continue;
 
-                int total_count = TkLogCore.GetTotal($":parse_total:{accountName}:{log_date:yyyyMMdd}");
+                int total_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:{log_date:yyyyMMdd}");
                 if (total_count == 0) accountName = account.name;
 
-                total_count = TkLogCore.GetTotal($":parse_total:{accountName}:{log_date:yyyyMMdd}");
+                total_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:{log_date:yyyyMMdd}");
                 if (total_count == 0) continue;
 
-                var success_count = TkLogCore.GetTotal($":parse_total:{accountName}:success:{log_date:yyyyMMdd}");
-                var abandon_count = TkLogCore.GetTotal($":parse_total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
+                var success_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:success:{log_date:yyyyMMdd}");
+                var abandon_count = await TkLogCore.GetTotalAsync($":parse_total:{accountName}:放弃转链:{log_date:yyyyMMdd}");
                 string success_percentage = string.Empty;
                 string abandon_percentage = string.Empty;
 
@@ -91,9 +89,9 @@ namespace molilian.core
                 }
             }
 
-            all_total_count = TkLogCore.GetTotal($":parse_total:{channelEnum}:{log_date:yyyyMMdd}");
-            all_success_count = TkLogCore.GetTotal($":parse_total:{channelEnum}:success:{log_date:yyyyMMdd}");
-            all_abandon_count = TkLogCore.GetTotal($":parse_total:{channelEnum}:放弃转链:{log_date:yyyyMMdd}");
+            all_total_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:{log_date:yyyyMMdd}");
+            all_success_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:success:{log_date:yyyyMMdd}");
+            all_abandon_count = await TkLogCore.GetTotalAsync($":parse_total:{channelEnum}:放弃转链:{log_date:yyyyMMdd}");
 
 
             string all_success_percentage = string.Empty;

+ 1 - 1
molilian.core/Plus/JDUnion/order.cs

@@ -290,7 +290,7 @@ SET  order_ord_num = order_ord_num_3 + order_ord_num_12 + order_ord_num_13 + ord
                     {
                         if (body.Contains("no login"))
                         {
-                            JdPoolCore.Disabled(_account.id, _account.name, $"{body}");
+                            _ = JdPoolCore.DisabledAsync(_account.id, _account.name, $"{body}");
                             return (0, DateTime.MinValue, new List<DateTime>());
                         }
                         throw new APIException(body);

+ 1 - 1
molilian.core/molilian.core.csproj

@@ -25,7 +25,7 @@
     <PackageReference Include="IP2Region.Net" Version="2.0.2" />
     <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
     <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.5.0" />
-    <PackageReference Include="YunhuiKit" Version="0.0.5" />
+    <PackageReference Include="YunhuiKit" Version="0.0.7" />
   </ItemGroup>
 
   <ItemGroup>

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác