Пример #1
0
        /// <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();
            }
        }
Пример #2
0
        /// <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();
            }
        }