diff --git a/OpenAuth.App/ModuleElementManagerApp.cs b/OpenAuth.App/ModuleElementManagerApp.cs index 08b3d419..8d6391be 100644 --- a/OpenAuth.App/ModuleElementManagerApp.cs +++ b/OpenAuth.App/ModuleElementManagerApp.cs @@ -14,46 +14,35 @@ using System.Collections.Generic; using System.Linq; +using System.Web; using Infrastructure; using OpenAuth.App.ViewModel; using OpenAuth.Domain; using OpenAuth.Domain.Interface; +using OpenAuth.Domain.Service; namespace OpenAuth.App { public class ModuleElementManagerApp { - private readonly IRepository _repository; - private IModuleRepository _moduleRepository; - private IRelevanceRepository _relevanceRepository; + private ModuleEleManService _moduleEleManService; - public ModuleElementManagerApp(IRepository repository, - IRelevanceRepository relevanceRepository, - IModuleRepository moduleRepository ) + public ModuleElementManagerApp(ModuleEleManService moduleEleManService) { - _repository = repository; - _moduleRepository = moduleRepository; - _relevanceRepository = relevanceRepository; + _moduleEleManService = moduleEleManService; } public void AddOrUpdate(ModuleElement model) { var newbtn = new ModuleElement(); model.CopyTo(newbtn); - if (model.Id == 0) - { - _repository.Add(newbtn); - } - else - { - _repository.Update(newbtn); - } + _moduleEleManService.AddOrUpdate(newbtn); } public IEnumerable LoadByModuleId(int id) { - var modules = _repository.Find(u => u.ModuleId == id).OrderBy(u =>u.Sort); - return modules; + string username = HttpContext.Current.User.Identity.Name; + return _moduleEleManService.LoadByModuleId(username, id); } /// @@ -65,56 +54,15 @@ namespace OpenAuth.App /// 当为UserElement时,表示UserId /// /// 模块ID - public List LoadWithAccess(string accessType, int firstId, int moduleId) + public List LoadWithAccess(string accessType, int firstId, int moduleId) { - //TODO:多个Repository使用的是不同的Context不能进行联表查询,要用UnitOfWork处理 - - var listVms = new List(); - if (moduleId == 0) return listVms; - string modulename = _moduleRepository.FindSingle(u => u.Id == moduleId).Name; - - foreach (var element in LoadByModuleId(moduleId)) - { - var accessed = _relevanceRepository.FindSingle(u =>u.Key == accessType - && u.FirstId == firstId && u.SecondId == element.Id); - ModuleElementVM vm = new ModuleElementVM - { - Id = element.Id, - Name = element.Name, - ModuleId = element.ModuleId, - DomId = element.DomId, - ModuleName = modulename, - Accessed = accessed != null - }; - listVms.Add(vm); - } - return listVms; + string username = HttpContext.Current.User.Identity.Name; + return _moduleEleManService.LoadWithAccess(username, accessType, firstId, moduleId); } public void Delete(ModuleElement[] objs) { - var delIds = objs.Select(u => u.Id).ToList(); - _repository.Delete(u =>delIds.Contains(u.Id)); - } - - public void AssignForRole(int roleId, int[] menuIds) - { - _relevanceRepository.AddRelevance("RoleElement", menuIds.ToLookup(u => roleId)); - } - - public void CancelForRole(int roleId, int[] ids) - { - _relevanceRepository.Delete(u => ids.Contains(u.SecondId) && u.Key == "RoleElement" && u.FirstId == roleId); - } - - public void AssignForUser(int userId, int[] ids) - { - _relevanceRepository.AddRelevance("UserElement", ids.ToLookup(u => userId)); - } - - public void CancelForUser(int userId, int[] ids) - { - _relevanceRepository.Delete(u => ids.Contains(u.SecondId) && u.Key == "UserElement" && u.FirstId == userId); + _moduleEleManService.Delete(objs); } } } diff --git a/OpenAuth.App/ModuleManagerApp.cs b/OpenAuth.App/ModuleManagerApp.cs index 419ae6d7..714ffff5 100644 --- a/OpenAuth.App/ModuleManagerApp.cs +++ b/OpenAuth.App/ModuleManagerApp.cs @@ -1,23 +1,18 @@ using Infrastructure; -using OpenAuth.App.ViewModel; using OpenAuth.Domain; -using OpenAuth.Domain.Interface; -using System; using System.Collections.Generic; -using System.Linq; +using System.Web; +using OpenAuth.Domain.Service; namespace OpenAuth.App { public class ModuleManagerApp { - private IModuleRepository _repository; - private IRelevanceRepository _relevanceRepository; + private ModuleManService _moduleManService; - public ModuleManagerApp(IModuleRepository repository, - IRelevanceRepository relevanceRepository) + public ModuleManagerApp(ModuleManService moduleManService) { - _repository = repository; - _relevanceRepository = relevanceRepository; + _moduleManService = moduleManService; } /// @@ -25,83 +20,20 @@ namespace OpenAuth.App /// public dynamic Load(int parentId, int pageindex, int pagesize) { - IEnumerable Modules; - int total = 0; - if (parentId == 0) - { - Modules = _repository.LoadModules(pageindex, pagesize); - total = _repository.GetCount(); - } - else - { - var ids = GetSubOrgIds(parentId); - Modules = _repository.LoadInOrgs(pageindex, pagesize, ids); - total = _repository.GetModuleCntInOrgs(ids); - } - - return new - { - total = total, - list = Modules, - pageCurrent = pageindex - }; - } - - /// - /// 为树型结构提供数据 - /// - public List LoadForTree() - { - return _repository.Find(null).ToList(); - } - - /// - /// 以组合的方式显示所有的模块信息 - /// - /// The parent unique identifier. - /// List{ModuleView}. - public List LoadByParent(int parentId) - { - var modules = new List(); - var roots = _repository.Find(u => u.ParentId == parentId); - foreach (var module in roots) - { - ModuleView mv = module; - mv.Childern = LoadByParent(module.Id); - modules.Add(mv); - } - return modules; - } - - public Module Find(int id) - { - var module = _repository.FindSingle(u => u.Id == id); - if (module == null) return new Module(); - - return module; + string loginuser = HttpContext.Current.User.Identity.Name; + return _moduleManService.Load(loginuser, parentId, pageindex, pagesize); } public void Delete(int id) { - var del = _repository.FindSingle(u => u.Id == id); - if (del == null) return; - - _repository.Delete(u => u.CascadeId.Contains(del.CascadeId)); + _moduleManService.Delete(id); } public void AddOrUpdate(Module vm) { Module model = new Module(); vm.CopyTo(model); //copy一次,防止成员为null的情况 - ChangeModuleCascade(model); - if (model.Id == 0) - { - _repository.Add(model); - } - else - { - _repository.Update(model); - } + _moduleManService.AddOrUpdate(model); } #region 用户/角色分配模块 @@ -113,34 +45,7 @@ namespace OpenAuth.App /// The user unique identifier. public List LoadForUser(int userId) { - //用户角色 - var userRoleIds = - _relevanceRepository.Find(u => u.FirstId == userId && u.Key == "UserRole").Select(u => u.SecondId).ToList(); - - //用户角色与自己分配到的模块ID - var moduleIds = - _relevanceRepository.Find( - u => - (u.FirstId == userId && u.Key == "UserModule") || - (u.Key == "RoleModule" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList(); - - //var moduleIds = - // _relevanceRepository.Find(u => u.FirstId == userId && u.Key == "UserModule") - // .Select(u => u.SecondId) - // .ToList(); - if (!moduleIds.Any()) return new List(); - return _repository.Find(u => moduleIds.Contains(u.Id)).ToList(); - } - - /// - /// 为特定的用户分配模块 - /// - /// The user unique identifier. - /// 模块ID - public void AssignModuleForUser(int userId, int[] ids) - { - _relevanceRepository.DeleteBy("UserModule", userId); - _relevanceRepository.AddRelevance("UserModule", ids.ToLookup(u => userId)); + return _moduleManService.LoadForUser(userId); } /// @@ -149,72 +54,10 @@ namespace OpenAuth.App /// The role unique identifier. public List LoadForRole(int roleId) { - var moduleIds = - _relevanceRepository.Find(u => u.FirstId == roleId && u.Key == "RoleModule") - .Select(u => u.SecondId) - .ToList(); - if (!moduleIds.Any()) return new List(); - return _repository.Find(u => moduleIds.Contains(u.Id)).ToList(); - } - - /// - /// 为特定的角色分配模块 - /// - /// The user unique identifier. - /// 模块ID - public void AssignModuleForRole(int roleId, int[] ids) - { - _relevanceRepository.DeleteBy("RoleModule", roleId); - _relevanceRepository.AddRelevance("RoleModule", ids.ToLookup(u => roleId)); + return _moduleManService.LoadForRole(roleId); } #endregion 用户/角色分配模块 - #region 私有方法 - - //根据同一级中最大的语义ID - - private int[] GetSubOrgIds(int parentId) - { - var parent = _repository.FindSingle(u => u.Id == parentId); - var orgs = _repository.Find(u => u.CascadeId.Contains(parent.CascadeId)).Select(u => u.Id).ToArray(); - return orgs; - } - - //修改对象的级联ID - private void ChangeModuleCascade(Module module) - { - string cascadeId; - int currentCascadeId = 1; //当前结点的级联节点最后一位 - var sameLevels = _repository.Find(o => o.ParentId == module.ParentId && o.Id != module.Id); - foreach (var obj in sameLevels) - { - int objCascadeId = int.Parse(obj.CascadeId.Split('.').Last()); - if (currentCascadeId <= objCascadeId) currentCascadeId = objCascadeId + 1; - } - - if (module.ParentId != 0) - { - var parentOrg = _repository.FindSingle(o => o.Id == module.ParentId); - if (parentOrg != null) - { - cascadeId = parentOrg.CascadeId + "." + currentCascadeId; - module.ParentName = parentOrg.Name; - } - else - { - throw new Exception("未能找到该组织的父节点信息"); - } - } - else - { - cascadeId = "0." + currentCascadeId; - module.ParentName = "根节点"; - } - - module.CascadeId = cascadeId; - } - - #endregion 私有方法 } } \ No newline at end of file diff --git a/OpenAuth.Domain/OpenAuth.Domain.csproj b/OpenAuth.Domain/OpenAuth.Domain.csproj index 5cb1fa01..787c8b53 100644 --- a/OpenAuth.Domain/OpenAuth.Domain.csproj +++ b/OpenAuth.Domain/OpenAuth.Domain.csproj @@ -65,6 +65,8 @@ + + diff --git a/OpenAuth.Mvc/Content/BJUI/themes/css/style.css b/OpenAuth.Mvc/Content/BJUI/themes/css/style.css index b8e4ad9d..28c47b2c 100644 --- a/OpenAuth.Mvc/Content/BJUI/themes/css/style.css +++ b/OpenAuth.Mvc/Content/BJUI/themes/css/style.css @@ -1,4 +1,4 @@ -@charset "utf-8"; +@charset "utf-8"; html, body, div, span, applet, object, iframe, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -341,6 +341,24 @@ td[align=right] input{text-align:right;} #bjui-taskbar > .taskbarRight:hover{cursor:pointer;} #bjui-taskbar > .taskbarLeft.disabled:hover, #bjui-taskbar > .taskbarRight.disabled:hover{cursor:default;} + +/*doc */ +.bjui-doc{margin:10px;} +.bjui-doc .page-header{margin-top:0; border-bottom-color:#CCC;} +.bjui-doc ul, ol{margin-left:22px; margin-top:0; margin-bottom:10px;} +.bjui-doc ul{list-style:disc;} +.bjui-doc ol{list-style:decimal;} +.bjui-doc p, +.bjui-doc li, +.bjui-doc code, +.bjui-doc blockquote *{line-height:1.7; font-size:14px;} +.bjui-doc blockquote.point{border-left-color:#FF6600;} +.bjui-doc blockquote {padding:5px 15px; border-top:1px #EEE solid; border-right:1px #EEE solid; border-bottom:1px #EEE solid; border-radius:5px;} +.bjui-doc code.h4{margin:10px 0; font-size:18px; font-weight:500; color:#c7254e;} +.bjui-doc .table{margin-bottom:15px;} +.bjui-doc td{line-height:1.7;} +.bjui-doc .syntaxhighlighter *{font-size:12px !important; line-height:1.5 !important;} +.bjui-doc .bjui-tablefixed .table{margin-bottom:0;} /* datagrid */ .bjui-datagrid{position:relative; overflow:hidden; border-width:1px; border-style:solid; border-color:#ddd; border-radius:5px;} .bjui-datagrid .datagrid-title{height:30px; line-height:30px; text-indent:5px; font-weight:bold; border-bottom:1px #ddd solid;} diff --git a/OpenAuth.Mvc/Controllers/HomeController.cs b/OpenAuth.Mvc/Controllers/HomeController.cs index e84adebf..a875bc90 100644 --- a/OpenAuth.Mvc/Controllers/HomeController.cs +++ b/OpenAuth.Mvc/Controllers/HomeController.cs @@ -16,11 +16,6 @@ namespace OpenAuth.Mvc.Controllers _app = AutofacExt.GetFromFac(); } - public string GetModules(int parentId = 0) - { - return JsonHelper.Instance.Serialize(_app.LoadByParent(parentId)); - } - public ActionResult Index() { var user = AutofacExt.GetFromFac().GetLoginUser(); diff --git a/OpenAuth.Mvc/Views/Home/Index.cshtml b/OpenAuth.Mvc/Views/Home/Index.cshtml index 2ffb81f0..f23c776e 100644 --- a/OpenAuth.Mvc/Views/Home/Index.cshtml +++ b/OpenAuth.Mvc/Views/Home/Index.cshtml @@ -149,7 +149,7 @@
  • 关于OpenAuth.Net
  • 官方博客
  • -
  • 友情链接
  • +
  • 友情链接
  • diff --git a/OpenAuth.Mvc/Views/Home/Main.cshtml b/OpenAuth.Mvc/Views/Home/Main.cshtml index c3c91810..536d38ab 100644 --- a/OpenAuth.Mvc/Views/Home/Main.cshtml +++ b/OpenAuth.Mvc/Views/Home/Main.cshtml @@ -1,35 +1,62 @@ - -@{ +@{ Layout = null; }
    -

    - 基于经典DDD架构的权限管理系统  +

    + 基于经典DDD架构的权限管理系统

    - -
    -
    QQ群:484498493
    - 官方博客: - http://www.cnblogs.com/yubaolee/ -
    -
    -
    - -
    -
    -
    +
    -

    项目最新动态>>

    +
    +

    + 社区信息>> +

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    + 本在线演示说明>> +

    +
    +
    +
      +
    • 为安全起见,关闭了所有修改请求,如想体验完整功能可搭建本地环境
    • +
    • admin/test两个账号只分配了部分模块/部门,系统完整模块/部门情况请直接在登录界面点击“以开发者账号登陆”
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    项目最新动态>>

    +
    @@ -37,4 +64,4 @@
    -
    +
    \ No newline at end of file