/// <summary> /// 同步人员数据 /// </summary> public static void UpdatePersonData() { while (true) { bool result = false; int time = 0; if (DateTime.Now.Hour == 3)//时间为三点的时候time初始化 { time = 0; } if (DateTime.Now.Hour == 2 && time == 0)//时间为凌晨两点并且time为0的时候执行同步操作 { // LogManager.WriteLog(LogFile.Trace, DateTime.Now.ToString("yyyy-MM-dd") + "开始启动定时同步离职人员服务"); try { U_AccessToken accessTokenModel = new U_AccessToken(); accessTokenModel.UserKey = ConfigSugar.GetAppString("WeChatCorpID"); accessTokenModel.UserPassword = ConfigSugar.GetAppString("WeChatSecret"); UpdatePersonLogic _updatePersonLogic = new UpdatePersonLogic(); List <V_UserNotexistsmiddata> personList = new List <V_UserNotexistsmiddata>(); personList = _updatePersonLogic.GetPeosonList(); //获取离职人员列表(存在于Person表而不存在与middata表的人员列表) _updatePersonLogic.UpdateStatus2Focus(personList); //首先将人员状态改为已关注 if (personList.Count >= 10) { result = _updatePersonLogic.UpdatePersonStatus(personList, 3); //状态更改为未匹配 } else if (personList.Count > 0) { result = _updatePersonLogic.DisableWeChatData(accessTokenModel, personList); //同时将微信禁用 if (result) { result = _updatePersonLogic.UpdatePersonStatus(personList, 4); //状态更改为已离职 } } // result = _updatePersonLogic.DeletePersonData(personList); //if (result) //{ // //删除微信通讯录中人员 // result = _updatePersonLogic.DeleteWeChatData(accessTokenModel, personList); //} // LogManager.WriteLog(LogFile.Trace, DateTime.Now.ToString("yyyy-MM-dd") + "定时同步离职人员服务启动完成"); } catch (Exception exp) { LogManager.WriteLog(LogFile.Error, "同步离职人员数据:" + result + "/n" + exp.ToString()); } time++; } } }
/// <summary> /// 从微信后台获取人员的状态,并且将状态同步至数据库中 /// </summary> public static void UpdatePersonStatus() { bool result = false; int time = 0; while (true) { if (DateTime.Now.Hour == 2) { time = 0; } if (DateTime.Now.Hour != 1 || time != 0) { continue; //时间为凌晨1点并且time为0的时候执行同步操作 } try { U_AccessToken accessTokenModel = new U_AccessToken(); accessTokenModel.UserKey = ConfigSugar.GetAppString("WeChatCorpID"); accessTokenModel.UserPassword = ConfigSugar.GetAppString("WeChatSecret"); var accessToken = WeChatTools.GetAccessoken(accessTokenModel); var departments = WeChatTools.GetDepartment(accessToken); //获取所有的部门 UpdatePersonLogic _updatePersonLogic = new UpdatePersonLogic(); foreach (var item in departments.department) { var users = WeChatTools.GetUsers(accessToken, item.id.ToString()); //根据部门获取所有的人员 result = _updatePersonLogic.UpdatePersonStatus(users.userlist); } } catch (Exception exp) { LogManager.WriteLog(LogFile.Error, "同步人员状态:" + result + "/n" + exp); } time++; } }