Пример #1
0
        public IEnumerable <AdminModule> GetsysAdminModule(SystemAdmin admin)
        {
            var AMIDs = new List <int>();

            foreach (var role in admin.AdminRoles) //导航属性效率都比较低下,以后数据量大后修改为手写的Linq或sql语句,商家后台的一样 2012-7-20
            {
                foreach (var rm in role.AdminRole_Modules)
                {
                    AMIDs.Add(rm.AMID);
                }
            }

            var listAdm = _adminModuleRepository.GetMany(new DirectSpecification <AdminModule>(am => AMIDs.Contains(am.AMID) && am.IsEnable));

            var listResult = new List <AdminModule>();

            //排除多余数据
            foreach (var adm in listAdm)
            {
                if (!listResult.Contains(adm))
                {
                    listResult.Add(adm);
                }
            }
            listResult = listResult.OrderBy(x => x.SortFlag).ToList();

            return(listResult);
        }
Пример #2
0
        //实现添加角色关联
        public void AddList(string[] moduleids, int arid)
        {
            AdminRole_Module arm = null;
            int wgts             = 0;//权值逻辑与

            foreach (var mid in moduleids)
            {
                int         mmid = int.Parse(mid);
                AdminModule admd = _adminModuleRepository.GetByCondition(new DirectSpecification <AdminModule>(a => a.AMID == mmid));
                if (admd.FID == 0)//如果是顶级菜单
                {
                    IEnumerable <AdminModule> listf = _adminModuleRepository.GetMany(new DirectSpecification <AdminModule>(m => m.FID == admd.AMID));
                    if (listf.Count() == 0)//如果不存在子级菜单 抛异常
                    {
                        throw new InvalidOperationException("您选择的顶级功能菜单有不包含子级的数据,请取消那些项的选择!");
                    }
                }
                //读取当前功能id下的action 计算权值和
                List <AdminAction> listaction = _adminActionRepository.GetMany(new DirectSpecification <AdminAction>(aa => aa.AMID == mmid)).ToList();
                foreach (var mat in listaction)
                {
                    wgts |= (int)mat.Weight;
                }
                //添加一条关联数据
                try
                {
                    arm = new AdminRole_Module()
                    {
                        ARID = arid, AMID = int.Parse(mid), Weights = wgts
                    };
                    _repository.Add(arm);
                    wgts = 0;
                    arm  = null;
                }
                catch
                {
                    throw new InvalidOperationException("添加角色关联时出错!");
                }
            }
        }
Пример #3
0
 public string GetCurrRoleSecondModule(int arid, int firstid)
 {
     try
     {
         StringBuilder resulestr = new StringBuilder();
         //读取角色表中的功能表
         IEnumerable <AdminRole_Module> listarm = _adminR_MRepository.GetMany(new DirectSpecification <AdminRole_Module>(arm => arm.ARID == arid));
         //封装amid到list
         List <int> listint = new List <int>();
         foreach (var item in listarm)
         {
             listint.Add(item.AMID);
         }
         //读取FID=firstid的功能表数据(二级级菜单)
         IEnumerable <AdminModule> listam = _adminModuleRepository.GetMany(new DirectSpecification <AdminModule>(am => listint.Contains(am.AMID))).Where(am => am.FID == firstid);
         int cut = 0;
         //生成input type=radio 的标签
         foreach (var item in listam)
         {
             cut++;
             //得到当前ARID firstid 的权值
             resulestr.Append("<input type='radio' id='secondmd" + cut + "' name='secondModule' value='" + item.AMID + "' onclick='actionGetC(" + item.AMID + "," + arid + ")' /> <label for='secondmd" + cut + "'>" + item.ModuleName + "</label>");
             if (cut % 4 == 0)
             {
                 resulestr.Append("<br />");
             }
             else
             {
                 resulestr.Append(" ");
             }
         }
         return(resulestr.ToString());
     }
     catch
     {
         throw new InvalidOperationException("获取二级菜单时出错!");
     }
 }