/// <summary> /// 设置常用公众号 /// </summary> /// <param name="userID">用户ID</param> /// <param name="mpID">公众号ID</param> public void SetFocusMp(string userID, string mpID) { var mprelation = entities.Set <MpAccountUserRelation>().Where(c => c.MpID == mpID && c.UserID == userID).FirstOrDefault(); if (mprelation == null) { mprelation = new MpAccountUserRelation(); mprelation.ID = FormulaHelper.CreateGuid(); mprelation.MpID = mpID; mprelation.UserID = userID; mprelation.IsUsed = SysBool.T.ToString(); entities.Set <MpAccountUserRelation>().Add(mprelation); } else { mprelation.IsUsed = SysBool.T.ToString(); } entities.SaveChanges(); }
/// <summary> /// 更新部门 /// </summary> /// <param name="QyID"></param> private void ReFreshDepart(string QyID) { GetDepartmentListResult result = null; try { result = MailListApi.GetDepartmentList(GetAccessToken(QyID)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的部门失败", QyID)); result = MailListApi.GetDepartmentList(GetAccessToken(QyID, true)); } if (result.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的部门失败,原因:{1}", QyID, result.errmsg)); throw new Exception(string.Format("获取QyID为{0}的部门失败,原因:{1}", QyID, result.errmsg)); } var olddepts = entities.Set <QyDepart>().Where(c => c.QyID == QyID).ToList(); List <QyDepart> addlist = new List <QyDepart>(), alllist = new List <QyDepart>(); //新增 foreach (var add in result.department.Where(c => !olddepts.Select(d => d.DepartID).Contains(c.id))) { QyDepart qd = new QyDepart(); qd.ID = FormulaHelper.CreateGuid(); qd.QyID = QyID; qd.DepartName = add.name; qd.ParentDepartID = add.parentid; qd.DepartID = add.id; qd.DepartOrder = add.order; addlist.Add(qd); alllist.Add(qd); } //修改 foreach (var update in olddepts.Where(c => result.department.Select(d => d.id).Contains(c.DepartID.Value))) { var item = result.department.Where(c => c.id == update.DepartID).FirstOrDefault(); update.DepartName = item.name; update.ParentDepartID = item.parentid; update.DepartOrder = item.order; alllist.Add(update); } //删除 foreach (var delete in olddepts.Where(c => !result.department.Select(d => d.id).Contains(c.DepartID.Value))) { var relateusers = entities.Set <QyUser>().Where(c => c.DepartIDs.Contains(delete.ID)).ToList(); for (int i = 0; i < relateusers.Count(); i++) { var olddeparts = relateusers[i].DepartIDs.Split(',').ToList(); olddeparts.Remove(delete.ID); relateusers[i].DepartIDs = string.Join(",", olddeparts); } entities.Set <QyDepart>().Remove(delete); } //更新树形字段 var root = alllist.Where(c => !alllist.Select(d => d.DepartID).Contains(c.ParentDepartID)).FirstOrDefault(); if (root != null) { root.ParentID = ""; root.Length = 1; root.FullPath = root.ID; root.ChildCount = alllist.Where(c => c.ParentDepartID == root.DepartID).Count(); var ids = new int?[] { root.DepartID }; var parentlength = 1; while (ids.Count() > 0) { var children = alllist.Where(c => ids.Contains(c.ParentDepartID)).ToList(); for (int i = 0; i < children.Count(); i++) { var child = children[i]; var parent = alllist.Where(c => c.DepartID == child.ParentDepartID).FirstOrDefault(); if (parent == null) { continue; } child.ParentID = parent.ID; child.Length = parentlength + 1; child.FullPath = parent.FullPath + "." + child.ID; child.ChildCount = alllist.Where(c => c.ParentDepartID == child.DepartID).Count(); } ids = children.Select(c => c.DepartID).ToArray(); parentlength++; } } foreach (var item in addlist) { entities.Set <QyDepart>().Add(item); } entities.SaveChanges(); }