123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- using FISLib.Connect;
- using System.Linq;
- using Vinno.FIS.Sonopost.Features.Config;
- using Vinno.FIS.Sonopost.WebApi.Models;
- 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))
- {
- bool changed = TerminalClientManager.ChangeServer(request.Ipv4, request.Port);
- 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 = TerminalClientManager.UniqueId,
- QRCodeString = LoginManager.QRCodeString,
- };
- return Result.Success(result);
- }
- /// <summary>
- /// 登出
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result Logout()
- {
- if (LoginManager.LoginStatus != DeviceStatus.Logon)
- {
- return Result<bool>.Success(true);
- }
- SonopostUserDefinedSettings.Instance.ServerSetting.IsAutoLogin = false;
- ConfigManager.Save();
- if (LoginManager.Logoff())
- {
- return Result<bool>.Success(LoginManager.LoginStatus != 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.LoginStatus == DeviceStatus.Logon)
- {
- isLoginWithAccountAndPassword = TerminalClientManager.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 ServerLoginInfoResult
- {
- QRCodeString = LoginManager.QRCodeString,
- UniqueId = TerminalClientManager.UniqueId,
- Address = ConfigManager.VCloudServerAddress,
- Port = ConfigManager.VCloudServerPort,
- Account = username,
- Password = pwd,
- IsLoginWithAccountAndPassword = isLoginWithAccountAndPassword,
- IsExisted = isExisted,
- DongleId = FISManager.UltrasoundMachineInfo.DongleId,
- };
- return Result.Success(result);
- }
- /// <summary>
- /// 当前是否已登录
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result CheckIsLogon()
- {
- return Result.Success(LoginManager.LoginStatus == DeviceStatus.Logon);
- }
- /// <summary>
- /// 获取服务列表
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetServerList()
- {
- if (LoginManager.LoginStatus != DeviceStatus.Logon)
- {
- var fasterServer = TerminalClientManager.GetFasterServerInfo();
- if (fasterServer != null && SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.IsDefault).ToString() != fasterServer.ToString())
- {
- var defaultServer = SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.IsDefault);
- var oldDefaultServer = new FISServerInfo(defaultServer.Host, defaultServer.Port, true);
- var newDefaultServer = new FISServerInfo(fasterServer.Host, fasterServer.Port, true);
- ConfigManager.RefreshDefaultServer(oldDefaultServer, newDefaultServer);
- defaultServer.Host = fasterServer.Host;
- 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 = TerminalClientManager.IsLoginWithAccountAndPassword;
- 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)
- {
- SonopostUserDefinedSettings.Instance.ServerSetting.UserName = DesBuilder.Encrypt(name);
- SonopostUserDefinedSettings.Instance.ServerSetting.UserPassword = DesBuilder.Encrypt(password);
- SonopostUserDefinedSettings.Instance.ServerSetting.IsAutoLogin = true;
- ConfigManager.Save();
- }
- #endregion Private Methods
- }
- }
|