소스 검색

获取老系统状态

Dun.Jason 6 달 전
부모
커밋
5b92e98e46
2개의 변경된 파일54개의 추가작업 그리고 4개의 파일을 삭제
  1. 46 4
      src/Hotline.Api/Controllers/OldHotlineController.cs
  2. 8 0
      src/Hotline.Share/Dtos/Identity/LoginDto.cs

+ 46 - 4
src/Hotline.Api/Controllers/OldHotlineController.cs

@@ -1,4 +1,5 @@
-using Hotline.Api.Filter;
+using Fw.Utility.ConfigClient;
+using Hotline.Api.Filter;
 using Hotline.Application.Identity;
 using Hotline.Application.Systems;
 using Hotline.Application.Tools;
@@ -8,18 +9,23 @@ using Hotline.Caching.Services;
 using Hotline.FlowEngine.Workflows;
 using Hotline.Identity.Accounts;
 using Hotline.Orders;
+using Hotline.Settings;
 using Hotline.Share.Dtos.Identity;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
+using Hotline.Share.Tools;
 using Hotline.Users;
 using IdentityModel;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using MongoDB.Bson.IO;
+using NewRock.Sdk.Extensions;
 using NPOI.POIFS.Macros;
 using SqlSugar;
 using System.Security.Claims;
+using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Entities;
 using XF.Domain.Exceptions;
@@ -39,13 +45,15 @@ namespace Hotline.Api.Controllers
         private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
         private readonly ISessionContextProvider _sessionContextProvider;
         private readonly IRepository<Account> _accountRepository;
+        private readonly IHttpClientFactory _httpClientFactory;
+        private readonly ISystemSettingCacheManager _systemSettingCacheManager;
 
         public OldHotlineController(IIdentityAppService identityAppService, ISystemLogApplication iSystemLogApplication,
             IOrderRepository orderRepository, IOrderVisitRepository orderVisitRepository,
-            IOrderDelayRepository orderDelayRepository, IOrderScreenRepository orderScreenRepository, 
+            IOrderDelayRepository orderDelayRepository, IOrderScreenRepository orderScreenRepository,
             IRepository<OrderSendBackAudit> orderSendBackAuditRepository, IRepository<OrderVisitDetail> orderVisitedDetailRepository,
             ISessionContextProvider sessionContextProvider,
-            IRepository<Account> accountRepository)
+            IRepository<Account> accountRepository, IHttpClientFactory httpClientFactory, ISystemSettingCacheManager systemSettingCacheManager)
         {
             _identityAppService = identityAppService;
             _iSystemLogApplication = iSystemLogApplication;
@@ -57,6 +65,8 @@ namespace Hotline.Api.Controllers
             _orderVisitedDetailRepository = orderVisitedDetailRepository;
             _sessionContextProvider = sessionContextProvider;
             _accountRepository = accountRepository;
+            _httpClientFactory = httpClientFactory;
+            _systemSettingCacheManager = systemSettingCacheManager;
         }
 
         /// <summary>
@@ -412,12 +422,44 @@ namespace Hotline.Api.Controllers
             {
                 string userName = String.Empty;
                 userName = System.Web.HttpUtility.UrlEncode(RSA.RSAEncrypt(account.UserName, RSA_Create.RSA_PUBLIC_KEY, "PEM"));
+                return userName;
+            }
+            catch
+            {
+                throw UserFriendlyException.SameMessage("账号加密失败!");
+            }
+        }
+
+        /// <summary>
+        /// 获取老系统状态
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("ishas_canhandler_old")]
+        public async Task<bool?> IsHasCanHandlerOld()
+        {
+            var OldHotlineOrderState = _systemSettingCacheManager.GetSetting(SettingConstants.OldHotlineOrderState).SettingValue[0];
+
+            var account = await _accountRepository.GetAsync(_sessionContextProvider.SessionContext.RequiredUserId, HttpContext.RequestAborted);
+            if (account == null)
+            {
+                throw UserFriendlyException.SameMessage("获取用户加密失败");
+            }
+            try
+            {
+                string userName = String.Empty;
+                userName = System.Web.HttpUtility.UrlEncode(RSA.RSAEncrypt(account.UserName, RSA_Create.RSA_PUBLIC_KEY, "PEM"));
+                var client = _httpClientFactory.CreateClient();
+                client.DefaultRequestHeaders.ConnectionClose = true;
+                using var responseMessage = await client.GetAsync(OldHotlineOrderState + userName,HttpContext.RequestAborted);
+                using var respContent = responseMessage.Content;
+                var respContentString = await respContent.ReadAsStringAsync(HttpContext.RequestAborted);
+                var result = Newtonsoft.Json.JsonConvert.DeserializeObject<HotlineStateResult>(respContentString);
+                return result?.Result;
             }
             catch
             {
                 throw UserFriendlyException.SameMessage("账号加密失败!");
             }
-            return "";
         }
     }
 }

+ 8 - 0
src/Hotline.Share/Dtos/Identity/LoginDto.cs

@@ -18,6 +18,14 @@ namespace Hotline.Share.Dtos.Identity
         public string UserName { get; set; }
     }
 
+    public class HotlineStateResult { 
+        public string Code { get; set; }
+
+        public bool? Result { get; set; }
+
+        public string Message { get; set; }
+    }
+
     public class LoginPageInfoDto
     {