/// <summary>
        /// 保存角色用户关系
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult SaveRoleUsers(RoleUserViewModel model)
        {
            return(ExecuteFunctionRun(() =>
            {
                ActionResult result = new ActionResult(true, "msgGlobalString.SaveSucced");
                List <RoleUserViewModel> listusers = new List <RoleUserViewModel>();
                try
                {
                    OThinker.Organization.OrgPost post = this.Engine.Organization.GetUnit(model.RoleID) as OThinker.Organization.OrgPost;
                    if (post != null)
                    {
                        if (model.UserID != null)
                        {
                            var ids = model.UserID.Split(';');
                            for (int i = 0; i < ids.Length; i++)
                            {
                                OThinker.Organization.OrgStaff staff = new OThinker.Organization.OrgStaff()
                                {
                                    ObjectID = string.IsNullOrEmpty(model.ObjectID) ? "" : model.ObjectID,
                                    OUScope = model.ManagerScopeIds == null ? new string[] { } : model.ManagerScopeIds.Split(';'),
                                    UserID = ids[i],
                                    ParentObjectID = model.RoleID,
                                    ParentIndex = model.Sortkey, //ParentIndex 存储排序键
                                    Description = model.Description
                                };

                                //新增
                                if (string.IsNullOrEmpty(staff.ObjectID))
                                {
                                    //新增时判断是否有添加过
                                    if (post.ChildList != null && post.ChildList.Count() > 0)
                                    {
                                        bool flag = false;
                                        foreach (OThinker.Organization.OrgStaff sf in post.ChildList)
                                        {
                                            if (sf.UserID == ids[i])
                                            {
                                                flag = true;
                                                break;
                                            }
                                        }

                                        if (flag)
                                        {
                                            result.Success = false;
                                            result.Message = "用户[" + this.Engine.Organization.GetName(ids[i]) + "]已经存在记录,请选择编辑!";
                                            return Json(result);
                                        }
                                    }

                                    staff.ObjectID = Guid.NewGuid().ToString();
                                    post.AddChildUnit(staff);
                                }
                                //更新
                                else
                                {
                                    post.UpdateChildUnit(staff);
                                }
                            }
                        }


                        post.ChildList = post.ChildList.OrderBy(c => c.ParentIndex).ToArray();
                        this.Engine.Organization.UpdateUnit(this.UserValidator.UserID, post);
                    }

                    return Json(result);
                }
                catch (Exception ex)
                {
                    result = new ActionResult(false, "保存失败," + ex.Message);
                    return Json(result);
                }
            }));
        }
Beispiel #2
0
        /// <summary>
        /// 角色同步
        /// </summary>
        private void SyncRole()
        {
            //角色
            //说明V10版本中的角色相当于V9版本中职务、岗位、编制的集合。所以在同步时,要进行转化
            //岗位名称->角色名称
            //岗位编码->角色编码
            //岗位成员->角色用户
            //岗位所在部门->角色管理范围

            var sqlorgjob = string.Format(@"SELECT
	[ObjectID]
   ,[Code]
   ,[SuperiorCode]
   ,[DisplayName]
   ,[Description]
   ,[ParentObjectID]
   ,[ParentPropertyName]
   ,[ParentIndex]
   ,[Level]
FROM [OT_OrgJob]
ORDER BY Code");
            var dtjob     = H3DBHelper.GetDataTable(sqlorgjob);

            foreach (DataRow item in dtjob.Rows)
            {
                var orgpost = new OThinker.Organization.OrgPost
                {
                    ObjectID = item["ObjectID"].ToString(),
                    Code     = item["Code"].ToString(),
                    Name     = item["DisplayName"].ToString(),
                    JobLevel = item["Level"].ToString() == "" ? 0 : int.Parse(item["Level"].ToString())
                };

                var staff = string.Format(@"SELECT
	                                            t3.ChildID
                                               ,t2.ParentID
                                               ,t1.Code
                                            FROM OT_OrgJob t1
	                                            ,OT_OrgPost t2
	                                            ,OT_GroupChild t3
                                            WHERE t1.Code = t2.JobCode
                                            AND t2.ObjectID = t3.ParentObjectID
                                            AND t1.Code='{0}'
                                            ORDER BY t1.Code, t2.Code, t2.ParentID", orgpost.Code);

                var dtorgstaff = H3DBHelper.GetDataTable(staff);
                var list       = new List <OThinker.Organization.OrgStaff>();
                foreach (DataRow item2 in dtorgstaff.Rows)
                {
                    var orgstaff = new OThinker.Organization.OrgStaff
                    {
                        OUScope        = new string[] { item2["ParentID"].ToString() },
                        UserID         = item2["ChildID"].ToString(),
                        ParentObjectID = orgpost.ObjectID
                    };
                    list.Add(orgstaff);
                }
                orgpost.ChildList = list.ToArray();
                OThinker.H3.Controllers.AppUtility.Engine.Organization.AddUnit("", orgpost);
            }


            //编制名称->角色名称
            //编制编码->角色编码
            //编制成员->角色用户
            //编制管理部门->角色管理范围

            //组
            var sqlgroup = string.Format(@"SELECT
	                                            ObjectID
                                               ,Name
                                               ,Code
                                               ,ParentID
                                            FROM [OT_Group]");
            var dtgroup  = H3DBHelper.GetDataTable(sqlgroup);

            foreach (DataRow item in dtgroup.Rows)
            {
                var group = new OThinker.Organization.Group()
                {
                    ObjectID = item["ObjectID"].ToString(),
                    Name     = item["Name"].ToString(),
                    ParentID = item["ParentID"].ToString()
                };
                var groupchild = string.Format(@"SELECT
	                                                *
                                                FROM OT_GroupChild
                                                WHERE ParentObjectID = '{0}'", item["ObjectID"].ToString());
                var dtchild    = H3DBHelper.GetDataTable(groupchild);
                foreach (DataRow item2 in dtchild.Rows)
                {
                    var list  = new List <OThinker.Organization.GroupChild>();
                    var staff = new OThinker.Organization.GroupChild
                    {
                        ObjectID       = item2["ObjectID"].ToString(),
                        ChildID        = item2["ChildID"].ToString(),
                        ParentObjectID = item2["ParentObjectID"].ToString()
                    };
                    list.Add(staff);
                    group.ChildList = list.ToArray();
                }

                OThinker.H3.Controllers.AppUtility.Engine.Organization.AddUnit("", group);
            }
        }