using HPSocketCS.Extended;
using LYFZ.DAL.N8Process;
using LYFZ.Helper;
using LYFZ.Model;
using LYFZ.Network.FTPOperation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LYFZ.Network.TCPNetworkServer
{
///
/// 请求指令
///
public enum SerializerRequestCommand
{
///
/// 测试指令
///
TestCommand = 0,
FTPCommand = 1,
OSS_QueryBranch,
OSS_UploadTask,
N8ServerIpAddress,
OSS_QueryBranchId,
OSS_Status,
Get_Server_Config,
OSS_TASK_JSON,
OSS_TASK_INFO,
OSS_TASK_EXISTS
}
public class SerializationRequestProcessed
{
public SerializationRequestProcessed()
{
}
///
/// 服务器端接收客户端发送的Serialization数据请求并处理返回结果
///
/// 网络连接对象
/// 协议头
/// 连接ID
/// 收到的数据
public static bool SerializationDataRequestProcessed( HPSocketCS.TcpPackServer hp_Server, TcpHeadInfo header, IntPtr connId, byte[] bytes )
{
bool ret = false;
TransferRequestCommand Command = (TransferRequestCommand)Convert.ToInt32( header.RequestCommand );
ReturnData returnData;
try
{
RequestData requestData = (RequestData)DataSetSerializerDeserialize.ObjectDeserializeDecompress( bytes );
TCP_ClientConnectInfo cInfo = new TCP_ClientConnectInfo( connId.ToInt32(), header );
try
{
// LYFZ.BLL.BLL_FileLogs.WriteMainLogs(String.Format("接收到命令请求{0},参数{1}", Command.ToString(), recprotocol.Content));
if ( Command == TransferRequestCommand.SerializationData )
{
returnData = SerializerRequestProcessed( cInfo, requestData );
}
else
{
returnData = new ReturnData( "非法Serializer请求指令,服务器拒绝执行..." );
}
}
catch ( Exception ex )
{
returnData = new ReturnData( "处理Serializer请求指令时出错:" + ex.Message );
}
// LYFZ.BLL.BLL_FileLogs.WriteMainLogs("服务器端返回信息:" + returnProtocol.Content.Trim());
if ( returnData == null )
{
returnData = new ReturnData( "Serializer请求指令失败,没有返回有效的结果" );
}
returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes( returnData );
ret = hp_Server.AutoUnpackingAndSend( connId, sendBytes, header.TransportID, DataType.Serialization, Command );
System.GC.Collect();
}
catch ( Exception ex )
{
try
{
returnData = new ReturnData( "服务器处理客户端Serializer请求时出错:" + ex.Message );
returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
LYFZ.BLL.BLL_FileLogs.WriteMainLogs( returnData.ReturnMessage );
byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes( returnData );
ret = hp_Server.AutoUnpackingAndSend( connId, sendBytes, header.TransportID, DataType.Serialization, Command );
}
catch
{
}
}
return ret;
}
///
/// 处理SQL命令请求 并返回请求结果
///
///
///
///
static ReturnData SerializerRequestProcessed( TCP_ClientConnectInfo cInfo, RequestData requestData )
{
ReturnData returnData = null;
SerializerRequestCommand rCommand = (SerializerRequestCommand)requestData.RequestCommand;
//System.IO.File.WriteAllText("D:\\txt.txt",(System.Windows.Forms.Application.ExecutablePath) + "\\txt.txt");
switch ( rCommand )
{
case SerializerRequestCommand.TestCommand:
string jsondata = "1111";
byte[] jsonBytes = HPSocketCS.Extended.DataSetSerializerDeserialize.ObjectSerializerRetBytes( jsondata );
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
returnData.DataByte = jsonBytes;
returnData.AttachedMessage = "Serializer测试请求指令成功 ~O~ 收到的附加信息为:" + requestData.AttachedMessage;
break;
case SerializerRequestCommand.FTPCommand:
string jString = requestData.AttachedMessage;
FTPDataCommand command = new FTPDataCommand();
string msg = command.CommandFtpData( jString );
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
returnData.AttachedMessage = msg;
break;
#region oss云传片
// 客户端请求oss分店信息;
case SerializerRequestCommand.OSS_QueryBranch:
{
List osslist = OssOperation.OssProcess.GetBranchList();
if ( osslist != null )
{
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
returnData.DataByte = osslist.ToSerializerRetBytes();
}
else
{
returnData = new ReturnData( "请求指令失败 ~O~", 1 );
returnData.DataByte = null;
}
bool useOss = false;
// 打开指定的xml文件;
string configPath = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + "AliyunOssClient\\lyfzAliyunOss.config";
XMLHelper xmlhelper = new XMLHelper( configPath );
if ( xmlhelper != null )
{
useOss = Convert.ToBoolean( xmlhelper.GetXmlNodeByXpath( "//sys_configuration//UseOss" ) == null ? "false" : xmlhelper.GetXmlNodeByXpath( "//sys_configuration//UseOss" ).InnerText );
}
// 附加数据:是否开启oss传片;
returnData.AttachedMessage = useOss.ToString();
}
break;
case SerializerRequestCommand.OSS_Status:
{
bool useOss = false;
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
// 打开指定的xml文件;
string configPath = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + "AliyunOssClient\\lyfzAliyunOss.config";
XMLHelper xmlhelper = new XMLHelper( configPath );
if ( xmlhelper != null )
{
useOss = Convert.ToBoolean( xmlhelper.GetXmlNodeByXpath( "//sys_configuration//UseOss" ) == null ? "false" : xmlhelper.GetXmlNodeByXpath( "//sys_configuration//UseOss" ).InnerText );
}
// 附加数据:是否开启oss传片;
returnData.AttachedMessage = useOss.ToString();
}
break;
// 获取当前服务器配置的分店id;
case SerializerRequestCommand.OSS_QueryBranchId:
{
string branchid = "";
// 打开指定的xml文件;
string configfile = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + "AliyunOssClient\\lyfzAliyunOss.config";
XMLHelper xml = new XMLHelper( configfile );
if ( xml != null )
{
branchid = xml.GetXmlNodeByXpath( "//sys_configuration//LoginId" ) == null ? "" : xml.GetXmlNodeByXpath( "//sys_configuration//LoginId" ).InnerText;
}
// 附加数据:是否开启oss传片;
returnData.AttachedMessage = branchid;
}
break;
// 客户端发送上传任务信息;
case SerializerRequestCommand.OSS_UploadTask:
{
HPSocketCS.Extended.RequestParameters reqParameters = requestData.AttachedDataToObject();
OssOperation.OssUploadTask uploadTask = reqParameters.GetRequestParameter( "uploadtask" );
if ( OssOperation.OssProcess.SaveUploadTaskToFile( uploadTask ) )
{
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
}
else
{
returnData = new ReturnData( "请求指令失败 ~O~", 1 );
}
}
break;
#endregion
#region oss
case SerializerRequestCommand.OSS_TASK_JSON:
{
HPSocketCS.Extended.RequestParameters reqParameters = requestData.AttachedDataToObject();
string strTaskJson = reqParameters.GetRequestParameter( "oss_task_json" );
string strTaskId = requestData.AttachedMessage;
string path = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + ".OssTask\\";
if ( !System.IO.Directory.Exists( path ) )
{
try
{
System.IO.Directory.CreateDirectory( path );
}
catch ( Exception e )
{
returnData = new ReturnData( "无法创建任务文件保存目录, " + e.Message, 1 );
return returnData;
}
}
// 保存文件;
try
{
if ( strTaskId.Length == 33 )
{
string file = path + strTaskId.Substring( 0, 32 ) + ".json";
System.IO.File.WriteAllText( file, strTaskJson );
}
else
{
string file = path + strTaskId + ".json";
//if ( !System.IO.File.Exists( file ) )
System.IO.File.WriteAllText( file, strTaskJson );
}
returnData = new ReturnData( "保存文件成功", 0 );
// 判断程序是否启动;
#region 单例模式运行
try
{
bool create;
System.Threading.Mutex mu = new System.Threading.Mutex( false, "lyfz.Oss.Upload.Tool", out create );
if ( create )
{
// 退出锁;
mu.ReleaseMutex();
// 启动程序;
System.Diagnostics.Process.Start( LYFZ.WinAPI.CustomPublicMethod.BasePath + "\\OssTool.exe" );
}
}
catch { }
#endregion
}
catch ( Exception e )
{
returnData = new ReturnData( "保存文件失败," + e.Message, 1 );
return returnData;
}
}
break;
case SerializerRequestCommand.OSS_TASK_INFO:
{
string path = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + "\\.OssTask\\";
if ( !System.IO.Directory.Exists( path ) )
{
returnData = new ReturnData( "任务文件目录不存在!", 1 );
return returnData;
}
// 遍历文件夹;
string strJson;
List listJson = new List();
try
{
string[] files = System.IO.Directory.GetFiles( path );
foreach ( string file in files )
{
strJson = System.IO.File.ReadAllText( file );
listJson.Add( strJson );
}
returnData = new ReturnData( "获取任务信息成功", 0 );
returnData.DataByte = listJson.ToSerializerRetBytes();
}
catch ( Exception e )
{
returnData = new ReturnData( "遍历任务文件失败," + e.Message, 1 );
return returnData;
}
}
break;
case SerializerRequestCommand.OSS_TASK_EXISTS:
{
// 获取客户的请求参数;
HPSocketCS.Extended.RequestParameters reqParameters = requestData.AttachedDataToObject();
string strTaskId = reqParameters.GetRequestParameter( "oss_task_id" );
// 查找文件;
string path = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath( LYFZ.WinAPI.CustomPublicMethod.BasePath ) + "\\.OssTask\\";
if ( !System.IO.Directory.Exists( path ) )
{
returnData = new ReturnData( "任务文件目录不存在!", 1 );
return returnData;
}
// 遍历文件夹;
try
{
string strJson;
string filename;
bool bExist = false;
string[] files = System.IO.Directory.GetFiles( path, "*.json" );
foreach ( string file in files )
{
filename = System.IO.Path.GetFileNameWithoutExtension( file );
if ( filename.ToUpper() == strTaskId.ToUpper() )
{
bExist = true;
strJson = System.IO.File.ReadAllText( file );
returnData = new ReturnData( "获取任务信息成功", 0 );
returnData.DataByte = strJson.ToSerializerRetBytes();
break;
}
}
if ( !bExist )
{
returnData = new ReturnData( "没有该任务", 1 );
}
}
catch ( Exception e )
{
returnData = new ReturnData( "遍历任务文件失败," + e.Message, 1 );
return returnData;
}
}
break;
#endregion
// 客户端获取服务端配置信息, 用于客户端获取备份相片等操作;
case SerializerRequestCommand.Get_Server_Config:
{
LYFZ.Model.Model_ServerConfig ConfigModel = new BLL.BLL_Config().GetModelServerSysConfig();
if ( ConfigModel != null )
{
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
returnData.DataByte = ConfigModel.ToSerializerRetBytes();
}
else
{
returnData = new ReturnData( "请求指令失败 ~O~", 1 );
returnData.DataByte = null;
}
}
break;
#region N8服务器IP地址;
case SerializerRequestCommand.N8ServerIpAddress:
{
DAL_N8ServerConfig config = new DAL_N8ServerConfig();
config.LoadConfig();
returnData = new ReturnData( "请求指令成功 ~O~", 0 );
Model.N8Process.N8ServerConfig result = new Model.N8Process.N8ServerConfig();
result.N8ProductConfigDirectory = config.N8ProductConfigDirectory;
result.N8ServerIpAddress = config.N8ServerIpAddress;
result.N8ServerStatisticsDirectory = config.N8ServerStatisticsDirectory;
result.N8ServerUserDirectory = config.N8ServerUserDirectory;
returnData.DataByte = result.ToSerializerRetBytes();
}
break;
#endregion
}
return returnData;
}
}
}