/// <summary>
        /// 导入外部Josn
        /// </summary>
        private static void ImportResume()
        {
            var importCount = 0;

            while (true)
            {
                try
                {
                    var filePaths = Directory.GetFiles(importFilePath);

                    if (filePaths.Length == 0)
                    {
                        Thread.Sleep(10 * 1000);

                        continue;
                    }

                    Console.WriteLine($"{DateTime.Now} > {filePaths.Length} Need Import ! ");

                    foreach (var filePath in filePaths)
                    {
                        try
                        {
                            var jsonObj = JsonConvert.DeserializeObject <dynamic>(File.ReadAllText(filePath));

                            var resumeData = jsonObj.data == null ? jsonObj : jsonObj.data;

                            var resumeDetail = JsonConvert.DeserializeObject(resumeData.detialJSonStr.ToString());

                            var resumeId = resumeData.resumeId != null ? (int)resumeData.resumeId : resumeDetail.ResumeId != null ? (int)resumeDetail.ResumeId : 0;

                            var cellphone = resumeData.userDetials.mobilePhone.ToString();

                            if (string.IsNullOrEmpty(cellphone))
                            {
                                var path = importFailPath + Path.GetFileName(filePath);

                                if (File.Exists(path))
                                {
                                    File.Delete(path);
                                }

                                File.Move(filePath, path);

                                continue;
                            }

                            var resumeNumber = ((string)resumeData.resumeNo).Substring(0, 10);

                            var userId = (int)resumeData.userDetials.userMasterId;

                            var refreshTime = BaseFanctory.GetTime((string)resumeDetail.DateLastReleased).ToUniversalTime();

                            using (var db = new MangningXssDBEntities())
                            {
                                var resume = db.ZhaopinResume.FirstOrDefault(f => f.Id == resumeId);

                                var isNeedUpload = true;

                                var sourceFlag = -1;

                                var isUpload = false;

                                if (resume != null)
                                {
                                    sourceFlag = resume.Flag;
                                }

                                if (!(resume?.RefreshTime != null && resume.RefreshTime.Value.Date >= refreshTime.Date) || resume?.Flag < 8)
                                {
                                    if (resume != null)
                                    {
                                        resume.RandomNumber = resumeNumber;
                                        resume.RefreshTime  = refreshTime;
                                        resume.UpdateTime   = DateTime.UtcNow;
                                        if (string.IsNullOrEmpty(resume.UserExtId))
                                        {
                                            resume.UserExtId = resumeDetail.UserMasterExtId?.ToString();
                                        }
                                        if (resumeData.Flag != null && (int)resumeData.Flag < 0)
                                        {
                                            if (resume.Flag >= 8 || mangningOssClient.DoesObjectExist(mangningBucketName, $"Zhaopin/Resume/{resume.Id}") || mangningOssClient.DoesObjectExist(mangningBucketName, $"WatchResume/{resume.Id}"))
                                            {
                                                isNeedUpload = false;
                                            }
                                        }

                                        resume.Flag = 0xE;
                                    }
                                    else
                                    {
                                        resume = new ZhaopinResume
                                        {
                                            Id             = resumeId,
                                            RandomNumber   = resumeNumber,
                                            UserId         = userId,
                                            RefreshTime    = refreshTime,
                                            UpdateTime     = DateTime.UtcNow,
                                            UserExtId      = resumeDetail.UserMasterExtId.ToString(),
                                            DeliveryNumber = null,
                                            Source         = "Import",
                                            Flag           = 0xE
                                        };

                                        db.ZhaopinResume.Add(resume);
                                    }

                                    var user = db.ZhaopinUser.FirstOrDefault(f => f.Id == userId);

                                    if (user != null)
                                    {
                                        if (!user.Source.Contains("MANUAL"))
                                        {
                                            user.ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime();
                                            user.CreateTime = resumeData.Flag != null && (int)resumeData.Flag < 0 ? user.CreateTime : BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime();
                                            user.Cellphone  = resumeData.userDetials.mobilePhone.ToString();
                                            user.Email      = resumeData.userDetials.email.ToString();
                                            user.Name       = resumeData.userDetials.userName.ToString();
                                            user.UpdateTime = DateTime.UtcNow;
                                            user.Username   = resumeData.userDetials.email.ToString();
                                        }
                                    }
                                    else
                                    {
                                        user = new ZhaopinUser
                                        {
                                            Id         = userId,
                                            Source     = "Import",
                                            ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime(),
                                            CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime(),
                                            Cellphone  = resumeData.userDetials.mobilePhone.ToString(),
                                            Email      = resumeData.userDetials.email.ToString(),
                                            Name       = resumeData.userDetials.userName.ToString(),
                                            UpdateTime = DateTime.UtcNow,
                                            Username   = resumeData.userDetials.email.ToString()
                                        };

                                        db.ZhaopinUser.Add(user);
                                    }

                                    if (isNeedUpload)
                                    {
                                        isUpload = true;

                                        var resumeContent = JsonConvert.SerializeObject(resumeData);

                                        using (var jsonStream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(resumeContent))))
                                        {
                                            mangningOssClient.PutObject(mangningBucketName, $"Zhaopin/Resume/{resume.Id}", jsonStream);
                                        }
                                    }

                                    db.SaveChanges();
                                }

                                File.Delete(filePath);

                                Console.WriteLine($"{DateTime.Now} > Improt success ! ResumeId = {resumeId}, SourceFlag = {sourceFlag}, IsUpload = {isUpload}, Count = {++importCount}.");
                            }
                        }
                        catch (Exception ex)
                        {
                            var path = importFailPath + Path.GetFileName(filePath);

                            if (File.Exists(path))
                            {
                                File.Delete(path);
                            }

                            File.Move(filePath, path);

                            Trace.WriteLine($"{DateTime.Now} > Import Error Message = {ex.Message}, Path = {path}.");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError(ex.ToString());
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 上传智联 Josn 格式简历
        /// </summary>
        /// <param name="json"></param>
        /// <param name="jsonResumeId"></param>
        /// <returns></returns>
        public DataResult UploadZhaopinResume(string json, int jsonResumeId)
        {
            try
            {
                var resumeData = JsonConvert.DeserializeObject <dynamic>(json);

                var resumeDetail = JsonConvert.DeserializeObject(resumeData.detialJSonStr.ToString());

                var refreshTime = BaseFanctory.GetTime((string)resumeDetail.DateLastReleased).ToUniversalTime();

                resumeData.detialJSonStr = resumeDetail;

                var resumeNumber = ((string)resumeData.resumeNo).Substring(0, 10);

                var userId = (int)resumeData.userDetials.userMasterId;

                var resumeId = resumeData.resumeId != null ? (int)resumeData.resumeId : resumeDetail.ResumeId != null ? (int)resumeDetail.ResumeId : 0;

                using (var db = new MangningXssDBEntities())
                {
                    var resume = db.ZhaopinResume.FirstOrDefault(f => f.Id == resumeId);

                    if (!(resume?.RefreshTime != null && resume.RefreshTime.Value.Date >= refreshTime.Date))
                    {
                        if (resume != null)
                        {
                            resume.RandomNumber = resumeNumber;
                            resume.RefreshTime  = refreshTime;
                            resume.UpdateTime   = DateTime.UtcNow;
                            if (string.IsNullOrEmpty(resume.UserExtId))
                            {
                                resume.UserExtId = resumeDetail.UserMasterExtId.ToString();
                            }
                            resume.Source = !resume.Source.Contains("Download") ? resume.Source += ",Download" : resume.Source;
                            resume.Flag   = 0xE;
                        }
                        else
                        {
                            resume = new ZhaopinResume
                            {
                                Id             = resumeId,
                                RandomNumber   = resumeNumber,
                                UserId         = userId,
                                RefreshTime    = refreshTime,
                                UpdateTime     = DateTime.UtcNow,
                                UserExtId      = resumeDetail.UserMasterExtId.ToString(),
                                DeliveryNumber = null,
                                Source         = "Download",
                                Flag           = 0xE
                            };

                            db.ZhaopinResume.Add(resume);
                        }

                        var user = db.ZhaopinUser.FirstOrDefault(f => f.Id == userId);

                        if (user != null)
                        {
                            if (!user.Source.Contains("MANUAL"))
                            {
                                user.ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime();
                                user.CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime();
                                user.Cellphone  = resumeData.userDetials.mobilePhone.ToString();
                                user.Email      = resumeData.userDetials.email.ToString();
                                user.Name       = resumeData.userDetials.userName.ToString();
                                user.UpdateTime = DateTime.UtcNow;
                                user.Username   = resumeData.userDetials.email.ToString();
                            }
                        }
                        else
                        {
                            user = new ZhaopinUser
                            {
                                Id         = userId,
                                Source     = "Download",
                                ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime(),
                                CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime(),
                                Cellphone  = resumeData.userDetials.mobilePhone.ToString(),
                                Email      = resumeData.userDetials.email.ToString(),
                                Name       = resumeData.userDetials.userName.ToString(),
                                UpdateTime = DateTime.UtcNow,
                                Username   = resumeData.userDetials.email.ToString()
                            };

                            db.ZhaopinUser.Add(user);
                        }

                        var resumeContent = JsonConvert.SerializeObject(resumeData);

                        using (var jsonStream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(resumeContent))))
                        {
                            mangningOssClient.PutObject(mangningBucketName, $"Zhaopin/Resume/{resumeId}", jsonStream);
                        }

                        var resumePath = $"{uploadFilePath}{resumeId}.json";

                        File.WriteAllText(resumePath, JsonConvert.SerializeObject(resumeData));

                        db.SaveChanges();
                    }
                }

                return(new DataResult());
            }
            catch (Exception ex)
            {
                LogFactory.Warn($"简历上传异常!异常信息:{ex.Message}, Json:{json}");

                return(new DataResult {
                    ErrorMsg = $"Josn 格式异常,resumeNo:{jsonResumeId},{ex.Message}", IsSuccess = false
                });
            }
        }
        /// <summary>
        /// 處理簡歷列表
        /// </summary>
        /// <param name="resumes"></param>
        /// <param name="unhandled"></param>
        /// <param name="staff"></param>
        /// <param name="isWhile"></param>
        /// <param name="cookieContainer"></param>
        private static void HandleResumes(dynamic resumes, int unhandled, ZhaopinStaff staff, ref bool isWhile, CookieContainer cookieContainer)
        {
            var stopwatch = new Stopwatch();

            foreach (var item in resumes)
            {
                #region Handle resume

                try
                {
                    stopwatch.Restart();

                    #region Save resume and Upload

                    var requestResult = RequestFactory.QueryRequest($"http://ihr.zhaopin.com/resumesearch/getresumedetial.do?resumeNo={item.id}_{item.jobNumber}_{item.number}_1_1&resumeSource=3", cookieContainer: cookieContainer);

                    if (!requestResult.IsSuccess)
                    {
                        Trace.TraceWarning(requestResult.ErrorMsg);

                        continue;
                    }

                    var content = JsonConvert.DeserializeObject <dynamic>(requestResult.Data);

                    if ((int)content.code == 6001) // 登录过期
                    {
                        using (var db = new MangningXssDBEntities())
                        {
                            var zhaopinStaff = db.ZhaopinStaff.FirstOrDefault(f => f.Id == staff.Id);

                            if (zhaopinStaff != null)
                            {
                                zhaopinStaff.Cookie = null;

                                db.SaveChanges();

                                dictionary.TryRemove(staff.Id, out companyId);
                            }
                        }

                        Trace.WriteLine($"{DateTime.Now} > Loging Timeout ! Username = {staff.Username}, Message = {content.message}.");

                        isWhile = false;

                        break;
                    }

                    if ((int)content.code != 1)
                    {
                        Trace.WriteLine($"{DateTime.Now} > Get Resume Detail Error ! Username = {staff.Username}, Message = {content.message}.");

                        continue;
                    }

                    var resumeData = content.data;

                    var resumeDetail = JsonConvert.DeserializeObject(resumeData.detialJSonStr.ToString());

                    var refreshTime = BaseFanctory.GetTime((string)resumeDetail.DateLastReleased).ToUniversalTime();

                    resumeData.detialJSonStr = resumeDetail;

                    var resumeNumber = ((string)resumeData.resumeNo).Substring(0, 10);

                    var userId = (int)resumeData.userDetials.userMasterId;

                    var resumeId = resumeData.resumeId != null ? (int)resumeData.resumeId : resumeDetail.ResumeId != null ? (int)resumeDetail.ResumeId : 0;

                    var status = "Handle";

                    using (var db = new MangningXssDBEntities())
                    {
                        var resume = db.ZhaopinResume.FirstOrDefault(f => f.Id == resumeId);

                        if (!(resume?.RefreshTime != null && resume.RefreshTime.Value.Date >= refreshTime.Date))
                        {
                            if (resume != null)
                            {
                                resume.RandomNumber = resumeNumber;
                                resume.RefreshTime  = refreshTime;
                                resume.UpdateTime   = DateTime.UtcNow;
                                if (string.IsNullOrEmpty(resume.UserExtId))
                                {
                                    resume.UserExtId = resumeDetail.UserMasterExtId.ToString();
                                }
                                resume.Source = !resume.Source.Contains("Deliver") ? resume.Source += ",Deliver" : resume.Source;
                                resume.Flag   = 0xE;
                            }
                            else
                            {
                                resume = new ZhaopinResume
                                {
                                    Id             = resumeId,
                                    RandomNumber   = resumeNumber,
                                    UserId         = userId,
                                    RefreshTime    = refreshTime,
                                    UpdateTime     = DateTime.UtcNow,
                                    UserExtId      = resumeDetail.UserMasterExtId.ToString(),
                                    DeliveryNumber = null,
                                    Source         = "Deliver",
                                    Flag           = 0xE
                                };

                                db.ZhaopinResume.Add(resume);
                            }

                            var user = db.ZhaopinUser.FirstOrDefault(f => f.Id == userId);

                            if (user != null)
                            {
                                if (!user.Source.Contains("MANUAL"))
                                {
                                    user.ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime();
                                    user.CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime();
                                    user.Cellphone  = resumeData.userDetials.mobilePhone.ToString();
                                    user.Email      = resumeData.userDetials.email.ToString();
                                    user.Name       = resumeData.userDetials.userName.ToString();
                                    user.UpdateTime = DateTime.UtcNow;
                                    user.Username   = resumeData.userDetials.email.ToString();
                                }
                            }
                            else
                            {
                                user = new ZhaopinUser
                                {
                                    Id         = userId,
                                    Source     = "Deliver",
                                    ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime(),
                                    CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime(),
                                    Cellphone  = resumeData.userDetials.mobilePhone.ToString(),
                                    Email      = resumeData.userDetials.email.ToString(),
                                    Name       = resumeData.userDetials.userName.ToString(),
                                    UpdateTime = DateTime.UtcNow,
                                    Username   = resumeData.userDetials.email.ToString()
                                };

                                db.ZhaopinUser.Add(user);
                            }

                            var resumeContent = JsonConvert.SerializeObject(resumeData);

                            using (var jsonStream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(resumeContent))))
                            {
                                mangningOssClient.PutObject(mangningBucketName, $"Zhaopin/Resume/{resumeId}", jsonStream);
                            }

                            var resumePath = $"{uploadFilePath}{resumeId}.json";

                            File.WriteAllText(resumePath, JsonConvert.SerializeObject(resumeData));

                            db.SaveChanges();
                        }
                        else
                        {
                            status = "NoHandle";
                        }
                    }

                    #endregion

                    Thread.Sleep(3000);

                    #region SignResume

                    var data = HttpUtility.UrlEncode(JsonConvert.SerializeObject(new
                    {
                        signTag    = "noSuit",
                        resumeList = new List <dynamic>
                        {
                            new
                            {
                                resumeNo     = $"{item.jobNumber}_{item.number}_{item.version}_1",
                                resumenumber = item.number,
                                item.version,
                                lanType      = 1,
                                jobname      = ((string)resumeData?.jobName)?.Replace("\"", "\\\"").Replace("\\", "\\\\"),
                                jobno        = item.jobNumber,
                                resumesource = item.resumeSource,
                                resumeJobId  = item.id,
                                resumerName  = ((string)item?.userName).Replace("\r", "").Replace("\n", "").Replace("\"", "\\\""),
                                resumejlName = ((string)item?.name).Replace("\r", "").Replace("\n", "").Replace("\"", "\\'").Replace("\\", "\\\\"),
                                resumerId    = item.userId
                            }
                        },
                        mark = ""
                    }));

                    requestResult = RequestFactory.QueryRequest("https://ihr.zhaopin.com/resumemanage/resumesignstate.do", $"data={data}", RequestEnum.POST, cookieContainer);

                    if (!requestResult.IsSuccess)
                    {
                        Trace.TraceWarning(requestResult.ErrorMsg);

                        continue;
                    }

                    content = JsonConvert.DeserializeObject <dynamic>(requestResult.Data);

                    if ((int)content.code == 6001) // 登录过期
                    {
                        using (var db = new MangningXssDBEntities())
                        {
                            var zhaopinStaff = db.ZhaopinStaff.FirstOrDefault(f => f.Id == staff.Id);

                            if (zhaopinStaff != null)
                            {
                                zhaopinStaff.Cookie = null;

                                db.SaveChanges();

                                dictionary.TryRemove(staff.Id, out companyId);
                            }
                        }

                        Trace.WriteLine($"{DateTime.Now} > Loging Timeout ! Username = {staff.Username}, Message = {content.message}.");

                        isWhile = false;

                        break;
                    }

                    if ((int)content.code != 1)
                    {
                        Trace.WriteLine($"{DateTime.Now} > Sign Resume Error ! Username = {staff.Username}, Message = {content.message}, ResumeId = {resumeId}.");

                        continue;
                    }

                    #endregion

                    stopwatch.Stop();

                    var elapsed = stopwatch.ElapsedMilliseconds;

                    Interlocked.Increment(ref count);

                    Console.WriteLine($"{DateTime.Now} > {count} {status} {staff.Username}:Unhandled = {--unhandled}, RId = {resumeId}, Elapsed = {elapsed} ms.");
                }
                catch (Exception ex)
                {
                    Trace.TraceError(ex.ToString());
                }

                #endregion
            }
        }
        /// <summary>
        /// 處理簡歷列表
        /// </summary>
        /// <param name="resumes"></param>
        /// <param name="unhandled"></param>
        /// <param name="staff"></param>
        /// <param name="isWhile"></param>
        /// <param name="cookieContainer"></param>
        /// <param name="isNewSystem"></param>
        private static void HandleResumes(dynamic resumes, ref int unhandled, ZhaopinStaff staff, ref bool isWhile, CookieContainer cookieContainer, bool isNewSystem)
        {
            var stopwatch = new Stopwatch();

            var time = 0;

            foreach (var item in resumes)
            {
                #region Handle resume

                try
                {
                    if (IsDownload((long)item.id, staff.CompanyId))
                    {
                        if (++time > 30)
                        {
                            break;
                        }

                        continue;
                    }

                    time = 0;

                    stopwatch.Restart();

                    #region Save resume and Upload

                    var requestResult = RequestFactory.QueryRequest($"http://ihr.zhaopin.com/resumesearch/getresumedetial.do?resumeNo={item.id}_{item.jobNumber}_{item.number}_1_1&resumeSource=3", cookieContainer: cookieContainer);

                    if (!requestResult.IsSuccess)
                    {
                        Trace.TraceWarning(requestResult.ErrorMsg);

                        continue;
                    }

                    var content = JsonConvert.DeserializeObject <dynamic>(requestResult.Data);

                    if ((int)content.code == 6001) // 登录过期
                    {
                        using (var db = new MangningXssDBEntities())
                        {
                            var zhaopinStaff = db.ZhaopinStaff.FirstOrDefault(f => f.Id == staff.Id);

                            if (zhaopinStaff != null)
                            {
                                zhaopinStaff.Cookie = null;

                                db.SaveChanges();

                                dictionary.TryUpdate(staff.Id, true, true);
                            }
                        }

                        Trace.WriteLine($"{DateTime.Now} > Loging Timeout ! Username = {staff.Username}, Message = {content.message}.");

                        isWhile = false;

                        break;
                    }

                    if ((int)content.code != 1)
                    {
                        Trace.WriteLine($"{DateTime.Now} > Get Resume Detail Error ! Username = {staff.Username}, Message = {content.message}.");

                        continue;
                    }

                    var resumeData = content.data;

                    var resumeDetail = JsonConvert.DeserializeObject(resumeData.detialJSonStr.ToString());

                    var refreshTime = BaseFanctory.GetTime((string)resumeDetail.DateLastReleased).ToUniversalTime();

                    resumeData.detialJSonStr = resumeDetail;

                    var resumeNumber = ((string)resumeData.resumeNo).Substring(0, 10);

                    var userId = (int)resumeData.userDetials.userMasterId;

                    var resumeId = resumeData.resumeId != null ? (int)resumeData.resumeId : resumeDetail.ResumeId != null ? (int)resumeDetail.ResumeId : 0;

                    var status = "Handle";

                    using (var db = new MangningXssDBEntities())
                    {
                        var resume = db.ZhaopinResume.FirstOrDefault(f => f.Id == resumeId);

                        if (!(resume?.RefreshTime != null && resume.RefreshTime.Value.Date >= refreshTime.Date))
                        {
                            if (resume != null)
                            {
                                resume.RandomNumber = resumeNumber;
                                resume.RefreshTime  = refreshTime;
                                resume.UpdateTime   = DateTime.UtcNow;
                                if (string.IsNullOrEmpty(resume.UserExtId))
                                {
                                    resume.UserExtId = resumeDetail.UserMasterExtId.ToString();
                                }
                                resume.Source = !resume.Source.Contains("Deliver") ? resume.Source += ",Deliver" : resume.Source;
                                resume.Flag   = 0xE;
                            }
                            else
                            {
                                resume = new ZhaopinResume
                                {
                                    Id             = resumeId,
                                    RandomNumber   = resumeNumber,
                                    UserId         = userId,
                                    RefreshTime    = refreshTime,
                                    UpdateTime     = DateTime.UtcNow,
                                    UserExtId      = resumeDetail.UserMasterExtId.ToString(),
                                    DeliveryNumber = null,
                                    Source         = "Deliver",
                                    Flag           = 0xE
                                };

                                db.ZhaopinResume.Add(resume);
                            }

                            var user = db.ZhaopinUser.FirstOrDefault(f => f.Id == userId);

                            if (user != null)
                            {
                                if (!user.Source.Contains("MANUAL"))
                                {
                                    user.ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime();
                                    user.CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime();
                                    user.Cellphone  = resumeData.userDetials.mobilePhone.ToString();
                                    user.Email      = resumeData.userDetials.email.ToString();
                                    user.Name       = resumeData.userDetials.userName.ToString();
                                    user.UpdateTime = DateTime.UtcNow;
                                    user.Username   = resumeData.userDetials.email.ToString();
                                }
                            }
                            else
                            {
                                user = new ZhaopinUser
                                {
                                    Id         = userId,
                                    Source     = "Deliver",
                                    ModifyTime = BaseFanctory.GetTime((string)resumeDetail.DateModified).ToUniversalTime(),
                                    CreateTime = BaseFanctory.GetTime((string)resumeDetail.DateCreated).ToUniversalTime(),
                                    Cellphone  = resumeData.userDetials.mobilePhone.ToString(),
                                    Email      = resumeData.userDetials.email.ToString(),
                                    Name       = resumeData.userDetials.userName.ToString(),
                                    UpdateTime = DateTime.UtcNow,
                                    Username   = resumeData.userDetials.email.ToString()
                                };

                                db.ZhaopinUser.Add(user);
                            }

                            var resumeContent = JsonConvert.SerializeObject(resumeData);

                            using (var jsonStream = new MemoryStream(GZip.Compress(Encoding.UTF8.GetBytes(resumeContent))))
                            {
                                mangningOssClient.PutObject(mangningBucketName, $"Zhaopin/Resume/{resumeId}", jsonStream);
                            }

                            var resumePath = $"{uploadFilePath}{resumeId}.json";

                            File.WriteAllText(resumePath, JsonConvert.SerializeObject(resumeData));
                        }
                        else
                        {
                            status = "NoHandle";
                        }

                        db.ZhaopinDeliveryLog.Add(new ZhaopinDeliveryLog
                        {
                            CompanyId  = staff.CompanyId,
                            DeliveryId = (long)item.id
                        });

                        db.ZhaopinDelivery.Add(new ZhaopinDelivery
                        {
                            CompanyId    = staff.CompanyId,
                            Id           = (long)item.id,
                            CreateTime   = DateTime.UtcNow,
                            ResumeId     = resumeId,
                            ResumeNumber = resumeData.resumeNo.ToString(),
                            JobNumber    = resumeData.jobNo.ToString(),
                            JobName      = resumeData.jobName.ToString()
                        });

                        db.SaveChanges();
                    }

                    #endregion

                    stopwatch.Stop();

                    var elapsed = stopwatch.ElapsedMilliseconds;

                    Interlocked.Increment(ref count);

                    var version = isNewSystem ? "NewSystem" : "5.5";

                    Console.WriteLine($"{DateTime.Now} > {version} {count} {status} {staff.Username}:Unhandled = {--unhandled}, RId = {resumeId}, Elapsed = {elapsed} ms.");

                    Thread.Sleep(interval);
                }
                catch (Exception ex)
                {
                    Trace.TraceError(ex.ToString());
                }

                #endregion
            }
        }