private void ProcessFront(DoubleSidePostCardCropInfo postCardProcessCropInfo) { Log(@"开始处理明信片[" + postCardProcessCropInfo.PostCardId + "]"); // 更新状态为正在处理中 PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESSING"); // 创建临时目录 if (!Directory.Exists(Path.GetTempPath() + "/PostCardCrop/")) { Directory.CreateDirectory(Path.GetTempPath() + "/PostCardCrop/"); } var isWait = true; try { var resultFileInfo = new PostCardItemProductFileSubmitRequest(); // 正面文件 Log(@"开始下载正面文件"); FileApi.DownloadFileByFileIdAsync(postCardProcessCropInfo.FrontCropCropInfo.FileId, new FileInfo(Path.GetTempPath() + "/PostCardCrop/" + Guid.NewGuid() + ".jpg"), frontFileInfo => { Log(@"文件下载成功,开始处理正面文件"); //========================================================================================== 处理正面 ========================================================================================== var frontProductFile = frontFileInfo.Process(postCardProcessCropInfo.FrontCropCropInfo, postCardProcessCropInfo.PostCardType, postCardProcessCropInfo.ProductWidth, postCardProcessCropInfo.ProductHeight); if (frontProductFile == null) { Log(@"正面文件处理失败"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; // 流程结束 return; } Log(@"正面文件处理完成"); Log(@"开始上传正面成品文件"); var frontFileUploadResponse = frontProductFile.UploadFile("明信片正面成品"); resultFileInfo.FrontProductFileId = frontFileUploadResponse.Id; Log(@"正面成品文件上传成功"); try { Log(@"开始删除正面文件"); // 删除文件 frontFileInfo.Delete(); // 删除文件 frontProductFile.Delete(); Log(@"正面文件删除成功"); } catch (Exception e) { LogInfo.Error(e.Message, e); Log(@"正面文件删除失败"); } //========================================================================================== 没有反面,不用裁切 ========================================================================================== // 有反面裁切 if (postCardProcessCropInfo.BackCropCropInfo == null) { Log(@"开始提交成品ID"); PostCardItemApi.SubmitPostCardProductFile( postCardProcessCropInfo.PostCardId, resultFileInfo, k => { Log(@"成品ID提交成功"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "AFTER_PROCESS", null); isWait = false; }, m => { Log(@"成品ID提交失败"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; }); } //========================================================================================== 有反面,但是不需要裁切 ========================================================================================== else { var backCropInfo = postCardProcessCropInfo.BackCropCropInfo; if ( string.IsNullOrEmpty(backCropInfo.FileId) || ( Math.Abs(backCropInfo.CropLeft) < 0.001 && Math.Abs(backCropInfo.CropTop) < 0.001 && Math.Abs(backCropInfo.CropWidth - 1) < 0.001 && Math.Abs(backCropInfo.CropHeight - 1) < 0.001) ) { Log(@"反面为标准尺寸,不需要裁切!"); resultFileInfo.BackProductFileId = backCropInfo.FileId; Log(@"开始提交成品ID"); //========================================================================================== 提交 ========================================================================================== PostCardItemApi.SubmitPostCardProductFile( postCardProcessCropInfo.PostCardId, resultFileInfo, k => { Log(@"成品ID提交成功"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "AFTER_PROCESS", null); isWait = false; }, m => { Log(@"成品ID提交失败"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; }); } //========================================================================================== 反面需要裁切 ========================================================================================== else { Log(@"开始下载反面文件"); FileApi.DownloadFileByFileIdAsync(postCardProcessCropInfo.BackCropCropInfo.FileId, new FileInfo(Path.GetTempPath() + "/PostCardCrop/" + Guid.NewGuid() + ".jpg"), backFileInfo => { Log(@"反面文件下载完成"); Log(@"开始处理反面文件"); var backProductFile = backFileInfo.Process(postCardProcessCropInfo.BackCropCropInfo, "B", postCardProcessCropInfo.ProductWidth, postCardProcessCropInfo.ProductHeight); Log(@"反面文件处理完成"); Log(@"开始上传反面成品文件"); var backFileUploadResponse = backProductFile.UploadFile("明信片正面成品"); resultFileInfo.BackProductFileId = backFileUploadResponse.Id; Log(@"反面成品文件上传成功"); Log(@"开始删除反面文件"); try { // 删除文件 backFileInfo.Delete(); // 删除文件 backProductFile.Delete(); Log(@"反面文件删除成功"); } catch (Exception e) { LogInfo.Error(e.Message, e); Log(@"反面文件删除失败"); } Log(@"开始提交成品ID"); //========================================================================================== 提交 ========================================================================================== PostCardItemApi.SubmitPostCardProductFile( postCardProcessCropInfo.PostCardId, resultFileInfo, k => { Log(@"成品ID提交成功"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "AFTER_PROCESS", null); isWait = false; }, m => { Log(@"成品ID提交失败"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; }); //========================================================================================== 反面下载失败 ========================================================================================== }, message => { PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; }); } } }, failure => { //========================================================================================== 正面下载失败 ========================================================================================== Log("正面文件下载失败"); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; }); } catch (Exception e) { Log(e.Message); PostCardItemApi.UpdatePostCardProcessStatus(postCardProcessCropInfo.PostCardId, "PROCESS_FAILURE", null); isWait = false; } while (isWait) { Application.DoEvents(); } }