public void Move(int amid, bool Flag)
        {
            AdminModule oadminmodule = _repository.GetByCondition(new DirectSpecification <AdminModule>(oam => oam.AMID == amid));//旧数据

            if (oadminmodule == null)
            {
                throw new InvalidOperationException("未找到要排序的功能菜单"); //无数据
            }
            AdminModule adminmodule = null;                         //根据条件查找上/下条的数据

            if (Flag)                                               //true 上
            {
                //找上一条(时间刚好比当前数据时间小的数据)
                var adminModules = _repository.GetListByTopN(1, new DirectSpecification <AdminModule>(amd => amd.SortFlag < oadminmodule.SortFlag && amd.FID == oadminmodule.FID), x => x.SortFlag, true);
                if (adminModules.Count() > 0)
                {
                    adminmodule = adminModules.FirstOrDefault();
                }
            }
            else//flase 下
            {
                //找下一条 (时间刚好比当前时间大的数据)
                var adminModules = _repository.GetListByTopN(1, new DirectSpecification <AdminModule>(amd => amd.SortFlag > oadminmodule.SortFlag && amd.FID == oadminmodule.FID), x => x.SortFlag, false);
                if (adminModules.Count() > 0)
                {
                    adminmodule = adminModules.FirstOrDefault();
                }
            }
            string result = Flag == true ? "已经是第一条了" : "已经是最后一条了";

            if (adminmodule == null)
            {
                throw new InvalidOperationException(result);//未找到上/下的数据
            }
            DateTime tsf = oadminmodule.SortFlag;

            oadminmodule.SortFlag = adminmodule.SortFlag;
            adminmodule.SortFlag  = tsf;
            _repository.Move(oadminmodule);
            _repository.Move(adminmodule);
        }
Exemple #2
0
        public void DeleteModule(int amid)
        {
            AdminModule adminM = _repository.GetByCondition(new DirectSpecification <AdminModule>(adm => adm.AMID == amid));

            using (TransactionScope scope = new TransactionScope())
            {
                _adminModuleDomainService.Delete(adminM);
                base.unitOfWork.Commit();
                _adminLogService.Log("删除功能模块", "功能模块名:" + adminM.ModuleName + " || Form身份名称:" + adminM.FormRoleName + " || CSS样式:" + adminM.CSSStyle + " || 页面地址:" + adminM.PageUrl);
                scope.Complete();
            }
        }
        //实现添加角色关联
        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("添加角色关联时出错!");
                }
            }
        }