/// <summary> /// 启动清洗程序 /// </summary> /// <param name="model"></param> public void CleaningStart(ZhaopinCleaningProcedure model) { using (var db = new MangningXssDBEntities()) { var cleaningProcedure = db.ZhaopinCleaningProcedure.FirstOrDefault(f => f.Id == model.Id); if (cleaningProcedure == null) { db.ZhaopinCleaningProcedure.Add(model); } else { cleaningProcedure.StartTime = DateTime.UtcNow; cleaningProcedure.IsOnline = true; } db.SaveChanges(); } }
/// <summary> /// 处理简历 /// </summary> /// <param name="item"></param> /// <param name="cellphone"></param> /// <param name="email"></param> /// <param name="cleaningProcedure"></param> /// <param name="businessId"></param> private static void HandleResume(Match item, string cellphone, string email, ZhaopinCleaningProcedure cleaningProcedure, int businessId) { var number = item.Result("$1").Substring(0, 10); DateTime updateDateTime; if (!DateTime.TryParse(item.Result("$4"), out updateDateTime)) { return; } using (var db = new MangningXssDBEntities()) { var resume = db.ZhaopinResume.FirstOrDefault(f => f.RandomNumber == number); if (resume != null) { if (resume.Flag == 15) { #region 刷新简历更新时间 //if (resume.RefreshTime != null && updateDateTime.Date == resume.RefreshTime.Value.Date) continue; resume.RefreshTime = updateDateTime; resume.Flag = 14; var filePath = $@"D:\Badoucai\Resume\LocationJson\{resume.Id}.json"; using (var stream = new MemoryStream()) { if (!mangningOssClient.DoesObjectExist(mangningBucketName, $"Zhaopin/Resume/{resume.Id}")) { return; } var bytes = new byte[1024]; int len; var streamContent = mangningOssClient.GetObject(mangningBucketName, $"Zhaopin/Resume/{resume.Id}").Content; while ((len = streamContent.Read(bytes, 0, bytes.Length)) > 0) { stream.Write(bytes, 0, len); } var resumeContent = Encoding.UTF8.GetString(GZip.Decompress(stream.ToArray())); var jsonObj = JsonConvert.DeserializeObject <dynamic>(resumeContent); dynamic detialJSonStr; try { detialJSonStr = jsonObj.detialJSonStr; if (!string.IsNullOrEmpty((string)jsonObj.detialJSonStr.DateModified)) { jsonObj.detialJSonStr = JsonConvert.SerializeObject(jsonObj.detialJSonStr); } } catch (Exception) { detialJSonStr = JsonConvert.DeserializeObject <dynamic>((string)jsonObj.detialJSonStr); } detialJSonStr.DateLastReleased = updateDateTime; detialJSonStr.DateModified = updateDateTime; jsonObj.detialJSonStr = detialJSonStr; var newResumeContent = JsonConvert.SerializeObject(jsonObj); using (var jsonStream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(newResumeContent)))) { mangningOssClient.PutObject(mangningBucketName, $"Zhaopin/Resume/{resume.Id}", jsonStream); } File.WriteAllText(filePath, newResumeContent); } #endregion } if (resume.Flag == 2) { var user = db.ZhaopinUser.FirstOrDefault(f => f.Id == resume.UserId); if (user == null) { return; } if (!WatchResumeDetail(item, cookieContainer, user.Cellphone, user.Email, businessId)) { var procedure = db.ZhaopinCleaningProcedure.FirstOrDefault(f => f.Id == cleaningProcedure.Id); if (procedure != null) { procedure.Cookie = null; db.SaveChanges(); } businessIdQueue.Enqueue(businessId); } } } else { var incompleteResume = db.ZhaopinIncompleteResume.FirstOrDefault(f => f.ResumeNumber == number); if (incompleteResume != null) { incompleteResume.CompletionTime = DateTime.Now; } WatchResumeDetail(item, cookieContainer, cellphone, email, businessId); } db.SaveChanges(); } }