using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.BLL.Ww; using WX.CRM.Common; using WX.CRM.Model.Entity; namespace WX.CRM.CRMServices.Res_AlloCate { public class WwHhuserAct { private string url = "http://post.hc.dn8188.com/Rights/WeworkUser2Eid.html"; private string changeurl = "http://post.hc.dn8188.com/Rights/ChangeWeworkUser2Eid.html"; private WW_HHUSER_EID_ACT_BL _wwHhuserAct = new WW_HHUSER_EID_ACT_BL(); private SecurityHelper sHelper = new SecurityHelper(); private BAS_INNERUSER_BL user_BL = new BAS_INNERUSER_BL(); public void Start() { try { BAS_BUSSINESSLINE_BL _bussinessLine = new BAS_BUSSINESSLINE_BL(); CACHE_BL _cacheBL = new CACHE_BL(); var deptcode = Utility.GetSettingOrNullByKey("DataClientCode"); var channel = Utility.GetSettingOrNullByKey("Channel"); var acturl = Utility.GetSettingOrNullByKey("UserActUrl"); if (!string.IsNullOrWhiteSpace(acturl)) { url = acturl; } var ch = 0; if (!string.IsNullOrEmpty(channel)) { ch = int.Parse(channel); } var list = _wwHhuserAct.GetList(p => p.ISEXE == 0 && p.ACT != "changeEid").OrderBy(p => p.CTIME); if (list.Count() == 0) { return; } var time = (long)Utility.ConvertDateTimeInt(DateTime.Now); var message = JsonConvert.SerializeObject(new { account = "dn.crm", time }); var para = sHelper.createSignEncodingStr(message); var urlUp = url + "?" + para; List allUser = new List(); Dictionary res = new Dictionary(); if (list.Count() > 0) { var userList = user_BL.GetAllList();//_cacheBL.GetUserList(); allUser = userList.Where(n => list.Select(x => x.EID).Contains(n.EID)).ToList(); res = _bussinessLine.GetChannelByUser(allUser.Select(n => n.PKID).ToList()); } var listUp = new List(); foreach (var item in list) { try { var userId = allUser.FirstOrDefault(n => n.EID == item.EID) == null? 0 : allUser.FirstOrDefault(n => n.EID == item.EID).PKID; var userChannel = ch; if (res.ContainsKey(userId)) { userChannel = res[userId]; } listUp.Add(new WeworkUser2Eid(item.APPID, item.USERID, Convert.ToInt32(item.EID), 1, deptcode, userChannel, item.ASSIGNSTATUS.HasValue ? Convert.ToInt32(item.ASSIGNSTATUS.Value) : 0)); } catch (Exception ex) { LogHelper.Error($"【{item.APPID}】【{item.USERID}】构建数据失败:{ex.Message}"); } } LogHelper.Info($"ActUrl 提交实体为{JsonConvert.SerializeObject(listUp)}"); var rsp = Utility.HttpPostData(urlUp, JsonConvert.SerializeObject(listUp), Encoding.UTF8); var ret = JsonConvert.DeserializeAnonymousType(rsp, new { errcode = -1, errmsg = string.Empty }); if (ret.errcode == 0) { foreach (var item in list) { try { item.ISEXE = 1; _wwHhuserAct.Update(item); } catch (Exception ex) { LogHelper.Error("更新上传关系记录失败:" + item.ToJson() + "---" + ex.ToString()); } } } } catch (Exception ex) { LogHelper.Error(ex); } } public void BuildAction() { using (var db = new crmContext()) { var eidList = db.WW_HHUSER_EID.ToList(); foreach (var item in eidList) { WW_HHUSER_EID_ACT model = new WW_HHUSER_EID_ACT { ID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), APPID = item.CORPID, USERID = item.USERID, EID = item.EID == null ? 0 : item.EID.Value, ASSIGNSTATUS = item.ASSIGNSTATUS, CTIME = Convert.ToDateTime("2023-04-17"), ACT = "addOrupdate", ISEXE = 0, }; db.WW_HHUSER_EID_ACT.Add(model); db.SaveChanges(); } } } public void ChangeEidStart() { try { var deptcode = Utility.GetSettingOrNullByKey("DataClientCode"); var channel = Utility.GetSettingOrNullByKey("Channel"); var changeEidUrl = Utility.GetSettingOrNullByKey("ChangeEidActUrl"); if (!string.IsNullOrWhiteSpace(changeEidUrl)) { changeurl = changeEidUrl; } var ch = 0; if (!string.IsNullOrEmpty(channel)) { ch = int.Parse(channel); } var list = _wwHhuserAct.GetList(p => p.ISEXE == 0 && p.ACT == "changeEid").OrderBy(p => p.CTIME).ToList(); if (list.Count() == 0) { return; } var time = (long)Utility.ConvertDateTimeInt(DateTime.Now); var message = JsonConvert.SerializeObject(new { account = "dn.crm", time }); var para = sHelper.createSignEncodingStr(message); var urlUp = changeurl + "?" + para; var listUp = new List(); foreach (var item in list) { listUp.Add(new WeworkUser2Eid(item.APPID, item.USERID, Convert.ToInt32(item.EID), 1, deptcode, ch, item.ASSIGNSTATUS.HasValue ? Convert.ToInt32(item.ASSIGNSTATUS.Value) : 0)); } var rsp = Utility.HttpPostData(urlUp, JsonConvert.SerializeObject(listUp), Encoding.UTF8); var ret = JsonConvert.DeserializeAnonymousType(rsp, new { errcode = -1, errmsg = string.Empty }); if (ret.errcode == 0) { foreach (var item in list) { try { item.ISEXE = 1; _wwHhuserAct.Update(item); } catch (Exception ex) { LogHelper.Error("更新上传关系记录失败:" + item.ToJson() + "---" + ex.ToString()); } } } } catch (Exception ex) { LogHelper.Error(ex); } } } public class WeworkUser2Eid { public WeworkUser2Eid() { } public WeworkUser2Eid(string appid, string userid, int eid, int status, string deptcode, int ch, int assignstatus) { this.appid = appid; this.userid = userid; this.eid = eid; this.status = status; this.deptcode = deptcode; this.ch = ch; this.assignstatus = assignstatus; } public string appid { get; set; } public string userid { get; set; } public int eid { get; set; } public int status { get; set; } public string deptcode { get; set; } public int ch { get; set; } public int assignstatus { get; set; } } public class WwHhuserActJob : IJob { private static bool _isNotice = false; public void Execute(JobExecutionContext context) { if (_isNotice) return; _isNotice = true; try { var actBl = new WwHhuserAct(); //同步推广状态 actBl.Start(); //修改工号 actBl.ChangeEidStart(); } catch (Exception e) { WX.CRM.Common.LogHelper.Error("WX.CRM.CRMServices.Res_AlloCate.WwHhuserActJob.WwHhuserAct().Execute:" + e); } finally { _isNotice = false; } } } }