using LYFZ.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using HPSocketCS; using HPSocketCS.Extended; using LYFZ.Helper; namespace LYFZ.Network.OssOperation { public class OssProcess { #region 服务端 public delegate bool SaveTaskToFile(OssUploadTask uploadTask); /// <summary> /// 获取oss的分店信息; /// </summary> /// <returns></returns> public static List<OssBranch> GetBranchList() { string jsonPath =LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath)+ "AliyunOssClient\\branchlist.json"; if (!File.Exists(jsonPath)) { LYFZ.BLL.BLL_FileLogs.WriteMainLogs("未找到branchlist.json"); return null; } try { string strJson = File.ReadAllText(jsonPath); List<OssBranch> osslist = (List<OssBranch>)JsonConvert.DeserializeObject(strJson, typeof(List<OssBranch>)); return osslist; } catch(Exception ex) { BLL.BLL_FileLogs.WriteMainLogs("GetBranchList 失败:" + ex.Message); } return null; } /// <summary> /// 将任务保存成json文件; /// </summary> /// <param name="uploadTask"></param> public static bool SaveUploadTaskToFile(OssUploadTask uploadTask) { if ( uploadTask != null) { try { string strJson = JsonConvert.SerializeObject(uploadTask); // 用订单号+相片类型+分店id来命名任务文件; File.WriteAllText(string.Format("{0}AliyunOssClient\\uploadTask\\{1}#{2}.json", LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath), uploadTask.UploadOrder, uploadTask.UploadImageType), strJson); return true; } catch { } } return false; } public static void CallbackFunc(IAsyncResult result) { SaveTaskToFile handler = (SaveTaskToFile)((AsyncResult)result).AsyncDelegate; handler.EndInvoke(result); } #endregion #region 客户端 public static readonly LYFZ.Network.TCPNetworkClient.TCP_NetworkClient tcpClient = new Network.TCPNetworkClient.TCP_NetworkClient(); public static bool PlatinumConnect( ) { string hostAddress; LYFZ.BLL.BLL_Config cBll = new BLL.BLL_Config(); LYFZ.Model.Model_Config mConfig = cBll.GetModel_SysConfig(); if (mConfig.IsOpenLocalImportPhoto && !LYFZ.WinAPI.CustomPublicMethod.CheckInternaNetworkAddress(mConfig.ServerHostOrIP)) hostAddress = "127.0.0.1"; else hostAddress = mConfig.ServerHostOrIP; if ( !tcpClient.ConnectionServer(hostAddress, (ushort)mConfig.OssServerPort) ) { return false; } return true; } public static bool GetOssBranchList(TcpPackClient client, out List<OssBranch> listbranch, ref bool useOss) { listbranch = null; RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_QueryBranch); ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData); if (returnData.ReturnStatus) { useOss = Convert.ToBoolean(returnData.AttachedMessage); if (returnData.DataByte != null) { listbranch = returnData.DataByteToModelObject<List<OssBranch>>(); } } return returnData.ReturnStatus; } /// <summary> /// 获取云传片开启状态; /// </summary> /// <param name="client"></param> /// <param name="useOss"></param> /// <returns></returns> public static bool GetOssStatus(TcpPackClient client, ref bool useOss) { RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_Status); ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData); if (returnData.ReturnStatus) { useOss = Convert.ToBoolean(returnData.AttachedMessage); } return returnData.ReturnStatus; } public static bool GetOssBranchList(out List<AliyunOssLibrary.Model.SimplifyBranch> listbranch, ref bool useOss) { listbranch = null; if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if ( !PlatinumConnect() ) return false; } RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_GET_BRANCH); ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); if (returnData.ReturnStatus) { useOss = Convert.ToBoolean(returnData.AttachedMessage); if (returnData.DataByte != null) { listbranch = returnData.DataByteToModelObject<List<AliyunOssLibrary.Model.SimplifyBranch>>(); } } return returnData.ReturnStatus; } public static bool SendOssUploadInfo(TcpPackClient client, OssUploadTask uploadTask) { string strJson = JsonConvert.SerializeObject(uploadTask); HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<OssUploadTask>("uploadtask", uploadTask); RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_UploadTask); requestData.AttachedData = reqParameters.ToBytes(); ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData); return returnData.ReturnStatus; } public static bool SendOssUploadInfo(AliyunOssLibrary.Model.UploadTask uploadTask) { if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if (!PlatinumConnect()) return false; } string strJson = JsonConvert.SerializeObject(uploadTask); HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<AliyunOssLibrary.Model.UploadTask>("new_task", uploadTask); RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_NEW_TASK); requestData.AttachedData = reqParameters.ToBytes(); ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); return returnData.ReturnStatus; } public static bool GetUploadOrDownload(out List<AliyunOssLibrary.Model.SafeUploadOrderDetail> listResult, AliyunOssLibrary.Enumerate.OrderListType type) { listResult = null; if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if (!PlatinumConnect()) return false; } if (tcpClient != null) { HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.OrderListType>("get_upload_or_download", type); RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_GET_UPLOAD_OR_DOWNLOAD); requestData.AttachedData = reqParameters.ToBytes(); if (tcpClient.Client != null) { ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); if (returnData.ReturnStatus) { listResult = returnData.DataByteToModelObject<List<AliyunOssLibrary.Model.SafeUploadOrderDetail>>(); } return returnData.ReturnStatus; } else { LYFZ.BLL.BLL_FileLogs.WriteMainLogs("tcpClient.Client = nulll"); return false; } } else { LYFZ.BLL.BLL_FileLogs.WriteMainLogs("tcpClient = nulll"); return false; } } public static bool SetUploadOpt(string upload_id, AliyunOssLibrary.Enumerate.UploadStatus status) { if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if (!PlatinumConnect()) return false; } HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.UploadStatus>("set_upload_opt", status); RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_UPLOAD); requestData.AttachedData = reqParameters.ToBytes(); requestData.AttachedMessage = upload_id; ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); return returnData.ReturnStatus; } public static bool SetDownloadOpt(string upload_id, AliyunOssLibrary.Enumerate.DownloadStatus status) { if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if (!PlatinumConnect()) return false; } HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.DownloadStatus>("set_download_opt", status); RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_DOWNLOAD); requestData.AttachedData = reqParameters.ToBytes(); requestData.AttachedMessage = upload_id; ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); return returnData.ReturnStatus; } public static bool SetPriority(string upload_id, bool isUpload) { if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped) { if (!PlatinumConnect()) return false; } HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters(); reqParameters.SetRequestParameter<bool>("set_priority", isUpload); RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_PRIORITY); requestData.AttachedData = reqParameters.ToBytes(); requestData.AttachedMessage = upload_id; ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData); return returnData.ReturnStatus; } #endregion } }