/// <summary> /// 单个文件上传 /// </summary> /// <param name="newBucket"></param> /// <param name="path"></param> /// <param name="newOss"></param> private void SingleFileUpload(IOss newOss, string newBucket, string path) { var resume = JsonConvert.DeserializeObject <FormaterResume>(File.ReadAllText(path)); dynamic response; var account = new ResumeRefrence { Id = resume.Reference.Id, Source = resume.Reference.Source }; #region 准备上传简历到数据库 try { response = HttpAPI.PrepareUploadResume(JsonConvert.SerializeObject(account)); if (response.Code.ToString() != "0") { this.AsyncSetLog(this.tbx_Log, $"准备上传简历API,响应信息:{JsonConvert.SerializeObject(response)}"); pathQueue.Enqueue(path); return; } } catch (Exception ex) { pathQueue.Enqueue(path); this.AsyncSetLog(this.tbx_Log, $"{DateTime.Now} 准备上传简历到数据库异常,异常消息:{ex.Message}"); return; } #endregion #region 简历到数据库 try { response = HttpAPI.UploadResume(JsonConvert.SerializeObject(resume)); if (response.Code.ToString() != "0") { var failpath = ConfigurationManager.AppSettings["51Job_UploadFailFiles_Path"] + companyName + Path.GetFileName(path); if (File.Exists(failpath)) { File.Delete(failpath); } File.Move(path, failpath); this.AsyncSetLog(this.tbx_Log, $"上传简历失败!响应信息:{JsonConvert.SerializeObject(response)}"); return; } else { this.AsyncSetLog(this.tbx_Log, $"上传简历成功!已上传:{Interlocked.Increment(ref count)},还剩余:{pathQueue.Count} 份待上传!"); } } catch (Exception ex) { pathQueue.Enqueue(path); this.AsyncSetLog(this.tbx_Log, $"{DateTime.Now} 上传简历到数据库异常,异常消息:{ex.Message}"); return; } finally { HttpAPI.FinishUploadResume(JsonConvert.SerializeObject(account)); } #endregion #region 简历到 OSS var tag = response.Reference.Tag.ToString(); var id = response.Reference.ResumeId.ToString(); var cellphone = response.Reference.Cellphone.ToString(); var email = response.Reference.Email.ToString(); if (tag == "C" || tag == "U") { if (cellphone != "0") { resume.Cellphone = cellphone; resume.Email = email; } using (var stream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(resume))))) { try { newOss.PutObject(newBucket, $"{ConfigurationManager.AppSettings["Oss.New.ResumePath"]}{id}", stream); } catch (Exception ex) { this.AsyncSetLog(this.tbx_Log, "上传 OSS 失败!异常信息:" + ex.Message); retryResumeQueue.Enqueue(new Tuple <string, FormaterResume, string>(id, resume, path)); return; } } } var uploadSuccessPath = ConfigurationManager.AppSettings["51Job_UploadSuccessFiles_Path"] + companyName + Path.GetFileName(path); if (File.Exists(uploadSuccessPath)) { File.Delete(uploadSuccessPath); } File.Move(path, uploadSuccessPath); #endregion }
/// <summary> /// 单个文件上传 /// </summary> /// <param name="newBucket"></param> /// <param name="path"></param> /// <param name="newOss"></param> private void SingleFileUpload(IOss newOss, string newBucket, string path) { var resume = JsonConvert.DeserializeObject <Resume>(File.ReadAllText(path)); dynamic response; string tag; var account = new ResumeRefrence { Id = resume.Reference.Id, Source = resume.Reference.Source }; #region 准备上传简历到数据库 try { response = HttpAPI.PrepareUploadResume(JsonConvert.SerializeObject(account)); if (response.Code.ToString() != "0") { this.AsyncSetLog(this.tbx_Log, $"准备上传简历API,响应信息:{JsonConvert.SerializeObject(response)}"); HttpAPI.FinishUploadResume(JsonConvert.SerializeObject(account)); pathQueue.Enqueue(path); return; } } catch (Exception ex) { pathQueue.Enqueue(path); this.AsyncSetLog(this.tbx_Log, $"{DateTime.Now} 准备上传简历到数据库异常,异常消息:{ex.Message}"); HttpAPI.FinishUploadResume(JsonConvert.SerializeObject(account)); return; } #endregion #region 简历到数据库 try { var times = 0; while (true) { response = HttpAPI.UploadResume(JsonConvert.SerializeObject(resume)); if (response.Code.ToString() != "0" && times++ == 0) { HttpAPI.FinishUploadResume(JsonConvert.SerializeObject(account)); continue; } break; } tag = response.Reference.Tag.ToString(); if (response.Code.ToString() != "0") { var failpath = ConfigurationManager.AppSettings["Zhaopin_UploadFailFiles_Path"] + companyName + Path.GetFileName(path); if (File.Exists(failpath)) { File.Delete(failpath); } File.Move(path, failpath); this.AsyncSetLog(this.tbx_Log, $"上传简历失败!响应信息:{JsonConvert.SerializeObject(response)}"); return; } else { if (tag == "C") { Interlocked.Increment(ref insertCount); } if (tag == "U") { Interlocked.Increment(ref updateCount); } this.AsyncSetLog(this.tbx_Log, $"上传简历成功!已上传:{Interlocked.Increment(ref successCount)} C=>{insertCount} U=>{updateCount} 还剩余:{pathQueue.Count} 份待上传!"); } } catch (Exception ex) { pathQueue.Enqueue(path); this.AsyncSetLog(this.tbx_Log, $"{DateTime.Now} 上传简历到数据库异常,异常消息:{ex.Message}"); return; } finally { HttpAPI.FinishUploadResume(JsonConvert.SerializeObject(account)); } #endregion #region 简历到 OSS var id = response.Reference.ResumeId.ToString(); if (tag == "C" || tag == "U") { using (var stream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(resume))))) { try { newOss.PutObject(newBucket, $"{ConfigurationManager.AppSettings["Oss.New.ResumePath"]}{id}", stream); } catch (Exception ex) { this.AsyncSetLog(this.tbx_Log, "上传 OSS 失败!异常信息:" + ex.Message); retryResumeQueue.Enqueue(new Tuple <string, Resume, string>(id, resume, path)); return; } } } var uploadSuccessPath = ConfigurationManager.AppSettings["Zhaopin_UploadSuccessFiles_Path"] + companyName; if (!Directory.Exists(uploadSuccessPath)) { Directory.CreateDirectory(uploadSuccessPath); } uploadSuccessPath += Path.GetFileName(path); if (File.Exists(uploadSuccessPath)) { File.Delete(uploadSuccessPath); } File.Move(path, uploadSuccessPath); #endregion }