using System; using System.Collections.Generic; using System.Linq; using MySystem.PxcModels; using MySystem.JavaUserModels; using Library; using LitJson; using System.Threading; namespace MySystem { public class SycnJavaUsersService { public readonly static SycnJavaUsersService Instance = new SycnJavaUsersService(); private SycnJavaUsersService() { } public void Start() { Thread th = new Thread(DoWorks); th.IsBackground = true; th.Start(); } public void DoWorks() { while (true) { try { DoQueue(); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步创客信息异常"); } Thread.Sleep(1800000); } } public void DoQueue() { JavaUserModels.WebCMSEntities javaUser = new JavaUserModels.WebCMSEntities(); PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities(); DateTime start = DateTime.Now.AddMonths(-3); DateTime end = DateTime.Now.AddHours(-1); IQueryable kxsUser = javaUser.KxsUser.Where(m => m.CreateTime >= start && m.CreateTime < end); int minId = kxsUser.Min(m => m.Id); int maxId = kxsUser.Max(m => m.Id); List checkUserIds = db.Users.Select(m => m.Id).Where(m => m >= minId && m <= maxId).ToList(); var users = javaUser.KxsUser.Where(m => m.Id >= minId && m.Id <= maxId && !checkUserIds.Contains(m.Id)).ToList(); foreach(var user in users) { int id = user.Id; int pid = user.Pid; string pidPath = user.PidPath; DateTime CreateDate = user.CreateTime.Value; string MakerCode = user.UserCode; string Mobile = user.Phone; string RealName = user.Username; string HeadPhoto = user.Avatar; Users edit = db.Users.FirstOrDefault(m => m.Mobile == Mobile); if(edit != null) { db.Users.Remove(edit); } UserForMobile forMobile = db.UserForMobile.FirstOrDefault(m => m.Mobile == Mobile); if(forMobile != null) { db.UserForMobile.Remove(forMobile); } UserForMakerCode forMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode); if(forMakerCode != null) { db.UserForMakerCode.Remove(forMakerCode); } db.SaveChanges(); Users add = db.Users.Add(new Users() { Id = id, ParentUserId = pid, ParentNav = pidPath, CreateDate = CreateDate, MakerCode = MakerCode, Mobile = Mobile, RealName = RealName, HeadPhoto = HeadPhoto, }).Entity; db.SaveChanges(); db.UserForMobile.Add(new UserForMobile() { Mobile = Mobile, UserId = add.Id }); db.UserForMakerCode.Add(new UserForMakerCode() { MakerCode = MakerCode, UserId = add.Id }); db.SaveChanges(); } javaUser.Dispose(); db.Dispose(); } } }