// *********************************************************************** // Assembly : OpenAuth.Domain // Author : yubaolee // Created : 05-27-2016 // // Last Modified By : yubaolee // Last Modified On : 05-27-2016 // Contact : Microsoft // File: ModuleEleManService.cs // *********************************************************************** using System.Collections.Generic; using System.Linq; using OpenAuth.Domain.Interface; namespace OpenAuth.Domain.Service { /// /// 领域服务 /// 模块菜单管理服务 /// public class ModuleEleManService { private readonly IUnitWork _unitWork; private readonly AuthoriseService _authoriseService; public ModuleEleManService(IUnitWork unitWork, AuthoriseService authoriseService) { _unitWork = unitWork; _authoriseService = authoriseService; } public void AddOrUpdate(ModuleElement model) { if (model.Id == 0) { _unitWork.Add(model); } else { _unitWork.Update(model); } _unitWork.Save(); } public IEnumerable LoadByModuleId(string loginuser, int id) { _authoriseService.LoadAuthControls(loginuser); if (_authoriseService.ModuleElements.Count == 0) //用户没有任何资源 { return new List(); } var modules = _authoriseService.ModuleElements.Where(u => u.ModuleId == id).OrderBy(u =>u.Sort); return modules; } /// /// 获取带有授权状态的菜单列表 /// /// 当前登录的操作人 /// 授权类型,当前有RoleElement/UserElement /// /// 当为RoleElement时,表示RoleId /// 当为UserElement时,表示UserId /// /// 模块ID public List LoadWithAccess(string username, string accessType, int firstId, int moduleId) { var listVms = new List(); _authoriseService.LoadAuthControls(username); if (_authoriseService.ModuleElements.Count == 0) //用户没有任何资源 { return listVms; } if (moduleId == 0) return listVms; string modulename = _authoriseService.Modules.SingleOrDefault(u => u.Id == moduleId).Name; foreach (var element in _authoriseService.ModuleElements.Where(u =>u.ModuleId ==moduleId)) { var accessed = _unitWork.FindSingle(u =>u.Key == accessType && u.FirstId == firstId && u.SecondId == element.Id); var vm = new { Id = element.Id, Name = element.Name, ModuleId = element.ModuleId, DomId = element.DomId, ModuleName = modulename, Accessed = accessed != null }; listVms.Add(vm); } return listVms; } public void Delete(ModuleElement[] objs) { var delIds = objs.Select(u => u.Id).ToList(); _unitWork.Delete(u =>delIds.Contains(u.Id)); } } }