Esempio n. 1
0
        /// <summary>
        /// 已重载。调用Save时写日志,而调用Insert和Update时不写日志
        /// </summary>
        /// <returns></returns>
        public override int Save()
        {
            if (!String.IsNullOrEmpty(Url))
            {
                // 删除两端空白
                if (Url != Url.Trim())
                {
                    Url = Url.Trim();
                }
            }

            if (ID == 0)
            {
                WriteLog("添加", Name);
            }
            else
            {
                WriteLog("修改", Name);
            }

            int menuID = base.Save();

            RoleMenu.CheckNonePerssion(menuID);


            return(menuID);
        }
Esempio n. 2
0
        /// <summary>
        /// 删除RoleMenu中无效的RoleID和无效的MenuID
        /// </summary>
        public static void ClearRoleMenu()
        {
            // 统计所有RoleID和MenuID
            List <TEntity>     list1 = Meta.Cache.Entities;
            List <TMenuEntity> list2 = Menu <TMenuEntity> .Meta.Cache.Entities;

            StringBuilder sb = new StringBuilder();

            if (list1 != null && list1.Count > 0)
            {
                sb.Append("RoleID Not in(");
                for (int i = 0; i < list1.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(list1[i].ID);
                }
                sb.Append(")");
            }
            if (list2 != null && list2.Count > 0)
            {
                if (sb.Length > 0)
                {
                    sb.Append(" Or ");
                }

                sb.Append("MenuID Not in(");
                for (int i = 0; i < list2.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(list2[i].ID);
                }
                sb.Append(")");
            }
            if (sb.Length < 1)
            {
                return;
            }

            // 查询所有。之所以不是调用Delete删除,是为了引发RoleMenu里面的Delete写日志
            EntityList <TRoleMenuEntity> rms = RoleMenu <TRoleMenuEntity> .FindAll(sb.ToString(), null, null, 0, 0);

            if (rms == null || rms.Count < 1)
            {
                return;
            }

            rms.Delete();
        }
Esempio n. 3
0
        protected override void InitData()
        {
            base.InitData();

            ClearRoleMenu();

            // 如果角色菜单对应关系为空或者只有一个,则授权第一个角色访问所有菜单
            //if (RoleMenu<TRoleMenuEntity>.Meta.Count > 1) return;

            EntityList <TMenuEntity> ms = null;

            // 等一下菜单那边初始化
            for (int i = 0; i < 100; i++)
            {
                ms = Menu <TMenuEntity> .Meta.Cache.Entities;
                if (ms != null && ms.Count > 0)
                {
                    break;
                }

                Thread.Sleep(100);
            }
            if (ms == null || ms.Count < 1)
            {
                return;
            }

            if (XTrace.Debug)
            {
                XTrace.WriteLine("开始初始化{0}授权数据……", typeof(TEntity).Name);
            }

            Meta.BeginTrans();
            try
            {
                Int32 id = 1;
                EntityList <TEntity> rs = Meta.Cache.Entities;
                if (rs != null && rs.Count > 0)
                {
                    id = rs[0].ID;
                }

                // 授权访问所有菜单
                //EntityList<TMenuEntity> ms = Menu<TMenuEntity>.FindAll();
                if (ms != null && ms.Count > 0)
                {
                    EntityList <TRoleMenuEntity> rms = RoleMenu <TRoleMenuEntity> .FindAllByRoleID(id);

                    foreach (TMenuEntity item in ms)
                    {
                        // 是否已存在
                        if (rms != null && rms.Exists(RoleMenu <TRoleMenuEntity> ._.MenuID, item.ID))
                        {
                            continue;
                        }

                        //TRoleMenuEntity entity = new TRoleMenuEntity();
                        //entity.RoleID = id;
                        //entity.MenuID = item.ID;
                        TRoleMenuEntity entity = RoleMenu <TRoleMenuEntity> .Create(id, item.ID);

                        entity.Save();
                    }
                }

                Meta.Commit();
                if (XTrace.Debug)
                {
                    XTrace.WriteLine("完成初始化{0}授权数据!", typeof(TEntity).Name);
                }
            }
            catch { Meta.Rollback(); throw; }
        }