// *********************************************************************** // 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; using System.Collections.Generic; using System.Linq; using OpenAuth.Domain.Interface; namespace OpenAuth.Domain.Service { /// /// 领域服务 /// 模块菜单管理服务 /// public class ModuleEleManService { private readonly IUnitWork _unitWork; private readonly AuthoriseFactory _factory; public ModuleEleManService(IUnitWork unitWork, AuthoriseFactory authoriseService) { _unitWork = unitWork; _factory = authoriseService; } public void AddOrUpdate(ModuleElement model) { if (model.Id == Guid.Empty) { _unitWork.Add(model); } else { _unitWork.Update(model); } _unitWork.Save(); } public IEnumerable LoadByModuleId(string loginuser, Guid id) { var service = _factory.Create(loginuser); if (!service.GetModuleElementsQuery().Any()) //用户没有任何资源 { return new List(); } var modules = service.GetModuleElementsQuery().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, Guid firstId, Guid moduleId) { var listVms = new List(); var service = _factory.Create(username); if (!service.GetModuleElementsQuery().Any()) //用户没有任何资源 { return listVms; } if (moduleId == Guid.Empty) return listVms; foreach (var element in service.GetModuleElementsQuery().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, Checked = accessed != null }; listVms.Add(vm); } return listVms; } public void Delete(Guid[] objs) { _unitWork.Delete(u =>objs.Contains(u.Id)); } } }