From 48db85f6864bf97a21b52b07af65989915bc2d10 Mon Sep 17 00:00:00 2001 From: yubao Date: Fri, 15 Dec 2017 00:03:06 +0800 Subject: [PATCH] ru --- CodeSmith/CSharp/Web/Application.cst | 153 ++++++------------ CodeSmith/CSharp/Web/Controller.cst | 109 ++++++------- CodeSmith/CSharp/Web/Index.cshtml.cst | 2 +- CodeSmith/CSharp/WebGenerate.cst | 7 - OpenAuth.App/RoleApp.cs | 72 +++++---- .../Controllers/RoleManagerController.cs | 22 ++- OpenAuth.Mvc/Views/RoleManager/Index.cshtml | 3 +- OpenAuth.Mvc/js/roles.js | 4 +- 8 files changed, 159 insertions(+), 213 deletions(-) diff --git a/CodeSmith/CSharp/Web/Application.cst b/CodeSmith/CSharp/Web/Application.cst index dbfea3a5..1963fec1 100644 --- a/CodeSmith/CSharp/Web/Application.cst +++ b/CodeSmith/CSharp/Web/Application.cst @@ -9,130 +9,77 @@ Description: Create a list of properties from a database table <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> - - -<%if(NeedViewModel){ %> -using OpenAuth.App.ViewModel; -<%} %> -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; using System; using System.Collections.Generic; using System.Linq; +using OpenAuth.App.Request; +using OpenAuth.App.Response; +using OpenAuth.App.SSO; +using OpenAuth.Repository.Domain; + namespace OpenAuth.App { - public class <%=ModuleName%>ManagerApp + public class <%=ModuleName%>App : BaseApp<<%=ModuleName%>> { - private I<%=ModuleName%>Repository _repository; - private IOrgRepository _orgRepository; - - public <%=ModuleName%>ManagerApp(I<%=ModuleName%>Repository repository, - IOrgRepository orgRepository) - { - _repository = repository; - _orgRepository = orgRepository; - } - - public int Get<%=GetModelName()%>CntInOrg(int orgId) - { - if (orgId == 0) - { - return _repository.Find(null).Count(); - } - else - { - return _repository.Get<%=GetModelName()%>CntInOrgs(GetSubOrgIds(orgId)); - } - } - - public List<<%=GetModelName()%>> LoadAll() - { - return _repository.Find(null).ToList(); - } + public RevelanceManagerApp ReleManagerApp { get; set; } /// - /// 加载一个节点下面的一个或全部<%=GetModelName()%>s + /// 加载列表 /// - public dynamic Load(int orgId, int pageindex, int pagesize) + public TableData Load(Query<%=ModuleName%>ListReq request) { - IEnumerable<<%=ModuleName%>> <%=ModuleName%>s; - int total = 0; - if (orgId == 0) - { - <%=ModuleName%>s = _repository.Load<%=ModuleName%>s(pageindex, pagesize); - total = _repository.GetCount(); - } - else - { - <%=ModuleName%>s = _repository.LoadInOrgs(pageindex, pagesize,GetSubOrgIds(orgId)); - total = _repository.Get<%=ModuleName%>CntInOrgs(orgId); - } - <%if(NeedViewModel){ %> - var <%=ModuleName%>views = new List<<%=ModuleName%>View>(); - foreach (var <%=ModuleName%> in <%=ModuleName%>s) - { - <%=ModuleName%>View uv = <%=ModuleName%>; - uv.Organizations = string.Join(",", _orgRepository.LoadBy<%=ModuleName%>(<%=ModuleName%>.Id).Select(u => u.Name).ToList()); - <%=ModuleName%>views.Add(uv); - } - <%} %> + var loginUser = AuthUtil.GetCurrentUser(); - return new + string cascadeId = ".0."; + if (!string.IsNullOrEmpty(request.orgId)) { - total = total, - list = <%=GetModelName()%>s, - pageCurrent = pageindex + var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId); + cascadeId = org.CascadeId; + } + + var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray(); + var roleIds = ReleManagerApp.Get(Define.ROLEORG, false, ids); + + var roles = UnitWork.Find<<%=ModuleName%>>(u => roleIds.Contains(u.Id)) + .OrderBy(u => u.Name) + .Skip((request.page - 1) * request.limit) + .Take(request.limit); + + var records = Repository.GetCount(u => roleIds.Contains(u.Id)); + + + var roleViews = new List<<%=ModuleName%>View>(); + foreach (var role in roles) + { + RoleView uv = role; + var orgs = LoadByRole(role.Id); + uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); + uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); + roleViews.Add(uv); + } + + return new TableData + { + count = records, + data = roleViews, }; } - /// - /// 获取当前节点的所有下级节点 - /// - private int[] GetSubOrgIds(int orgId) + public void Add(<%=ModuleName%> obj) { - var org = _orgRepository.FindSingle(u => u.Id == orgId); - var orgs = _orgRepository.Find(u => u.CascadeId.Contains(org.CascadeId)).Select(u => u.Id).ToArray(); - return orgs; + Repository.Add(obj); } - - public <%=GetModelName()%> Find(int id) + + public void Update(<%=ModuleName%> obj) { - var <%=ModuleName.ToLower()%> = _repository.FindSingle(u => u.Id == id); - if (<%=ModuleName.ToLower()%> == null) return new <%=GetModelName()%>(); - - return <%=ModuleName.ToLower() %>; - } - - public void Delete(int id) - { - _repository.Delete(id); - } - - public void AddOrUpdate(<%=GetModelName()%> model) - { - <%=ModuleName%> <%=ModuleName.ToLower()%> = new <%=ModuleName%>(); - model.CopyTo(<%=ModuleName.ToLower()%>); - - if (<%=ModuleName.ToLower()%>.Id == 0) + UnitWork.Update(u => u.Id == obj.Id, u => new User { - _repository.Add(<%=ModuleName.ToLower()%>); - } - else - { - _repository.Update(<%=ModuleName.ToLower()%>); - } - + Name = role.Name, + Status = role.Status + }); + } - } } \ No newline at end of file diff --git a/CodeSmith/CSharp/Web/Controller.cst b/CodeSmith/CSharp/Web/Controller.cst index ce38c749..9a86ec5e 100644 --- a/CodeSmith/CSharp/Web/Controller.cst +++ b/CodeSmith/CSharp/Web/Controller.cst @@ -5,106 +5,89 @@ Description: Create a list of properties from a database table --%> <%@ CodeTemplate Language="C#" Encoding="utf-8" TargetLanguage="C#" Debug="False" Description="控制器" %> <%@ Property Name="ModuleName" Type="String" Category="Context" Description="模块名称" %> -<%@ Property Name="NeedViewModel" Type="Boolean" Category="Context" Default="False" Description="是否需要ViewModel" %> <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> - using System; +using System.Web.Http; using System.Web.Mvc; using Infrastructure; using OpenAuth.App; -<%if(NeedViewModel){ %> -using OpenAuth.App.ViewModel; -<%} %> -using OpenAuth.Domain; +using OpenAuth.App.Request; +using OpenAuth.App.Response; +using OpenAuth.Mvc.Models; namespace OpenAuth.Mvc.Controllers { - public class <%=ModuleName%>ManagerController : BaseController + public class <%=ModuleName%>ManagerController : BaseController { - private <%=ModuleName%>ManagerApp _app; - - public <%=ModuleName%>ManagerController() - { - _app = AutofacExt.GetFromFac<<%=ModuleName%>ManagerApp>(); - } + public <%=ModuleName%>App App { get; set; } // // GET: /UserManager/ + [Authenticate] public ActionResult Index() { return View(); } - public ActionResult Add(int id = 0) - { - return View(_app.Find(id)); - } - - //添加或修改<%=ModuleName %> - [HttpPost] - public string Add(<%=GetModelName()%> model) + //添加或修改组织 + [System.Web.Mvc.HttpPost] + public string Add(<%=ModuleName%> obj) { try { - _app.AddOrUpdate(model); - + App.Add(obj); + } catch (Exception ex) { - BjuiResponse.statusCode = "300"; - BjuiResponse.message = ex.Message; + Result.Code = 500; + Result.Message = ex.Message; } - return JsonHelper.Instance.Serialize(BjuiResponse); + return JsonHelper.Instance.Serialize(Result); } - /// - /// 加载节点下面的所有<%=ModuleName %>s - /// - public string Load(int parentId, int pageCurrent = 1, int pageSize = 30) - { - return JsonHelper.Instance.Serialize(_app.Load(parentId, pageCurrent, pageSize)); - } - - public string LoadForTree() - { - var models = _app.LoadAll(); - //添加根节点 - models.Add(new <%=ModuleName %> - { - Id = 0, - ParentId = -1, - Name = "根结点", - CascadeId = "0" - }); - return JsonHelper.Instance.Serialize(models); - } - - public string Delete(int Id) + //添加或修改组织 + [System.Web.Mvc.HttpPost] + public string Update(<%=ModuleName%> obj) { try { - _app.Delete(Id); + App.Update(obj); + + } + catch (Exception ex) + { + Result.Code = 500; + Result.Message = ex.Message; + } + return JsonHelper.Instance.Serialize(Result); + } + + /// + /// 加载组织下面的所有用户 + /// + public string Load([FromUri]Query<%=ModuleName%>ListReq request) + { + return JsonHelper.Instance.Serialize(App.Load(request)); + } + + [System.Web.Mvc.HttpPost] + public string Delete(string[] ids) + { + try + { + App.Delete(ids); } catch (Exception e) { - BjuiResponse.statusCode = "300"; - BjuiResponse.message = e.Message; + Result.Code = 500; + Result.Message = e.Message; } - return JsonHelper.Instance.Serialize(BjuiResponse); + return JsonHelper.Instance.Serialize(Result); } - - } } \ No newline at end of file diff --git a/CodeSmith/CSharp/Web/Index.cshtml.cst b/CodeSmith/CSharp/Web/Index.cshtml.cst index 8b7fc5b6..be5a8d95 100644 --- a/CodeSmith/CSharp/Web/Index.cshtml.cst +++ b/CodeSmith/CSharp/Web/Index.cshtml.cst @@ -36,7 +36,7 @@ Description="连接的数据库" %> + lay-filter="list" lay-size="sm"> diff --git a/CodeSmith/CSharp/WebGenerate.cst b/CodeSmith/CSharp/WebGenerate.cst index 0467589b..a4166920 100644 --- a/CodeSmith/CSharp/WebGenerate.cst +++ b/CodeSmith/CSharp/WebGenerate.cst @@ -36,13 +36,6 @@ OnChanged="OnSourceDatabaseChanged"%> Description="代码生成路径" Editor="System.Windows.Forms.Design.FolderNameEditor, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %> -<%@ Property Name="NeedViewModel" - Type="Boolean" - Default="False" - Optional="True" - Description="是否需要ViewModel" %> - - <%@ Register Name="ApplicationGenerateClass" Template="Web\Application.cst" MergeProperties="False" %> diff --git a/OpenAuth.App/RoleApp.cs b/OpenAuth.App/RoleApp.cs index c7197475..7c472202 100644 --- a/OpenAuth.App/RoleApp.cs +++ b/OpenAuth.App/RoleApp.cs @@ -38,52 +38,23 @@ namespace OpenAuth.App var records = Repository.GetCount(u => roleIds.Contains(u.Id)); - var userviews = new List(); + var roleViews = new List(); foreach (var role in roles) { RoleView uv = role; var orgs = LoadByRole(role.Id); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); - userviews.Add(uv); + roleViews.Add(uv); } return new TableData { count = records, - data = userviews, + data = roleViews, }; } - public void AddOrUpdate(RoleView view) - { - if (string.IsNullOrEmpty(view.OrganizationIds)) - throw new Exception("请为用户分配机构"); - Role role = view; - if (string.IsNullOrEmpty(view.Id)) - { - if (UnitWork.IsExist(u => u.Account == view.Name)) - { - throw new Exception("用户账号已存在"); - } - role.CreateTime = DateTime.Now; - Repository.Add(role); - view.Id = role.Id; //要把保存后的ID存入view - } - else - { - UnitWork.Update(u => u.Id == view.Id, u => new User - { - Name = role.Name, - Status = role.Status - }); - } - string[] orgIds = view.OrganizationIds.Split(',').ToArray(); - - ReleManagerApp.DeleteBy(Define.ROLEORG, role.Id); - ReleManagerApp.AddRelevance(Define.ROLEORG, orgIds.ToLookup(u => role.Id)); - } - /// /// 加载角色的所有机构 /// @@ -97,5 +68,42 @@ namespace OpenAuth.App } + public void Add(RoleView obj) + { + if (string.IsNullOrEmpty(obj.OrganizationIds)) + throw new Exception("请为角色分配机构"); + Role role = obj; + role.CreateTime = DateTime.Now; + Repository.Add(role); + obj.Id = role.Id; //要把保存后的ID存入view + + UpdateRele(obj); + } + + public void Update(RoleView obj) + { + if (string.IsNullOrEmpty(obj.OrganizationIds)) + throw new Exception("请为角色分配机构"); + Role role = obj; + + UnitWork.Update(u => u.Id == obj.Id, u => new User + { + Name = role.Name, + Status = role.Status + }); + + UpdateRele(obj); + } + + /// + /// 更新相应的多对多关系 + /// + /// + private void UpdateRele(RoleView view) + { + string[] orgIds = view.OrganizationIds.Split(',').ToArray(); + ReleManagerApp.DeleteBy(Define.ROLEORG, view.Id); + ReleManagerApp.AddRelevance(Define.ROLEORG, orgIds.ToLookup(u => view.Id)); + } } } \ No newline at end of file diff --git a/OpenAuth.Mvc/Controllers/RoleManagerController.cs b/OpenAuth.Mvc/Controllers/RoleManagerController.cs index 97026f53..22ead988 100644 --- a/OpenAuth.Mvc/Controllers/RoleManagerController.cs +++ b/OpenAuth.Mvc/Controllers/RoleManagerController.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Web.Http; using System.Web.Mvc; using Infrastructure; @@ -24,11 +23,28 @@ namespace OpenAuth.Mvc.Controllers //添加或修改组织 [System.Web.Mvc.HttpPost] - public string AddOrUpdate(RoleView view) + public string Add(RoleView obj) { try { - App.AddOrUpdate(view); + App.Add(obj); + + } + catch (Exception ex) + { + Result.Code = 500; + Result.Message = ex.Message; + } + return JsonHelper.Instance.Serialize(Result); + } + + //添加或修改组织 + [System.Web.Mvc.HttpPost] + public string Update(RoleView obj) + { + try + { + App.Update(obj); } catch (Exception ex) diff --git a/OpenAuth.Mvc/Views/RoleManager/Index.cshtml b/OpenAuth.Mvc/Views/RoleManager/Index.cshtml index 6468469c..5a2b3894 100644 --- a/OpenAuth.Mvc/Views/RoleManager/Index.cshtml +++ b/OpenAuth.Mvc/Views/RoleManager/Index.cshtml @@ -15,8 +15,7 @@ - - + diff --git a/OpenAuth.Mvc/js/roles.js b/OpenAuth.Mvc/js/roles.js index c4f04d6e..078e9470 100644 --- a/OpenAuth.Mvc/js/roles.js +++ b/OpenAuth.Mvc/js/roles.js @@ -78,9 +78,9 @@ layui.config({ }, end: mainList }); - var url = "/RoleManager/AddOrUpdate"; + var url = "/RoleManager/Add"; if (update) { - url = "/RoleManager/AddOrUpdate"; //暂时和添加一个地址 + url = "/RoleManager/Update"; } //提交数据 form.on('submit(formSubmit)',
角色名称所属部门创建时间所属部门