コード例 #1
0
        /// <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();
        }
コード例 #2
0
ファイル: WxFO.cs プロジェクト: Luyingjin/Qy
        /// <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();
        }