xf %!s(int64=2) %!d(string=hai) anos
pai
achega
db7e2f585e

+ 2 - 1
src/Sharing.Api/config/appsettings.Development.json

@@ -25,7 +25,8 @@
   },
   "ChannelConfiguration": {
     "Province": {
-      "Address": "http://103.203.219.157/cns-sccthj-job-test/rest/",
+      "HuiJu": "http://103.203.219.157/cns-sccthj-job-test/rest/",
+      "XieTong": "http://103.203.219.157/cns-scxthj-rest-test/rest/",
       "ClientId": "admin",
       "ClientSecret": "admin"
     }

+ 2 - 1
src/Sharing.Api/config/appsettings.json

@@ -25,7 +25,8 @@
   },
   "ChannelConfiguration": {
     "Province": {
-      "Address": "http://www.baidu.com",
+      "HuiJu": "http://www.baidu.com",
+      "XieTong": "http://www.baidu.com",
       "ClientId": "",
       "ClientSecret": ""
     }

+ 1 - 4
src/Sharing.Province/Controllers/ProvinceController.cs

@@ -16,16 +16,13 @@ namespace Sharing.Province.Controllers
     public class ProvinceController : BaseController
     {
         private readonly IChannelConfigurationManager _channelConfigurationManager;
-        private readonly ProvinceClient _provinceClient;
         private readonly PusherProvider _pusherProvider;
 
         public ProvinceController(
             IChannelConfigurationManager channelConfigurationManager, 
-            ProvinceClient provinceClient,
             PusherProvider pusherProvider)
         {
             _channelConfigurationManager = channelConfigurationManager;
-            _provinceClient = provinceClient;
             _pusherProvider = pusherProvider;
         }
 
@@ -34,7 +31,7 @@ namespace Sharing.Province.Controllers
         {
             var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
             await pusher.PushOrderCreatedAsync(new SubmitCaseInfoRequest(), HttpContext.RequestAborted);
-            var a = _channelConfigurationManager.GetConfigurationProvince().Address;
+            var a = _channelConfigurationManager.GetConfigurationProvince().HuiJu;
             return a;
         }
     }

+ 6 - 4
src/Sharing.Province/DefaultPusher.cs

@@ -9,15 +9,17 @@ namespace Sharing.Province;
 /// </summary>
 public class DefaultPusher : IProvincePusher
 {
-    private readonly ProvinceClient _provinceClient;
+    private readonly HuiJuClient _huiJuClient;
+    private readonly XieTongClient _xieTongClient;
 
-    public DefaultPusher(ProvinceClient provinceClient)
+    public DefaultPusher(HuiJuClient huiJuClient, XieTongClient xieTongClient)
     {
-        _provinceClient = provinceClient;
+        _huiJuClient = huiJuClient;
+        _xieTongClient = xieTongClient;
     }
 
     public async Task PushOrderCreatedAsync(SubmitCaseInfoRequest request, CancellationToken cancellationToken)
     {
-        var response = await _provinceClient.RequestAsync<SubmitCaseInfoRequest, ProvinceResponse>(request, cancellationToken);
+        var response = await _huiJuClient.RequestAsync<SubmitCaseInfoRequest, ProvinceResponse>(request, cancellationToken);
     }
 }

+ 26 - 0
src/Sharing.Province/HuiJuClient.cs

@@ -0,0 +1,26 @@
+using Microsoft.Extensions.DependencyInjection;
+using Sharing.Province.Dtos;
+using XF.Domain.Dependency;
+
+namespace Sharing.Province;
+
+public class HuiJuClient : ProvinceClient, ISingletonDependency, ISelfDependency
+{
+    private readonly IServiceScopeFactory _scopeFactory;
+
+    public HuiJuClient(IServiceScopeFactory scopeFactory) : base(scopeFactory)
+    {
+        _scopeFactory = scopeFactory;
+    }
+
+    public Task<TResponse?> RequestAsync<TRequest, TResponse>(TRequest request, CancellationToken cancellationToken)
+        where TRequest : IProvinceRequest, new()
+    {
+        using var scope = _scopeFactory.CreateScope();
+        var provider = scope.ServiceProvider;
+        var channelconfigManager = provider.GetRequiredService<IChannelConfigurationManager>();
+
+        var configProvince = channelconfigManager.GetConfigurationProvince();
+        return base.RequestAsync<TRequest, TResponse>(request, configProvince.HuiJu, configProvince, cancellationToken);
+    }
+}

+ 10 - 7
src/Sharing.Province/ProvinceClient.cs

@@ -10,12 +10,11 @@ using Sharing.Province.Dtos;
 using Sharing.Province.Extensions;
 using SqlSugar;
 using XF.Domain.Cache;
-using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 
 namespace Sharing.Province
 {
-    public class ProvinceClient : ISingletonDependency, ISelfDependency
+    public abstract class ProvinceClient //: ISingletonDependency, ISelfDependency
     {
         private static readonly string KeyToken = "KeyToken";
         private readonly IServiceScopeFactory _scopeFactory;
@@ -25,25 +24,29 @@ namespace Sharing.Province
             _scopeFactory = scopeFactory;
         }
 
-        public async Task<TResponse?> RequestAsync<TRequest, TResponse>(TRequest request, CancellationToken cancellationToken)
+        public async Task<TResponse?> RequestAsync<TRequest, TResponse>(
+            TRequest request,
+            string baseAddress,
+            ConfigurationProvince configProvince,
+            CancellationToken cancellationToken)
             where TRequest : IProvinceRequest, new()
         {
             using var scope = _scopeFactory.CreateScope();
             var provider = scope.ServiceProvider;
-            var channelconfigManager = provider.GetRequiredService<IChannelConfigurationManager>();
+            //var channelconfigManager = provider.GetRequiredService<IChannelConfigurationManager>();
             var httpInvoker = provider.GetRequiredService<IHttpInvoker>();
             var cacheToken = provider.GetRequiredService<ITypedCache<TokenInfo>>();
 
             var token = cacheToken.GetOrSet(KeyToken,
                 d => GetTokenAsync(cancellationToken).GetAwaiter().GetResult(),
                 TimeSpan.FromMinutes(28));
-            var configProvince = channelconfigManager.GetConfigurationProvince();
+            //var configProvince = channelconfigManager.GetConfigurationProvince();
             request.BuildClientInfo(configProvince.ClientId, configProvince.ClientSecret);
 
             //todo token失效重新获取token再次请求,返回参数缺少该状态,暂无法处理
 
             return await httpInvoker.RequestAsync<TRequest, TResponse>(request,
-                d => d.SetHttpClient(configProvince.Address, token?.AccessToken ?? string.Empty),
+                d => d.SetHttpClient(baseAddress, token?.AccessToken ?? string.Empty),
                 cancellationToken);
         }
 
@@ -55,7 +58,7 @@ namespace Sharing.Province
             var httpInvoker = provider.GetRequiredService<IHttpInvoker>();
 
             var configProvince = channelconfigManager.GetConfigurationProvince();
-            var baseAddress = configProvince.Address;
+            var baseAddress = configProvince.HuiJu;
             if (!baseAddress.EndsWith('/'))
                 baseAddress += "/";
             var request = new ClientCredentialsTokenRequest

+ 7 - 5
src/Sharing.Province/PusherProvider.cs

@@ -4,11 +4,13 @@ namespace Sharing.Province;
 
 public class PusherProvider : IScopeDependency, ISelfDependency
 {
-    private readonly ProvinceClient _provinceClient;
+    private readonly HuiJuClient _huiJuClient;
+    private readonly XieTongClient _xieTongClient;
 
-    public PusherProvider(ProvinceClient provinceClient)
+    public PusherProvider(HuiJuClient huiJuClient, XieTongClient xieTongClient)
     {
-        _provinceClient = provinceClient;
+        _huiJuClient = huiJuClient;
+        _xieTongClient = xieTongClient;
     }
 
     public IProvincePusher CreatePusher(IChannelConfigurationManager channelConfigurationManager)
@@ -16,9 +18,9 @@ public class PusherProvider : IScopeDependency, ISelfDependency
         var configProvince = channelConfigurationManager.GetConfigurationProvince();
         return configProvince.Scheme switch
         {
-            ConfigurationConsts.SchemeDefault => new DefaultPusher(_provinceClient),
+            ConfigurationConsts.SchemeDefault => new DefaultPusher(_huiJuClient, _xieTongClient),
             ConfigurationConsts.SchemeSmart => new SmartPusher(),
-            _ => new DefaultPusher(_provinceClient)
+            _ => new DefaultPusher(_huiJuClient, _xieTongClient)
         };
     }
 }

+ 26 - 0
src/Sharing.Province/XieTongClient.cs

@@ -0,0 +1,26 @@
+using Microsoft.Extensions.DependencyInjection;
+using Sharing.Province.Dtos;
+using XF.Domain.Dependency;
+
+namespace Sharing.Province;
+
+public class XieTongClient : ProvinceClient, ISingletonDependency, ISelfDependency
+{
+    private readonly IServiceScopeFactory _scopeFactory;
+
+    public XieTongClient(IServiceScopeFactory scopeFactory) : base(scopeFactory)
+    {
+        _scopeFactory = scopeFactory;
+    }
+
+    public Task<TResponse?> RequestAsync<TRequest, TResponse>(TRequest request, CancellationToken cancellationToken)
+        where TRequest : IProvinceRequest, new()
+    {
+        using var scope = _scopeFactory.CreateScope();
+        var provider = scope.ServiceProvider;
+        var channelconfigManager = provider.GetRequiredService<IChannelConfigurationManager>();
+
+        var configProvince = channelconfigManager.GetConfigurationProvince();
+        return base.RequestAsync<TRequest, TResponse>(request, configProvince.XieTong, configProvince, cancellationToken);
+    }
+}

+ 2 - 1
src/Sharing/ChannelConfiguration.cs

@@ -7,7 +7,8 @@ public class ChannelConfiguration
 
 public class ConfigurationProvince
 {
-    public string Address { get; set; } = string.Empty;
+    public string HuiJu { get; set; } = string.Empty;
+    public string XieTong { get; set; } = string.Empty;
     public string ClientId { get; set; } = string.Empty;
     public string ClientSecret { get; set; } = string.Empty;
     public string Scheme { get; set; } = ConfigurationConsts.SchemeDefault;