From afceafb00cd429d19f544a1854de1a3fc76d5200 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Mon, 30 Nov 2015 14:54:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=9B=A0=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=A4=9A=E5=AF=B9=E5=A4=9A=E6=98=A0=E5=B0=84=E9=80=A0=E6=88=90?= =?UTF-8?q?=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/ModuleManagerApp.cs | 66 ++++- OpenAuth.App/RoleManagerApp.cs | 13 +- OpenAuth.App/UserManagerApp.cs | 2 +- .../Controllers/ModuleManagerController.cs | 43 ++- OpenAuth.Mvc/OpenAuth.Mvc.csproj | 3 +- OpenAuth.Mvc/Views/ModuleManager/Add.cshtml | 4 +- ...Multi.cshtml => LookupMultiForUser.cshtml} | 244 +++++++++--------- OpenAuth.Mvc/Views/OrgManager/AddOrg.cshtml | 20 +- OpenAuth.Mvc/Views/RoleManager/Add.cshtml | 4 +- OpenAuth.Mvc/Views/RoleManager/Index.cshtml | 20 +- OpenAuth.Mvc/Views/UserManager/Add.cshtml | 4 +- OpenAuth.Mvc/Views/UserManager/Index.cshtml | 2 +- OpenAuth.Repository/RelevanceRepository.cs | 35 ++- 13 files changed, 268 insertions(+), 192 deletions(-) rename OpenAuth.Mvc/Views/ModuleManager/{LookupMulti.cshtml => LookupMultiForUser.cshtml} (94%) diff --git a/OpenAuth.App/ModuleManagerApp.cs b/OpenAuth.App/ModuleManagerApp.cs index 4f6cf25b..df19d344 100644 --- a/OpenAuth.App/ModuleManagerApp.cs +++ b/OpenAuth.App/ModuleManagerApp.cs @@ -1,10 +1,10 @@ +using Infrastructure; using OpenAuth.App.ViewModel; using OpenAuth.Domain; using OpenAuth.Domain.Interface; using System; using System.Collections.Generic; using System.Linq; -using Infrastructure; namespace OpenAuth.App { @@ -51,13 +51,7 @@ namespace OpenAuth.App /// public List LoadForTree() { - return _repository.Find(null).ToList(); - } - public List LoadForUser(int userId) - { - var moduleIds = _relevanceRepository.Find(u => u.FirstId == userId).Select(u => u.SecondId).ToList(); - if(!moduleIds.Any()) return null; - return _repository.Find(u => moduleIds.Contains(u.Id)).ToList(); + return _repository.Find(null).ToList(); } public List LoadForNav() @@ -114,12 +108,60 @@ namespace OpenAuth.App } } - public void AccessModules(int userId, int[] ids) + #region 用户/角色分配模块 + + /// + /// 加载特定用户的模块 + /// + /// The user unique identifier. + public List LoadForUser(int userId) { - _relevanceRepository.DeleteBy("UserModule",userId); - _relevanceRepository.AddRelevance("UserModule",ids.ToDictionary(u =>userId)); + var moduleIds = + _relevanceRepository.Find(u => u.FirstId == userId && u.Key == "UserModule") + .Select(u => u.SecondId) + .ToList(); + if (!moduleIds.Any()) return null; + 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)); + } + + /// + /// 加载特定角色的模块 + /// + /// 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 null; + 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)); + } + + #endregion 用户/角色分配模块 + #region 私有方法 //根据同一级中最大的语义ID @@ -166,7 +208,5 @@ namespace OpenAuth.App } #endregion 私有方法 - - } } \ No newline at end of file diff --git a/OpenAuth.App/RoleManagerApp.cs b/OpenAuth.App/RoleManagerApp.cs index 60373f4c..b9f212f9 100644 --- a/OpenAuth.App/RoleManagerApp.cs +++ b/OpenAuth.App/RoleManagerApp.cs @@ -4,7 +4,6 @@ using OpenAuth.Domain.Interface; using System; using System.Collections.Generic; using System.Linq; -using System.Web.Security; namespace OpenAuth.App { @@ -53,7 +52,6 @@ namespace OpenAuth.App total = _repository.GetRoleCntInOrgs(orgId); } - return new { total = total, @@ -77,7 +75,6 @@ namespace OpenAuth.App var role = _repository.FindSingle(u => u.Id == id); if (role == null) role = new Role(); return role; - } public void Delete(int id) @@ -96,10 +93,8 @@ namespace OpenAuth.App { _repository.Update(role); } - } - public List LoadWithUser(int userId) { var roleIds = _repository.Find(null).ToList(); @@ -108,9 +103,9 @@ namespace OpenAuth.App { RoleVM rolevm = role; rolevm.IsBelongUser = (_relevanceRepository.FindSingle(u => u.SecondId == role.Id - && u.FirstId == userId - && u.Key =="UserRole") - !=null); + && u.FirstId == userId + && u.Key == "UserRole") + != null); rolevms.Add(rolevm); } return rolevms; @@ -120,7 +115,7 @@ namespace OpenAuth.App { _relevanceRepository.DeleteBy("UserRole", userId); - _relevanceRepository.AddRelevance("UserRole",roleIds.ToDictionary(roleId => userId)); + _relevanceRepository.AddRelevance("UserRole", roleIds.ToLookup(roleId => userId)); } } } \ No newline at end of file diff --git a/OpenAuth.App/UserManagerApp.cs b/OpenAuth.App/UserManagerApp.cs index af4ef9a7..5f67b664 100644 --- a/OpenAuth.App/UserManagerApp.cs +++ b/OpenAuth.App/UserManagerApp.cs @@ -116,7 +116,7 @@ namespace OpenAuth.App int[] orgIds = view.OrganizationIds.Split(',').Select(id => int.Parse(id)).ToArray(); _relevanceRepository.DeleteBy("UserOrg", user.Id); - _relevanceRepository.AddRelevance("UserOrg", orgIds.ToDictionary(u =>user.Id)); + _relevanceRepository.AddRelevance("UserOrg", orgIds.ToLookup(u =>user.Id)); } } diff --git a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs index fd90e365..cc2f0bd1 100644 --- a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs +++ b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs @@ -24,12 +24,19 @@ namespace OpenAuth.Mvc.Controllers } //用于选择模块时使用 - public ActionResult LookUpMulti(int userId) + public ActionResult LookUpMultiForUser(int userId) { ViewBag.UserId = userId; return View(); } + //为角色分配模块 + public ActionResult LookupMultiForRole(int roleId) + { + ViewBag.RoleId = roleId; + return View(); + } + /// /// 加载模块下面的所有模块 /// @@ -87,12 +94,42 @@ namespace OpenAuth.Mvc.Controllers return JsonHelper.Instance.Serialize(orgs); } - public string AccessModule(int userId, string moduleIds) + public string LoadForRole(int roleId) + { + var orgs = _app.LoadForRole(roleId); + //添加根节点 + orgs.Add(new Module + { + Id = 0, + ParentId = -1, + Name = "已为角色分配的模块", + CascadeId = "0" + }); + return JsonHelper.Instance.Serialize(orgs); + } + + public string AssignModuleForRole(int roleId, string moduleIds) { try { var ids = moduleIds.Split(',').Select(id => int.Parse(id)).ToArray(); - _app.AccessModules(userId, ids); + _app.AssignModuleForRole(roleId, ids); + } + catch (Exception e) + { + BjuiResponse.message = e.Message; + BjuiResponse.statusCode = "300"; + } + + return JsonHelper.Instance.Serialize(BjuiResponse); + } + + public string AssignModuleForUser(int userId, string moduleIds) + { + try + { + var ids = moduleIds.Split(',').Select(id => int.Parse(id)).ToArray(); + _app.AssignModuleForUser(userId, ids); } catch (Exception e) { diff --git a/OpenAuth.Mvc/OpenAuth.Mvc.csproj b/OpenAuth.Mvc/OpenAuth.Mvc.csproj index 2cfd6bca..cd21d637 100644 --- a/OpenAuth.Mvc/OpenAuth.Mvc.csproj +++ b/OpenAuth.Mvc/OpenAuth.Mvc.csproj @@ -617,7 +617,8 @@ - + + diff --git a/OpenAuth.Mvc/Views/ModuleManager/Add.cshtml b/OpenAuth.Mvc/Views/ModuleManager/Add.cshtml index ab49ffed..b7b6d704 100644 --- a/OpenAuth.Mvc/Views/ModuleManager/Add.cshtml +++ b/OpenAuth.Mvc/Views/ModuleManager/Add.cshtml @@ -8,9 +8,7 @@
- - - +

* 添加

@Html.HiddenFor(m => m.Id) diff --git a/OpenAuth.Mvc/Views/ModuleManager/LookupMulti.cshtml b/OpenAuth.Mvc/Views/ModuleManager/LookupMultiForUser.cshtml similarity index 94% rename from OpenAuth.Mvc/Views/ModuleManager/LookupMulti.cshtml rename to OpenAuth.Mvc/Views/ModuleManager/LookupMultiForUser.cshtml index 2cc8117d..686e931d 100644 --- a/OpenAuth.Mvc/Views/ModuleManager/LookupMulti.cshtml +++ b/OpenAuth.Mvc/Views/ModuleManager/LookupMultiForUser.cshtml @@ -1,123 +1,123 @@ -@* - 选择多个模块ID,以ids的形式返回 -*@ - -@{ - ViewBag.Title = "title"; - Layout = null; -} -
- -
-
    -
    - -
    -
      -
      -
      - - - \ No newline at end of file diff --git a/OpenAuth.Mvc/Views/OrgManager/AddOrg.cshtml b/OpenAuth.Mvc/Views/OrgManager/AddOrg.cshtml index 985eff51..6dc097c2 100644 --- a/OpenAuth.Mvc/Views/OrgManager/AddOrg.cshtml +++ b/OpenAuth.Mvc/Views/OrgManager/AddOrg.cshtml @@ -1,5 +1,4 @@ - -@{ +@{ ViewBag.Title = "title"; Layout = null; } @@ -8,26 +7,21 @@ - - - - + - - + @@ -51,7 +44,6 @@ - + \ No newline at end of file diff --git a/OpenAuth.Mvc/Views/RoleManager/Add.cshtml b/OpenAuth.Mvc/Views/RoleManager/Add.cshtml index f95172df..46dce0cc 100644 --- a/OpenAuth.Mvc/Views/RoleManager/Add.cshtml +++ b/OpenAuth.Mvc/Views/RoleManager/Add.cshtml @@ -8,9 +8,7 @@

      * 添加

      + data-rule="required" size="20">
      - +
        -
        @@ -37,7 +31,6 @@ -
        - - - +

        * 添加

        @Html.HiddenFor(m => m.Id) diff --git a/OpenAuth.Mvc/Views/RoleManager/Index.cshtml b/OpenAuth.Mvc/Views/RoleManager/Index.cshtml index 50fd825a..b08f31eb 100644 --- a/OpenAuth.Mvc/Views/RoleManager/Index.cshtml +++ b/OpenAuth.Mvc/Views/RoleManager/Index.cshtml @@ -36,7 +36,8 @@ toolbarItem: 'refresh, |, del', toolbarCustom: '添加' + - '', + ''+ + '', columns: [ { name: 'Id', @@ -174,5 +175,22 @@ $('#@_gridId').datagrid('refresh'); // loadDataGrid(); } + + //用户模块授权按钮 + function openModuleAccess(obj) { + + var selected = getSelected(2); + if (selected == null) return; + + $(obj).dialog({ + id: 'accessRoleModule', + url: '/ModuleManager/LookupMultiForRole', + title: '为角色分配模块', + data: { + roleid: selected + } + }); + } + //@@ sourceURL=RoleManagerIndex.js diff --git a/OpenAuth.Mvc/Views/UserManager/Add.cshtml b/OpenAuth.Mvc/Views/UserManager/Add.cshtml index 6e049f24..d4ca5419 100644 --- a/OpenAuth.Mvc/Views/UserManager/Add.cshtml +++ b/OpenAuth.Mvc/Views/UserManager/Add.cshtml @@ -8,9 +8,7 @@ - - - +

        * 添加

        @Html.HiddenFor(m =>m.CreateTime) diff --git a/OpenAuth.Mvc/Views/UserManager/Index.cshtml b/OpenAuth.Mvc/Views/UserManager/Index.cshtml index 9de647da..a747375f 100644 --- a/OpenAuth.Mvc/Views/UserManager/Index.cshtml +++ b/OpenAuth.Mvc/Views/UserManager/Index.cshtml @@ -185,7 +185,7 @@ $(obj).dialog({ id: 'accessUserModule', - url: '/ModuleManager/LookupMulti', + url: '/ModuleManager/LookupMultiForUser', title: '为用户分配模块', data: { userId: selected diff --git a/OpenAuth.Repository/RelevanceRepository.cs b/OpenAuth.Repository/RelevanceRepository.cs index 79d7d622..334a7cc3 100644 --- a/OpenAuth.Repository/RelevanceRepository.cs +++ b/OpenAuth.Repository/RelevanceRepository.cs @@ -1,34 +1,33 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using OpenAuth.Domain; +using OpenAuth.Domain; using OpenAuth.Domain.Interface; +using System; +using System.Linq; namespace OpenAuth.Repository { - public class RelevanceRepository :BaseRepository, IRelevanceRepository + public class RelevanceRepository : BaseRepository, IRelevanceRepository { - - public void DeleteBy(string key,params int[] firstIds) + public void DeleteBy(string key, params int[] firstIds) { Delete(u => firstIds.Contains(u.FirstId) && u.Key == key); } - public void AddRelevance(string key, Dictionary ids) + public void AddRelevance(string key, ILookup idMaps) { - foreach (var roleid in ids) + foreach (var sameVals in idMaps) { - Add(new Relevance + foreach (var value in sameVals) { - Key = key, - FirstId = roleid.Key, - SecondId = roleid.Value, - OperateTime = DateTime.Now - }); + Add(new Relevance + { + Key = key, + FirstId = sameVals.Key, + SecondId = value, + OperateTime = DateTime.Now + }); + } } Save(); } } -} +} \ No newline at end of file