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();
}
}
}