Преглед изворни кода

增加SwtichLoginServer接口

felix пре 1 година
родитељ
комит
25eb88ab15
1 измењених фајлова са 31 додато и 37 уклоњено
  1. 31 37
      Vinno.FIS.Sonopost/WebApi/Controllers/ServerController.cs

+ 31 - 37
Vinno.FIS.Sonopost/WebApi/Controllers/ServerController.cs

@@ -1,7 +1,5 @@
 using FISLib.Connect;
-using System;
 using System.Linq;
-using System.Threading.Tasks;
 using Vinno.FIS.Sonopost.Features.Config;
 using Vinno.FIS.Sonopost.WebApi.Models;
 using Vinno.IUS.Common.Utilities;
@@ -25,7 +23,7 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
                 if (!changed) Result.Fail();
             }
             var isLoginWithAccountAndPassword = SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword;
-            var hospitalName = request.HospitalName.Trim();
+            var hospitalName = request.HospitalName?.Trim();
             if (string.IsNullOrWhiteSpace(hospitalName))
             {
                 hospitalName = null;
@@ -202,6 +200,36 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
             return Result.Success(new VCloudLoginRequest { IsLoginWithAccountAndPassword = currentMode });
         }
 
+        /// <summary>
+        /// 切换已登录的云服务器
+        /// </summary>
+        /// <returns></returns>
+        [WebApiAction]
+        public Result SwtichLoginServer(ServerNodeRequest serverNodeRequest)
+        {
+            if (LoginManager.LoginStatus == DeviceStatus.Logon)
+            {
+                if (!LoginManager.Logoff())
+                {
+                    return Result.Fail($"LogOffError");
+                }
+            }
+            if (serverNodeRequest == null)
+            {
+                return Result.Fail($"Server Info is Null");
+            }
+            if (SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword)
+            {
+                SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword = false;
+                ConfigManager.Save();
+            }
+            return Login(new ServerLoginRequest2
+            {
+                Ipv4 = serverNodeRequest.Ipv4,
+                Port = serverNodeRequest.Port,
+            });
+        }
+
         #region Private Methods
 
         private void UpdateAccount(string name, string password)
@@ -212,40 +240,6 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
             ConfigManager.Save();
         }
 
-        private async Task<(bool Success, string Code)> TryLogin(string organizationName = null, int timeout = 3000)
-        {
-            string code = null;
-            await Task.Run(() =>
-            {
-                bool waiting = true;
-                DateTime startTime = DateTime.Now;
-                EventHandler<DeviceStatus> eventHandler = (object sender, DeviceStatus e) =>
-                {
-                    if (e != DeviceStatus.Logoning)
-                    {
-                        waiting = false;
-                    }
-                };
-                TerminalClientManager.LoginStatusChanged += eventHandler;
-                LoginManager.Login(organizationName);
-                while (waiting)
-                {
-                    if (DateTime.Now.AddMilliseconds(-timeout) > startTime)
-                    {
-                        waiting = false;
-                        code = "Timeout";
-                    }
-                }
-                TerminalClientManager.LoginStatusChanged -= eventHandler;
-            });
-            bool logged = LoginManager.LoginStatus == DeviceStatus.Logon;
-            if (!logged && code == null)
-            {
-                code = Enum.GetName(typeof(DeviceStatus), LoginManager.LoginStatus);
-            }
-            return (logged, code);
-        }
-
         #endregion Private Methods
     }
 }