using HPSocketCS.Extended; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LYFZ.Network.CloudServer { /// /// 云服务器网络处理 /// public class CloudServerClient { public CloudServerClient() { } public CloudServerClient(string eID, string installationCode, string dongleDomain, ushort cloudLoginPort) { this.Initialization(eID, installationCode, dongleDomain, cloudLoginPort); } public void Initialization(string eID, string installationCode, string dongleDomain, ushort cloudLoginPort) { this._EnterpriseID = eID; HPSocketCS.TcpServer.EnterpriseID = this._EnterpriseID; if (!String.IsNullOrEmpty(installationCode)) { this._InstallationCode = installationCode; } this._DongleDomain = dongleDomain; this._CloudLoginServerPort = cloudLoginPort; } /// /// 设置网络连接 /// /// public void SetNetworkClient(LYFZ.Network.TCPNetworkClient.TCP_NetworkClient client) { this.tcpClient = client; } string _EnterpriseID = ""; public string EnterpriseID { get { return _EnterpriseID; } set { _EnterpriseID = value; } } string _InstallationCode = "auto"; /// /// 安装验证码 /// public string InstallationCode { get { return _InstallationCode; } set { _InstallationCode = value; } } string _DongleDomain = ""; /// /// 加密锁域名 /// public string DongleDomain { get { return _DongleDomain; } set { _DongleDomain = value; } } ushort _CloudLoginServerPort = 8000; /// /// 云登录服务端口 /// public ushort CloudLoginServerPort { get { return _CloudLoginServerPort; } set { _CloudLoginServerPort = value; } } CloudLoginInfo cLoginServer = new CloudLoginInfo(); /// /// 云服务器信息 /// public CloudLoginInfo CLoginServer { get { return cLoginServer; } set { cLoginServer = value; } } /// /// 发送请求命令到云服务器端 /// /// /// /// /// public static HPSocketCS.Extended.ReturnData SendCommandToCloudServer(HPSocketCS.TcpPackClient _hpClient, HPSocketCS.Extended.TransferRequestCommand command, HPSocketCS.Extended.RequestParameters reqParameters) { HPSocketCS.Extended.RequestData requestData = new HPSocketCS.Extended.RequestData((int)command); requestData.AttachedData = reqParameters.ToBytes(); return HPSocketCS.Extended.SerializerDataProcessed.HP_SendSerializerCommandToServer(_hpClient, requestData); } private LYFZ.Network.TCPNetworkClient.TCP_NetworkClient tcpClient = new Network.TCPNetworkClient.TCP_NetworkClient(); /// /// 客户端网络连接对象 /// public LYFZ.Network.TCPNetworkClient.TCP_NetworkClient TcpClient { get { return tcpClient; } } string _ReturnMessage = ""; /// /// 反回消息 /// public string ReturnMessage { get { return _ReturnMessage; } set { _ReturnMessage = value; } } void ClearReturnMessage() { this.ReturnMessage = ""; } /// /// 连接服务器 /// /// public bool ConnectServer() { try { this.ClearReturnMessage(); if (this.tcpClient.AppState == AppState.Started) { return true; } if (String.IsNullOrEmpty(this.cLoginServer.CloudServerIP)) { if (!String.IsNullOrEmpty(this._EnterpriseID)) { if (VerifyEnterpriseID(this._EnterpriseID)) { CloudLoginServerClient cLoginClient = new CloudLoginServerClient(this._EnterpriseID, this._CloudLoginServerPort); if (cLoginClient.ConnectServer()) { HPSocketCS.Extended.ReturnData returnData = cLoginClient.GetCloudServerInfo(this._EnterpriseID); if (returnData.ReturnStatus) { this.cLoginServer = cLoginClient.GetCloudLoginInfo(returnData.DataByteToModelObject()); if (this._InstallationCode == "auto") { this._InstallationCode = this.cLoginServer.VerificationCode; } cLoginClient.CloseConnect(); } else { this._ReturnMessage = returnData.ReturnMessage; return false; } } else { this._ReturnMessage = "连接登录服务器失败"; return false; } } else { this._ReturnMessage = "企业ID不正确"; return false; } } else { this._ReturnMessage = "企业ID不能为空"; return false; } } HPSocketCS.TcpServer.EnterpriseID = this.EnterpriseID; HPSocketCS.TcpServer.VerificationCode = this.InstallationCode; return this.tcpClient.ConnectionServer(this.cLoginServer.CloudServerIP, this.cLoginServer.SeverPort); } catch (Exception ex) { this._ReturnMessage = "连接服务器失败:" + ex.Message; return false; } } public bool ConnectServer(string cServerIP, ushort cSeverPort) { try { this.ClearReturnMessage(); if (this.tcpClient.AppState == AppState.Started) { return true; } this.cLoginServer.CloudServerIP = cServerIP; this.cLoginServer.SeverPort = cSeverPort; HPSocketCS.TcpServer.EnterpriseID = this.EnterpriseID; HPSocketCS.TcpServer.VerificationCode = this.InstallationCode; return this.tcpClient.ConnectionServer(this.cLoginServer.CloudServerIP, this.cLoginServer.SeverPort); } catch (Exception ex) { this._ReturnMessage = "连接服务器失败:" + ex.Message; return false; } } bool VerifyEnterpriseID(string eID) { if ("E6051908401744|E6051806481742|E6041618381744".ToLower().Contains(eID.ToLower())) { return true; } else { if (eID.ToLower().IndexOf("e") == 0 && eID.Length == 18) { return true; } else { return false; } } } /// /// 关闭连接 /// public void CloseConnect() { this.cLoginServer.CloudServerIP = ""; this.tcpClient.CloseConnected(); } #region 云服务器相关通信处理 /// /// 注册云版APP /// /// public bool RegistrationWebAPP(bool _APPType,string appWebUrl) { try { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); reqParameters.SetRequestParameter("APPType", _APPType); reqParameters.SetRequestParameter("AppWebUrl", appWebUrl); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.InstallCloudWebAPI, reqParameters); if (returnData.ReturnStatus) { this.ReturnMessage = returnData.ReturnMessage; return true; } else { this.ReturnMessage = returnData.ReturnMessage; return false; } } catch (Exception ex) { this.ReturnMessage = "数据库安装失败:" + ex.Message; return false; } } /// /// 安装云数据库 /// /// public bool InstallationDatabase() { try { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.InstallationDatabase, reqParameters); if (returnData.ReturnStatus) { return true; } else { this.ReturnMessage = returnData.ReturnMessage; return false; } } catch (Exception ex) { this.ReturnMessage = "数据库安装失败:" + ex.Message; return false; } } /// /// 升级云数据库 /// /// public bool UpgradeDatabase() { try { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.UpgradeDatabase, reqParameters); if (returnData.ReturnStatus) { return true; } else { this.ReturnMessage = returnData.ReturnMessage; return false; } } catch (Exception ex) { this.ReturnMessage = "数据库安装失败:" + ex.Message; return false; } } /// /// 备份云数据库 /// /// public bool BackupDatabase() { try { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.BackupDatabase, reqParameters); if (returnData.ReturnStatus) { return true; } else { this.ReturnMessage = returnData.ReturnMessage; return false; } } catch (Exception ex) { this.ReturnMessage = "备份库安装失败:" + ex.Message; return false; } } /// /// 获取总店软件信息 /// /// /// public ReturnData GetMainServerSoftwareInfo() { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); reqParameters.SetRequsetErpDongleDomainParameter("main"); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.GetMainStoreServerSoftwareInfo, reqParameters); return returnData; } /// /// 获取软件信息 /// /// /// public ReturnData GetServerSoftwareInfo(string dongleDomain) { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); reqParameters.SetRequsetErpDongleDomainParameter(dongleDomain); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.GetServerSoftwareInfo, reqParameters); return returnData; } /// /// 获取云服务器数据库连接信息 /// /// public ReturnData GetCloudServerDbConnInfo() { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.GetDataConne, reqParameters); return returnData; } /// /// 提交软件信息 /// /// /// /// /// /// /// public ReturnData SubmitSoftwareInfo(LYFZ.Model.Model_SoftwareInfo softwareInfo, LYFZ.Model.Model_ErpCompanyInfo compInfo, bool isIsHeadquarters, int orderQuantity, string versionNumber, bool isSubmit = true) { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(this._EnterpriseID); reqParameters.SetRequsetErpInstallationVerificationCodeParameter(this._InstallationCode); reqParameters.SetRequsetErpDongleDomainParameter(this.DongleDomain); reqParameters.SetRequestParameter("StoreID", compInfo.Company_DividedShop); reqParameters.SetRequestParameter("StoreName", compInfo.Company_Name); reqParameters.SetRequestParameter("StoreManager", compInfo.Company_Manager); reqParameters.SetRequestParameter("Telephone", compInfo.Company_Telephone); reqParameters.SetRequestParameter("StoreAddress", compInfo.Company_Address); reqParameters.SetRequsetErpServerPortParameter(0); reqParameters.SetRequestParameter("BusinessType", softwareInfo.BusinessType); reqParameters.SetRequestParameter("FeatureType", softwareInfo.FunctionType); if (isIsHeadquarters) { reqParameters.SetRequestParameter("IsHeadquarters", 1); } else { reqParameters.SetRequestParameter("IsHeadquarters", 0); } reqParameters.SetRequestParameter("VersionNumber", versionNumber); reqParameters.SetRequestParameter("Seats", softwareInfo.RegConnCount); reqParameters.SetRequestParameter("OrderQuantity", orderQuantity); reqParameters.SetRequestParameter("DongleInformation", softwareInfo.ToString()); if (!isSubmit) { reqParameters.SetRequestParameter("DongleInformation", ""); reqParameters.SetRequestParameter("IsHeadquarters", -1); } HPSocketCS.Extended.ReturnData returnData = CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.SubmitSoftwareInfo, reqParameters); return returnData; } #endregion } /// /// 登录处理 /// public class CloudLoginServerClient { public CloudLoginServerClient(string eID, ushort port) { this._EnterpriseID = eID; this._Port = port; } string _EnterpriseID = ""; public string EnterpriseID { get { return _EnterpriseID; } set { _EnterpriseID = value; } } # if DEBUG // string _ServerIP = "192.168.1.12"; string _ServerIP = "bjb.lyfz.net"; #else string _ServerIP = "bjb.lyfz.net"; #endif public string ServerIP { get { return _ServerIP; } set { _ServerIP = value; } } ushort _Port = 8000; public ushort Port { get { return _Port; } set { _Port = value; } } private LYFZ.Network.TCPNetworkClient.TCP_NetworkClient tcpClient = new Network.TCPNetworkClient.TCP_NetworkClient(); /// /// 客户端网络连接对象 /// public LYFZ.Network.TCPNetworkClient.TCP_NetworkClient TcpClient { get { return tcpClient; } } /// /// 连接服务器 /// /// public bool ConnectServer() { return this.tcpClient.ConnectionServer(this.ServerIP,this.Port); } /// /// 获取云服务器信息 /// /// public HPSocketCS.Extended.ReturnData GetCloudServerInfo(string eID) { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequsetEnterpriseIDParameter(eID); return CloudServerClient.SendCommandToCloudServer(tcpClient.Client, HPSocketCS.Extended.TransferRequestCommand.CloudLoginIP, reqParameters); } /// /// 获取云服务器信息 /// /// /// public CloudLoginInfo GetCloudLoginInfo(string jsonData) { return Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData); } /// /// 关闭连接 /// public void CloseConnect() { this.tcpClient.CloseConnected(); } } }