OssProcess.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. using LYFZ.Model;
  2. using Newtonsoft.Json;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Runtime.Remoting.Messaging;
  8. using System.Text;
  9. using HPSocketCS;
  10. using HPSocketCS.Extended;
  11. using LYFZ.Helper;
  12. namespace LYFZ.Network.OssOperation
  13. {
  14. public class OssProcess
  15. {
  16. #region 服务端
  17. public delegate bool SaveTaskToFile(OssUploadTask uploadTask);
  18. /// <summary>
  19. /// 获取oss的分店信息;
  20. /// </summary>
  21. /// <returns></returns>
  22. public static List<OssBranch> GetBranchList()
  23. {
  24. string jsonPath =LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath)+ "AliyunOssClient\\branchlist.json";
  25. if (!File.Exists(jsonPath))
  26. {
  27. LYFZ.BLL.BLL_FileLogs.WriteMainLogs("未找到branchlist.json");
  28. return null;
  29. }
  30. try
  31. {
  32. string strJson = File.ReadAllText(jsonPath);
  33. List<OssBranch> osslist = (List<OssBranch>)JsonConvert.DeserializeObject(strJson, typeof(List<OssBranch>));
  34. return osslist;
  35. }
  36. catch(Exception ex)
  37. {
  38. BLL.BLL_FileLogs.WriteMainLogs("GetBranchList 失败:" + ex.Message);
  39. }
  40. return null;
  41. }
  42. /// <summary>
  43. /// 将任务保存成json文件;
  44. /// </summary>
  45. /// <param name="uploadTask"></param>
  46. public static bool SaveUploadTaskToFile(OssUploadTask uploadTask)
  47. {
  48. if ( uploadTask != null)
  49. {
  50. try
  51. {
  52. string strJson = JsonConvert.SerializeObject(uploadTask);
  53. // 用订单号+相片类型+分店id来命名任务文件;
  54. File.WriteAllText(string.Format("{0}AliyunOssClient\\uploadTask\\{1}#{2}.json", LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath), uploadTask.UploadOrder, uploadTask.UploadImageType), strJson);
  55. return true;
  56. }
  57. catch
  58. {
  59. }
  60. }
  61. return false;
  62. }
  63. public static void CallbackFunc(IAsyncResult result)
  64. {
  65. SaveTaskToFile handler = (SaveTaskToFile)((AsyncResult)result).AsyncDelegate;
  66. handler.EndInvoke(result);
  67. }
  68. #endregion
  69. #region 客户端
  70. public static readonly LYFZ.Network.TCPNetworkClient.TCP_NetworkClient tcpClient = new Network.TCPNetworkClient.TCP_NetworkClient();
  71. public static bool PlatinumConnect( )
  72. {
  73. string hostAddress;
  74. LYFZ.BLL.BLL_Config cBll = new BLL.BLL_Config();
  75. LYFZ.Model.Model_Config mConfig = cBll.GetModel_SysConfig();
  76. if (mConfig.IsOpenLocalImportPhoto && !LYFZ.WinAPI.CustomPublicMethod.CheckInternaNetworkAddress(mConfig.ServerHostOrIP))
  77. hostAddress = "127.0.0.1";
  78. else
  79. hostAddress = mConfig.ServerHostOrIP;
  80. if ( !tcpClient.ConnectionServer(hostAddress, (ushort)mConfig.OssServerPort) )
  81. {
  82. return false;
  83. }
  84. return true;
  85. }
  86. public static bool GetOssBranchList(TcpPackClient client, out List<OssBranch> listbranch, ref bool useOss)
  87. {
  88. listbranch = null;
  89. RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_QueryBranch);
  90. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData);
  91. if (returnData.ReturnStatus)
  92. {
  93. useOss = Convert.ToBoolean(returnData.AttachedMessage);
  94. if (returnData.DataByte != null)
  95. {
  96. listbranch = returnData.DataByteToModelObject<List<OssBranch>>();
  97. }
  98. }
  99. return returnData.ReturnStatus;
  100. }
  101. /// <summary>
  102. /// 获取云传片开启状态;
  103. /// </summary>
  104. /// <param name="client"></param>
  105. /// <param name="useOss"></param>
  106. /// <returns></returns>
  107. public static bool GetOssStatus(TcpPackClient client, ref bool useOss)
  108. {
  109. RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_Status);
  110. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData);
  111. if (returnData.ReturnStatus)
  112. {
  113. useOss = Convert.ToBoolean(returnData.AttachedMessage);
  114. }
  115. return returnData.ReturnStatus;
  116. }
  117. public static bool GetOssBranchList(out List<AliyunOssLibrary.Model.SimplifyBranch> listbranch, ref bool useOss)
  118. {
  119. listbranch = null;
  120. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  121. {
  122. if ( !PlatinumConnect() )
  123. return false;
  124. }
  125. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_GET_BRANCH);
  126. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  127. if (returnData.ReturnStatus)
  128. {
  129. useOss = Convert.ToBoolean(returnData.AttachedMessage);
  130. if (returnData.DataByte != null)
  131. {
  132. listbranch = returnData.DataByteToModelObject<List<AliyunOssLibrary.Model.SimplifyBranch>>();
  133. }
  134. }
  135. return returnData.ReturnStatus;
  136. }
  137. public static bool SendOssUploadInfo(TcpPackClient client, OssUploadTask uploadTask)
  138. {
  139. string strJson = JsonConvert.SerializeObject(uploadTask);
  140. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  141. reqParameters.SetRequestParameter<OssUploadTask>("uploadtask", uploadTask);
  142. RequestData requestData = new RequestData((int)TCPNetworkServer.SerializerRequestCommand.OSS_UploadTask);
  143. requestData.AttachedData = reqParameters.ToBytes();
  144. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(client, requestData);
  145. return returnData.ReturnStatus;
  146. }
  147. public static bool SendOssUploadInfo(AliyunOssLibrary.Model.UploadTask uploadTask)
  148. {
  149. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  150. {
  151. if (!PlatinumConnect())
  152. return false;
  153. }
  154. string strJson = JsonConvert.SerializeObject(uploadTask);
  155. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  156. reqParameters.SetRequestParameter<AliyunOssLibrary.Model.UploadTask>("new_task", uploadTask);
  157. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_NEW_TASK);
  158. requestData.AttachedData = reqParameters.ToBytes();
  159. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  160. return returnData.ReturnStatus;
  161. }
  162. public static bool GetUploadOrDownload(out List<AliyunOssLibrary.Model.SafeUploadOrderDetail> listResult, AliyunOssLibrary.Enumerate.OrderListType type)
  163. {
  164. listResult = null;
  165. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  166. {
  167. if (!PlatinumConnect())
  168. return false;
  169. }
  170. if (tcpClient != null)
  171. {
  172. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  173. reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.OrderListType>("get_upload_or_download", type);
  174. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_GET_UPLOAD_OR_DOWNLOAD);
  175. requestData.AttachedData = reqParameters.ToBytes();
  176. if (tcpClient.Client != null)
  177. {
  178. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  179. if (returnData.ReturnStatus)
  180. {
  181. listResult = returnData.DataByteToModelObject<List<AliyunOssLibrary.Model.SafeUploadOrderDetail>>();
  182. }
  183. return returnData.ReturnStatus;
  184. }
  185. else
  186. {
  187. LYFZ.BLL.BLL_FileLogs.WriteMainLogs("tcpClient.Client = nulll");
  188. return false;
  189. }
  190. }
  191. else
  192. {
  193. LYFZ.BLL.BLL_FileLogs.WriteMainLogs("tcpClient = nulll");
  194. return false;
  195. }
  196. }
  197. public static bool SetUploadOpt(string upload_id, AliyunOssLibrary.Enumerate.UploadStatus status)
  198. {
  199. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  200. {
  201. if (!PlatinumConnect())
  202. return false;
  203. }
  204. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  205. reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.UploadStatus>("set_upload_opt", status);
  206. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_UPLOAD);
  207. requestData.AttachedData = reqParameters.ToBytes();
  208. requestData.AttachedMessage = upload_id;
  209. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  210. return returnData.ReturnStatus;
  211. }
  212. public static bool SetDownloadOpt(string upload_id, AliyunOssLibrary.Enumerate.DownloadStatus status)
  213. {
  214. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  215. {
  216. if (!PlatinumConnect())
  217. return false;
  218. }
  219. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  220. reqParameters.SetRequestParameter<AliyunOssLibrary.Enumerate.DownloadStatus>("set_download_opt", status);
  221. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_DOWNLOAD);
  222. requestData.AttachedData = reqParameters.ToBytes();
  223. requestData.AttachedMessage = upload_id;
  224. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  225. return returnData.ReturnStatus;
  226. }
  227. public static bool SetPriority(string upload_id, bool isUpload)
  228. {
  229. if (tcpClient.AppState == HPSocketCS.Extended.AppState.Stoped)
  230. {
  231. if (!PlatinumConnect())
  232. return false;
  233. }
  234. HPSocketCS.Extended.RequestParameters reqParameters = new HPSocketCS.Extended.RequestParameters();
  235. reqParameters.SetRequestParameter<bool>("set_priority", isUpload);
  236. RequestData requestData = new RequestData((int)AliyunOssLibrary.Enumerate.CommProtocol.C2C_PLATINUM_SET_PRIORITY);
  237. requestData.AttachedData = reqParameters.ToBytes();
  238. requestData.AttachedMessage = upload_id;
  239. ReturnData returnData = SerializerDataProcessed.HP_SendSerializerCommandToServer(tcpClient.Client, requestData);
  240. return returnData.ReturnStatus;
  241. }
  242. #endregion
  243. }
  244. }