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); }
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("添加角色关联时出错!"); } } }