123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- using FISLib.Connect;
- using System;
- using System.Linq;
- using Vinno.FIS.Sonopost.Common;
- using Vinno.FIS.Sonopost.Settings;
- using Vinno.FIS.Sonopost.Settings.Config;
- using Vinno.FIS.Sonopost.WebApi.Models;
- using Vinno.IUS.Common.Log;
- using Vinno.IUS.Common.Utilities;
- namespace Vinno.FIS.Sonopost.WebApi.Controllers
- {
- [WebApiController("Server")]
- internal class ServerController : BaseController
- {
- /// <summary>
- /// 登录
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction("Login")]
- public Result Login(ServerLoginRequest2 request)
- {
- if (!request.Ipv4.Equals(ConfigManager.VCloudServerAddress) || !request.Port.Equals(ConfigManager.VCloudServerPort) || !request.ServerName.Equals(ConfigManager.VCloudServerName))
- {
- bool changed = LoginManager.ChangeServer(request.Ipv4, request.Port, request.ServerName);
- if (!changed) Result.Fail();
- }
- var isLoginWithAccountAndPassword = SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword;
- var hospitalName = request.HospitalName?.Trim();
- if (string.IsNullOrWhiteSpace(hospitalName))
- {
- hospitalName = null;
- }
- if (!isLoginWithAccountAndPassword)
- {
- UpdateAccount(string.Empty, string.Empty);
- }
- else
- {
- if (string.IsNullOrWhiteSpace(request.Account))
- {
- return Result.Fail("InputAccountTips");
- }
- if (string.IsNullOrWhiteSpace(request.Password))
- {
- return Result.Fail("InputPasswordTips");
- }
- UpdateAccount(request.Account, request.Password);
- }
- var status = LoginManager.Login(hospitalName);
- if (status != DeviceStatus.Logon)
- {
- return Result.Fail(status.ToString());
- }
- ServerLoginResult result = new ServerLoginResult
- {
- UniqueId = LoginManager.UniqueId,
- QRCodeString = LoginManager.QRCodeString,
- };
- return Result.Success(result);
- }
- /// <summary>
- /// 登出
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result Logout()
- {
- if (LoginManager.DeviceStatus != DeviceStatus.Logon)
- {
- return Result<bool>.Success(true);
- }
- SonopostUserDefinedSettings.Instance.ServerSetting.IsAutoLogin = false;
- ConfigManager.Save();
- if (LoginManager.Logoff())
- {
- return Result<bool>.Success(LoginManager.DeviceStatus != DeviceStatus.Logon);
- }
- else
- {
- return Result.Fail($"LogOffError");
- }
- }
- /// <summary>
- /// 获取登录信息
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetLoginInfo()
- {
- var username = DesBuilder.Decrypt(SonopostUserDefinedSettings.Instance.ServerSetting.UserName);
- var pwd = DesBuilder.Decrypt(SonopostUserDefinedSettings.Instance.ServerSetting.UserPassword);
- bool isLoginWithAccountAndPassword = false;
- bool isExisted = false;
- if (LoginManager.DeviceStatus == DeviceStatus.Logon)
- {
- isLoginWithAccountAndPassword = LoginManager.IsLoginWithAccountAndPassword;
- }
- else
- {
- isLoginWithAccountAndPassword = SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword;
- }
- var servers = SonopostUserDefinedSettings.Instance.ServerSetting.Servers;
- if (servers.Any(x => x.Host.Equals(ConfigManager.VCloudServerAddress) && x.Port.Equals(ConfigManager.VCloudServerPort)))
- {
- isExisted = true;
- }
- var result = new ServerLoginResult2
- {
- QRCodeString = LoginManager.QRCodeString,
- UniqueId = LoginManager.UniqueId,
- Address = ConfigManager.VCloudServerAddress,
- Port = ConfigManager.VCloudServerPort,
- Account = username,
- Password = pwd,
- IsLoginWithAccountAndPassword = isLoginWithAccountAndPassword,
- IsExisted = isExisted,
- DongleId = FISManager.UltrasoundMachineInfo.DongleId,
- VCloudServerName = ConfigManager.VCloudServerName,
- };
- return Result.Success(result);
- }
- /// <summary>
- /// 当前是否已登录
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result CheckIsLogon()
- {
- return Result.Success(LoginManager.DeviceStatus == DeviceStatus.Logon);
- }
- /// <summary>
- /// 获取服务列表
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetServerList()
- {
- if (LoginManager.DeviceStatus != DeviceStatus.Logon && !LoginManager.HasGetFasterServer)
- {
- var fasterServer = LoginManager.GetFasterServerInfo();
- if (fasterServer != null && SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.IsDefault && x.DisplayName == SonopostConstants.FlyinsonoServerName).ToString() != fasterServer.ToString())
- {
- var flyinsonoServer = SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.IsDefault && x.DisplayName == SonopostConstants.FlyinsonoServerName);
- var newFlyinsonoServer = new ServerInfoSetting(fasterServer.Host, fasterServer.Port, true, SonopostConstants.FlyinsonoServerName);
- ConfigManager.RefreshFlyinsonoServer(newFlyinsonoServer);
- flyinsonoServer.Host = fasterServer.Host;
- flyinsonoServer.Port = fasterServer.Port;
- if (SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer.DisplayName == SonopostConstants.FlyinsonoServerName && SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer.ToString() != fasterServer.ToString())
- {
- SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer.Host = fasterServer.Host;
- SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer.Port = fasterServer.Port;
- }
- ConfigManager.Save();
- }
- }
- return Result.Success(SonopostUserDefinedSettings.Instance.ServerSetting.Servers);
- }
- /// <summary>
- /// 检查网络
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result CheckNetwork()
- {
- if (TestManager.IsRunning)
- {
- TestManager.Stop();
- }
- TestManager.Run();
- return Result.Success();
- }
- /// <summary>
- /// 获取 检查网络 进度
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetCheckNetworkProgress()
- {
- return Result.Success(TestManager.CurrentProgress);
- }
- /// <summary>
- /// 获取DongleId
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetDongleId()
- {
- return Result.Success(FISManager.UltrasoundMachineInfo.DongleId);
- }
- /// <summary>
- /// 获取 当前的登录模式
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetCurrentVCloudLoginMode()
- {
- var currentMode = LoginManager.IsLoginWithAccountAndPassword;
- return Result.Success(new VCloudLoginRequest { IsLoginWithAccountAndPassword = currentMode });
- }
- /// <summary>
- /// 切换已登录的云服务器
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result SwtichLoginServer(ServerNodeRequest serverNodeRequest)
- {
- var request = Helpers.JsonHelper.ToJson(serverNodeRequest);
- Logger.WriteLineInfo($"Sonopost SwtichLoginServer Invoke,{request}");
- if (serverNodeRequest == null || string.IsNullOrEmpty(serverNodeRequest.Ipv4) || serverNodeRequest.Port < 0)
- {
- Logger.WriteLineInfo($"Sonopost SwtichLoginServer Fail,Invalid Arguments");
- return Result.Fail($"InvalidArguments");
- }
- if (LoginManager.DeviceStatus == 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();
- }
- string serverName = string.Empty;
- var existItems = SonopostUserDefinedSettings.Instance.ServerSetting.Servers.Where(x => x.Host == serverNodeRequest.Ipv4 && x.Port == serverNodeRequest.Port);
- if (existItems.Count() == 0)
- {
- serverName = $"{serverNodeRequest.Ipv4}:{serverNodeRequest.Port}";
- }
- if (existItems.Count() == 1)
- {
- serverName = existItems.FirstOrDefault().DisplayName;
- }
- else
- {
- serverName = existItems.FirstOrDefault(x => x.DisplayName != SonopostConstants.FlyinsonoServerName)?.DisplayName;
- }
- if (string.IsNullOrEmpty(serverName))
- {
- serverName = $"{serverNodeRequest.Ipv4}:{serverNodeRequest.Port}";
- }
- return Login(new ServerLoginRequest2
- {
- Ipv4 = serverNodeRequest.Ipv4,
- Port = serverNodeRequest.Port,
- ServerName = serverName,
- });
- }
- /// <summary>
- /// 修改物理唯一码
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result ChangePhysicalUniqueId(PhysicalUniqueIdRequest physicalUniqueIdRequest)
- {
- try
- {
- if (physicalUniqueIdRequest == null || string.IsNullOrEmpty(physicalUniqueIdRequest.Id))
- {
- return Result.Fail("IdIsEmpty");
- }
- FISIMPL.FISIMPL.ChangeMachineId(physicalUniqueIdRequest.Id);
- return Result.Success();
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"ChangePhysicalUniqueId Error:{ex}");
- return Result.Fail();
- }
- }
- /// <summary>
- /// 读取云服务登录设置
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result LoadVCloudLoginSetting()
- {
- try
- {
- return Result.Success(new VCloudLoginRequest { IsLoginWithAccountAndPassword = SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword });
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Load VCloud Login Setting Error:{ex}");
- return Result.Fail();
- }
- }
- /// <summary>
- /// 保存云服务登录设置
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result SaveVCloudLoginSetting(VCloudLoginRequest vCloudLoginRequest)
- {
- try
- {
- SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword = vCloudLoginRequest.IsLoginWithAccountAndPassword;
- ConfigManager.Save();
- return Result.Success();
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Save VCloud Login Setting Error:{ex}");
- return Result.Fail();
- }
- }
- #region Private Methods
- private void UpdateAccount(string name, string password)
- {
- SonopostUserDefinedSettings.Instance.ServerSetting.UserName = DesBuilder.Encrypt(name);
- SonopostUserDefinedSettings.Instance.ServerSetting.UserPassword = DesBuilder.Encrypt(password);
- SonopostUserDefinedSettings.Instance.ServerSetting.IsAutoLogin = true;
- ConfigManager.Save();
- }
- #endregion Private Methods
- }
- }
|