diff --git a/CodeSmith/Application.cst b/CodeSmith/Application.cst index 0ae0fbb7..c2636ff5 100644 --- a/CodeSmith/Application.cst +++ b/CodeSmith/Application.cst @@ -53,9 +53,14 @@ namespace OpenAuth.App return _repository.Get<%=GetModelName()%>CntInOrgs(GetSubOrgIds(orgId)); } } + + public List<<%=GetModelName()%>> LoadAll() + { + return _repository.Find(null).ToList(); + } /// - /// 加载一个部门及子部门全部<%=GetModelName()%>s + /// 加载一个节点下面的一个或全部<%=GetModelName()%>s /// public dynamic Load(int orgId, int pageindex, int pagesize) { @@ -90,7 +95,7 @@ namespace OpenAuth.App } /// - /// 获取当前组织的所有下级组织 + /// 获取当前节点的所有下级节点 /// private int[] GetSubOrgIds(int orgId) { @@ -114,7 +119,9 @@ namespace OpenAuth.App public void AddOrUpdate(<%=GetModelName()%> model) { - <%=ModuleName%> <%=ModuleName.ToLower()%> = model; + <%=ModuleName%> <%=ModuleName.ToLower()%> = new <%=ModuleName%>(); + model.CopyTo(<%=ModuleName.ToLower()%>); + if (<%=ModuleName.ToLower()%>.Id == 0) { _repository.Add(<%=ModuleName.ToLower()%>); diff --git a/CodeSmith/Controller.cst b/CodeSmith/Controller.cst index b8a51bd5..ce86088b 100644 --- a/CodeSmith/Controller.cst +++ b/CodeSmith/Controller.cst @@ -35,7 +35,7 @@ namespace OpenAuth.Mvc.Controllers public <%=ModuleName%>ManagerController() { - _app = (<%=ModuleName%>ManagerApp)DependencyResolver.Current.GetService(typeof(<%=ModuleName%>ManagerApp)); + _app = AutofacExt.GetFromFac<<%=ModuleName%>ManagerApp>(); } // diff --git a/Infrastructure/ObjectHelper.cs b/Infrastructure/ObjectHelper.cs index 5f038c3b..ce708af6 100644 --- a/Infrastructure/ObjectHelper.cs +++ b/Infrastructure/ObjectHelper.cs @@ -9,7 +9,9 @@ // // Copyright (c) . All rights reserved. // -// 对象COPY/初始化帮助 +// +//对象COPY/初始化帮助,通常是防止从视图中传过来的对象属性为空,这其赋初始值 +// // *********************************************************************** using System; diff --git a/OpenAuth.App/CategoryManagerApp.cs b/OpenAuth.App/CategoryManagerApp.cs index 3cb1b1f1..32e102c1 100644 --- a/OpenAuth.App/CategoryManagerApp.cs +++ b/OpenAuth.App/CategoryManagerApp.cs @@ -1,9 +1,9 @@ - +using System; using OpenAuth.Domain; using OpenAuth.Domain.Interface; -using System; using System.Collections.Generic; using System.Linq; +using Infrastructure; namespace OpenAuth.App { @@ -31,6 +31,11 @@ namespace OpenAuth.App } } + public List LoadAll() + { + return _repository.Find(null).ToList(); + } + /// /// 加载一个部门及子部门全部Categorys /// @@ -45,11 +50,11 @@ namespace OpenAuth.App } else { - Categorys = _repository.LoadInOrgs(pageindex, pagesize,GetSubOrgIds(orgId)); + Categorys = _repository.LoadInOrgs(pageindex, pagesize, GetSubOrgIds(orgId)); total = _repository.GetCategoryCntInOrgs(orgId); } - return new + return new { total = total, list = Categorys, @@ -82,18 +87,53 @@ namespace OpenAuth.App public void AddOrUpdate(Category model) { - Category category = model; + Category category = new Category(); + model.CopyTo(category); if (category.Id == 0) { + ChangeModuleCascade(category); _repository.Add(category); } else { _repository.Update(category); } - } - + #region 私有方法 + + //修改对象的级联ID,生成类似XXX.XXX.X.XX + private void ChangeModuleCascade(Category org) + { + string cascadeId; + int currentCascadeId = 1; //当前结点的级联节点最后一位 + var sameLevels = _repository.Find(o => o.ParentId == org.ParentId && o.Id != org.Id); + foreach (var obj in sameLevels) + { + int objCascadeId = int.Parse(obj.CascadeId.Split('.').Last()); + if (currentCascadeId <= objCascadeId) currentCascadeId = objCascadeId + 1; + } + + if (org.ParentId != 0) + { + var parentOrg = _repository.FindSingle(o => o.Id == org.ParentId); + if (parentOrg != null) + { + cascadeId = parentOrg.CascadeId + "." + currentCascadeId; + } + else + { + throw new Exception("未能找到该组织的父节点信息"); + } + } + else + { + cascadeId = "0." + currentCascadeId; + } + + org.CascadeId = cascadeId; + } + + #endregion 私有方法 } } \ No newline at end of file diff --git a/OpenAuth.App/ModuleElementManagerApp.cs b/OpenAuth.App/ModuleElementManagerApp.cs index 1c4e4820..bea1ff3f 100644 --- a/OpenAuth.App/ModuleElementManagerApp.cs +++ b/OpenAuth.App/ModuleElementManagerApp.cs @@ -38,6 +38,8 @@ namespace OpenAuth.App public void AddOrUpdate(ModuleElement model) { + var newbtn = new ModuleElement(); + model.CopyTo(newbtn); if (model.Id == 0) { _repository.Add(model); diff --git a/OpenAuth.Mvc/AutofacExt.cs b/OpenAuth.Mvc/AutofacExt.cs index 0b74e57d..b018aa6f 100644 --- a/OpenAuth.Mvc/AutofacExt.cs +++ b/OpenAuth.Mvc/AutofacExt.cs @@ -40,6 +40,7 @@ namespace OpenAuth.Mvc builder.RegisterType(); builder.RegisterType(); builder.RegisterType(); + builder.RegisterType(); @@ -63,5 +64,14 @@ namespace OpenAuth.Mvc var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } + + /// + /// ȡ + /// + /// + public static T GetFromFac() + { + return (T)DependencyResolver.Current.GetService(typeof(T)); + } } } \ No newline at end of file diff --git a/OpenAuth.Mvc/Controllers/CategoryManagerController.cs b/OpenAuth.Mvc/Controllers/CategoryManagerController.cs index f52fffed..7b1f2047 100644 --- a/OpenAuth.Mvc/Controllers/CategoryManagerController.cs +++ b/OpenAuth.Mvc/Controllers/CategoryManagerController.cs @@ -13,7 +13,7 @@ namespace OpenAuth.Mvc.Controllers public CategoryManagerController() { - _app = (CategoryManagerApp)DependencyResolver.Current.GetService(typeof(CategoryManagerApp)); + _app = AutofacExt.GetFromFac(); } // @@ -23,6 +23,28 @@ namespace OpenAuth.Mvc.Controllers return View(); } + /// + /// 加载组织下面的所有用户 + /// + public string Load(int orgId, int pageCurrent = 1, int pageSize = 30) + { + return JsonHelper.Instance.Serialize(_app.Load(orgId, pageCurrent, pageSize)); + } + + public string LoadForTree() + { + var models = _app.LoadAll(); + //添加根节点 + models.Add(new Category + { + Id = 0, + ParentId = -1, + Name = "根结点", + CascadeId = "0" + }); + return JsonHelper.Instance.Serialize(models); + } + public ActionResult Add(int id = 0) { return View(_app.Find(id)); @@ -45,14 +67,6 @@ namespace OpenAuth.Mvc.Controllers return JsonHelper.Instance.Serialize(BjuiResponse); } - /// - /// 加载组织下面的所有用户 - /// - public string Load(int orgId, int pageCurrent = 1, int pageSize = 30) - { - return JsonHelper.Instance.Serialize(_app.Load(orgId, pageCurrent, pageSize)); - } - public string Delete(int Id) { try diff --git a/OpenAuth.Mvc/Controllers/HomeController.cs b/OpenAuth.Mvc/Controllers/HomeController.cs index 32dd00ec..d77a8d3c 100644 --- a/OpenAuth.Mvc/Controllers/HomeController.cs +++ b/OpenAuth.Mvc/Controllers/HomeController.cs @@ -11,8 +11,8 @@ namespace OpenAuth.Mvc.Controllers private ModuleManagerApp _app; public HomeController() - { - _app = (ModuleManagerApp)DependencyResolver.Current.GetService(typeof(ModuleManagerApp)); + { + _app = AutofacExt.GetFromFac(); } public string GetModules(int parentId = 0) diff --git a/OpenAuth.Mvc/Controllers/LoginController.cs b/OpenAuth.Mvc/Controllers/LoginController.cs index 19a3177f..afe96676 100644 --- a/OpenAuth.Mvc/Controllers/LoginController.cs +++ b/OpenAuth.Mvc/Controllers/LoginController.cs @@ -14,7 +14,7 @@ namespace OpenAuth.Mvc.Controllers public LoginController() { - _app = (LoginApp)DependencyResolver.Current.GetService(typeof(LoginApp)); + _app = AutofacExt.GetFromFac(); } // GET: Login public ActionResult Index() diff --git a/OpenAuth.Mvc/Controllers/ModuleElementManagerController.cs b/OpenAuth.Mvc/Controllers/ModuleElementManagerController.cs index e67b1470..de08884c 100644 --- a/OpenAuth.Mvc/Controllers/ModuleElementManagerController.cs +++ b/OpenAuth.Mvc/Controllers/ModuleElementManagerController.cs @@ -32,7 +32,7 @@ namespace OpenAuth.Mvc.Controllers public ModuleElementManagerController() { - _app = (ModuleElementManagerApp) DependencyResolver.Current.GetService(typeof (ModuleElementManagerApp)); + _app = AutofacExt.GetFromFac(); } public ActionResult Index(int id = 0) @@ -46,9 +46,7 @@ namespace OpenAuth.Mvc.Controllers { try { - var newbtn = new ModuleElement(); - button.CopyTo(newbtn); - _app.AddOrUpdate(newbtn); + _app.AddOrUpdate(button); } catch (DbEntityValidationException e) { diff --git a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs index 9715cadf..1b389aad 100644 --- a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs +++ b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs @@ -15,7 +15,7 @@ namespace OpenAuth.Mvc.Controllers public ModuleManagerController() { - _app = (ModuleManagerApp)DependencyResolver.Current.GetService(typeof(ModuleManagerApp)); + _app = AutofacExt.GetFromFac(); } // diff --git a/OpenAuth.Mvc/Controllers/OrgManagerController.cs b/OpenAuth.Mvc/Controllers/OrgManagerController.cs index 8201c7ac..3e05bb26 100644 --- a/OpenAuth.Mvc/Controllers/OrgManagerController.cs +++ b/OpenAuth.Mvc/Controllers/OrgManagerController.cs @@ -13,7 +13,7 @@ namespace OpenAuth.Mvc.Controllers public OrgManagerController() { - _orgApp = (OrgManagerApp)DependencyResolver.Current.GetService(typeof(OrgManagerApp)); + _orgApp = AutofacExt.GetFromFac(); } // diff --git a/OpenAuth.Mvc/Controllers/RoleManagerController.cs b/OpenAuth.Mvc/Controllers/RoleManagerController.cs index 79218a86..ab8fbabb 100644 --- a/OpenAuth.Mvc/Controllers/RoleManagerController.cs +++ b/OpenAuth.Mvc/Controllers/RoleManagerController.cs @@ -13,7 +13,7 @@ namespace OpenAuth.Mvc.Controllers public RoleManagerController() { - _app = (RoleManagerApp)DependencyResolver.Current.GetService(typeof(RoleManagerApp)); + _app = AutofacExt.GetFromFac(); } // diff --git a/OpenAuth.Mvc/Controllers/UserManagerController.cs b/OpenAuth.Mvc/Controllers/UserManagerController.cs index be88fbf8..6a6023e7 100644 --- a/OpenAuth.Mvc/Controllers/UserManagerController.cs +++ b/OpenAuth.Mvc/Controllers/UserManagerController.cs @@ -13,7 +13,7 @@ namespace OpenAuth.Mvc.Controllers public UserManagerController() { - _app = (UserManagerApp)DependencyResolver.Current.GetService(typeof(UserManagerApp)); + _app = AutofacExt.GetFromFac(); } // diff --git a/OpenAuth.Mvc/Views/CategoryManager/Add.cshtml b/OpenAuth.Mvc/Views/CategoryManager/Add.cshtml index 725bf3fb..9e12e6bf 100644 --- a/OpenAuth.Mvc/Views/CategoryManager/Add.cshtml +++ b/OpenAuth.Mvc/Views/CategoryManager/Add.cshtml @@ -1,4 +1,4 @@ -@model OpenAuth.Domain.Category +@model OpenAuth.Domain.Category @{ ViewBag.Title = "Category编辑界面"; Layout = null; @@ -8,67 +8,136 @@
- + + + + + - - - - - - - - + + + - - + + - - + + @if (Model.Id == 0) //添加 + { + + + + + } + else //编辑 + { + + + + } + + @* - - - - - + + - + *@
+ @Html.HiddenFor(m => m.Id) + @Html.HiddenFor(m => m.ParentId) +
- @Html.HiddenFor(m =>m.Id) -
- - -
- +
- - - -
    - + +
    - - + +
    + + +
      +
      + + +
      - - -
      - +
      - +
      @@ -78,66 +147,4 @@
    • - - - \ No newline at end of file + \ No newline at end of file diff --git a/OpenAuth.Mvc/Views/CategoryManager/Index.cshtml b/OpenAuth.Mvc/Views/CategoryManager/Index.cshtml index 45ae8199..7c3d652b 100644 --- a/OpenAuth.Mvc/Views/CategoryManager/Index.cshtml +++ b/OpenAuth.Mvc/Views/CategoryManager/Index.cshtml @@ -118,7 +118,7 @@ }, callback: {onClick: zTreeOnClick} }; - $.getJSON('CategoryManager/LoadModuleWithRoot', function (json) { + $.getJSON('CategoryManager/LoadForTree', function (json) { var zTreeObj = $.fn.zTree.init($('#@_treeId'), setting, json); zTreeObj.expandAll(true); }); diff --git a/OpenAuth.Mvc/Web.config b/OpenAuth.Mvc/Web.config index b16bd95b..75da5de8 100644 --- a/OpenAuth.Mvc/Web.config +++ b/OpenAuth.Mvc/Web.config @@ -47,6 +47,7 @@ service="OpenAuth.Domain.Interface.IRoleRepository,OpenAuth.Domain" /> + diff --git a/建表&初始化数据.sql b/建表&初始化数据.sql index a1e827c7..8dc0777c 100644 Binary files a/建表&初始化数据.sql and b/建表&初始化数据.sql differ