diff --git a/OpenAuth.App/OpenAuth.App.csproj b/OpenAuth.App/OpenAuth.App.csproj
index 0e0bc6cd..ca406d2f 100644
--- a/OpenAuth.App/OpenAuth.App.csproj
+++ b/OpenAuth.App/OpenAuth.App.csproj
@@ -57,7 +57,6 @@
-
diff --git a/OpenAuth.App/ResourceManagerApp.cs b/OpenAuth.App/ResourceManagerApp.cs
index 4668caa5..e01123b0 100644
--- a/OpenAuth.App/ResourceManagerApp.cs
+++ b/OpenAuth.App/ResourceManagerApp.cs
@@ -6,103 +6,49 @@ using System.Collections.Generic;
using System.Linq;
using Infrastructure;
using OpenAuth.App.ViewModel;
+using OpenAuth.Domain.Service;
namespace OpenAuth.App
{
public class ResourceManagerApp
{
- private IResourceRepository _repository;
- private readonly ICategoryRepository _categoryRepository;
- private IRelevanceRepository _relevanceRepository;
+ private ResManagerService _resManagerService;
- public ResourceManagerApp(IResourceRepository repository,
- ICategoryRepository categoryRepository,
- IRelevanceRepository relevanceRepository)
+ public ResourceManagerApp(ResManagerService resManagerService)
{
- _repository = repository;
- _categoryRepository = categoryRepository;
- _relevanceRepository = relevanceRepository;
+ _resManagerService = resManagerService;
}
public int GetResourceCntInOrg(int orgId)
{
- if (orgId == 0)
- {
- return _repository.Find(null).Count();
- }
- else
- {
- return _repository.GetResourceCntInOrgs(GetSubOrgIds(orgId));
- }
+ return _resManagerService.GetResourceCntInOrg(orgId);
}
public List LoadAll()
{
- return _repository.Find(null).ToList();
+ return _resManagerService.LoadAll();
}
///
/// 加载一个节点下面的一个或全部Resources
///
- public dynamic Load(int categoryId, int pageindex, int pagesize)
+ public dynamic Load(string username, int categoryId, int pageindex, int pagesize)
{
- IEnumerable Resources;
- int total = 0;
- if (categoryId == 0)
- {
- Resources = _repository.LoadResources(pageindex, pagesize);
- total = _repository.GetCount();
- }
- else
- {
- Resources = _repository.LoadInOrgs(pageindex, pagesize,GetSubOrgIds(categoryId));
- total = _repository.GetResourceCntInOrgs(categoryId);
- }
-
- return new
- {
- total = total,
- list = Resources,
- pageCurrent = pageindex
- };
+ return _resManagerService.Load(username, categoryId, pageindex, pagesize);
}
- ///
- /// 获取当前节点的所有下级节点
- ///
- private int[] GetSubOrgIds(int orgId)
- {
- var org = _categoryRepository.FindSingle(u => u.Id == orgId);
- var orgs = _categoryRepository.Find(u => u.CascadeId.Contains(org.CascadeId)).Select(u => u.Id).ToArray();
- return orgs;
- }
- public Resource Find(int id)
- {
- var resource = _repository.FindSingle(u => u.Id == id);
- if (resource == null) return new Resource();
-
- return resource;
- }
public void Delete(int id)
{
- _repository.Delete(id);
+ _resManagerService.Delete(id);
}
public void AddOrUpdate(Resource model)
{
Resource resource = new Resource();
model.CopyTo(resource);
-
- if (resource.Id == 0)
- {
- _repository.Add(resource);
- }
- else
- {
- _repository.Update(resource);
- }
+ _resManagerService.AddOrUpdate(resource);
}
@@ -115,26 +61,9 @@ namespace OpenAuth.App
/// 当为UserResource时,表示UserId
///
/// 分类ID
- public List LoadWithAccess(string accessType, int firstId, int cId)
+ public List LoadWithAccess(string username, string accessType, int firstId, int cId)
{
- var listVms = new List();
- // if (cId == 0) return listVms;
-
- foreach (var element in _repository.LoadInOrgs(cId))
- {
- var accessed = _relevanceRepository.FindSingle(u => u.Key == accessType
- && u.FirstId == firstId && u.SecondId == element.Id);
- listVms.Add(new ResourceVM
- {
- Id = element.Id,
- Name = element.Name,
- IsBelongUser = accessed != null,
- Description = element.Description,
- Key = element.Key,
- Status = element.Status
- });
- }
- return listVms;
+ return _resManagerService.LoadWithAccess(username, accessType, firstId, cId);
}
}
diff --git a/OpenAuth.App/RoleManagerApp.cs b/OpenAuth.App/RoleManagerApp.cs
index 6484b69c..21c72acf 100644
--- a/OpenAuth.App/RoleManagerApp.cs
+++ b/OpenAuth.App/RoleManagerApp.cs
@@ -98,7 +98,8 @@ namespace OpenAuth.App
public List LoadForOrgAndUser(int orgId, int userId)
{
- var roleIds = _repository.Find(u => orgId == 0 || u.OrgId == orgId).ToList();
+ var allorgs = GetSubOrgIds(orgId);
+ var roleIds = _repository.Find(u => orgId == 0 || allorgs.Contains(u.OrgId)).ToList();
var rolevms = new List();
foreach (var role in roleIds)
{
diff --git a/OpenAuth.App/ViewModel/ResourceVM.cs b/OpenAuth.App/ViewModel/ResourceVM.cs
deleted file mode 100644
index d5b36832..00000000
--- a/OpenAuth.App/ViewModel/ResourceVM.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace OpenAuth.App.ViewModel
-{
- public class ResourceVM
- {
- ///
- /// 资源表ID
- ///
- ///
- public int Id { get; set; }
-
-
- ///
- ///
- ///
- ///
- public string Key { get; set; }
-
- ///
- /// 组织名称
- ///
- ///
- public string Name { get; set; }
-
- ///
- /// 资源分类标识
- ///
- ///
- public int Status { get; set; }
-
-
- ///
- /// 描述
- ///
- ///
- public string Description { get; set; }
-
- public bool IsBelongUser { get; set; }
- }
-}
\ No newline at end of file
diff --git a/OpenAuth.Domain/OpenAuth.Domain.csproj b/OpenAuth.Domain/OpenAuth.Domain.csproj
index 4c837888..5cb1fa01 100644
--- a/OpenAuth.Domain/OpenAuth.Domain.csproj
+++ b/OpenAuth.Domain/OpenAuth.Domain.csproj
@@ -65,6 +65,7 @@
+
diff --git a/OpenAuth.Domain/Service/ResManagerService.cs b/OpenAuth.Domain/Service/ResManagerService.cs
new file mode 100644
index 00000000..c55fd69b
--- /dev/null
+++ b/OpenAuth.Domain/Service/ResManagerService.cs
@@ -0,0 +1,152 @@
+using System.Collections.Generic;
+using System.Linq;
+using OpenAuth.Domain.Interface;
+
+namespace OpenAuth.Domain.Service
+{
+ ///
+ /// 领域服务
+ /// 资源管理领域
+ ///
+ public class ResManagerService
+ {
+ private IResourceRepository _repository;
+ private readonly ICategoryRepository _categoryRepository;
+ private IRelevanceRepository _relevanceRepository;
+ private AuthoriseService _authoriseService;
+
+ public ResManagerService(IResourceRepository repository,
+ ICategoryRepository categoryRepository,
+ IRelevanceRepository relevanceRepository,
+ AuthoriseService authoriseService)
+ {
+ _repository = repository;
+ _categoryRepository = categoryRepository;
+ _relevanceRepository = relevanceRepository;
+ _authoriseService = authoriseService;
+ }
+
+ public int GetResourceCntInOrg(int orgId)
+ {
+ if (orgId == 0)
+ {
+ return _repository.Find(null).Count();
+ }
+ else
+ {
+ return _repository.GetResourceCntInOrgs(GetSubOrgIds(orgId));
+ }
+ }
+
+ public List LoadAll()
+ {
+ return _repository.Find(null).ToList();
+ }
+
+ ///
+ /// 加载用户一个节点下面的一个或全部Resources
+ ///
+ public dynamic Load(string username, int categoryId, int pageindex, int pagesize)
+ {
+ _authoriseService.GetUserAccessed(username);
+ if (_authoriseService.Resources.Count == 0) //用户没有任何资源
+ {
+ return new
+ {
+ total = 0,
+ pageCurrent = pageindex
+ };
+ }
+ var subIds = GetSubOrgIds(categoryId);
+ var query = _authoriseService.Resources.Where(u => categoryId == 0 || subIds.Contains(u.CategoryId));
+ var Resources = query.Skip((pageindex - 1) * pagesize).Take(pagesize);
+ int total = query.Count();
+
+ return new
+ {
+ total = total,
+ list = Resources,
+ pageCurrent = pageindex
+ };
+ }
+
+ ///
+ /// 获取当前节点的所有下级节点
+ ///
+ private int[] GetSubOrgIds(int orgId)
+ {
+ if (orgId == 0)
+ {
+ return _categoryRepository.Find(null).Select(u => u.Id).ToArray();
+ }
+ var org = _categoryRepository.FindSingle(u => u.Id == orgId);
+ var orgs = _categoryRepository.Find(u => u.CascadeId.Contains(org.CascadeId)).Select(u => u.Id).ToArray();
+ return orgs;
+ }
+
+ public Resource Find(int id)
+ {
+ var resource = _repository.FindSingle(u => u.Id == id);
+ if (resource == null) return new Resource();
+
+ return resource;
+ }
+
+ public void Delete(int id)
+ {
+ _repository.Delete(id);
+ }
+
+ public void AddOrUpdate(Resource resource)
+ {
+ if (resource.Id == 0)
+ {
+ _repository.Add(resource);
+ }
+ else
+ {
+ _repository.Update(resource);
+ }
+
+ }
+
+ ///
+ /// 获取带有授权状态的菜单列表
+ ///
+ /// 授权类型,当前有RoleResource/UserResource
+ ///
+ /// 当为RoleResource时,表示RoleId
+ /// 当为UserResource时,表示UserId
+ ///
+ /// 分类ID
+ public List LoadWithAccess(string username, string accessType, int firstId, int cId)
+ {
+ var listVms = new List();
+ _authoriseService.GetUserAccessed(username);
+ if (_authoriseService.Resources.Count == 0) //用户没有任何资源
+ {
+ return listVms;
+ }
+
+ var subIds = GetSubOrgIds(cId);
+ var query = _authoriseService.Resources.Where(u => cId == 0 || subIds.Contains(u.CategoryId));
+
+ foreach (var element in query)
+ {
+ var accessed = _relevanceRepository.FindSingle(u => u.Key == accessType
+ && u.FirstId == firstId && u.SecondId == element.Id);
+ listVms.Add(new
+ {
+ Id = element.Id,
+ Name = element.Name,
+ IsBelongUser = accessed != null,
+ Description = element.Description,
+ Key = element.Key,
+ Status = element.Status
+ });
+ }
+ return listVms;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/OpenAuth.Mvc/AutofacExt.cs b/OpenAuth.Mvc/AutofacExt.cs
index 4354cbff..fb4c2a74 100644
--- a/OpenAuth.Mvc/AutofacExt.cs
+++ b/OpenAuth.Mvc/AutofacExt.cs
@@ -30,11 +30,11 @@ namespace OpenAuth.Mvc
{
var builder = new ContainerBuilder();
- //����ע��
+ //注册数据库基础操作和工作单元
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));
builder.RegisterType(typeof (UnitWork)).As(typeof (IUnitWork));
- //Ӧ�ò�ע��
+ //注册WebConfig中的配置
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
//注册app层
diff --git a/OpenAuth.Mvc/Controllers/ResourceManagerController.cs b/OpenAuth.Mvc/Controllers/ResourceManagerController.cs
index 5b0f4e47..e9f88718 100644
--- a/OpenAuth.Mvc/Controllers/ResourceManagerController.cs
+++ b/OpenAuth.Mvc/Controllers/ResourceManagerController.cs
@@ -46,7 +46,7 @@ namespace OpenAuth.Mvc.Controllers
///
public string Load(int categoryId, int pageCurrent = 1, int pageSize = 30)
{
- return JsonHelper.Instance.Serialize(_app.Load(categoryId, pageCurrent, pageSize));
+ return JsonHelper.Instance.Serialize(_app.Load(User.Identity.Name, categoryId, pageCurrent, pageSize));
}
public string LoadForTree()
@@ -94,7 +94,7 @@ namespace OpenAuth.Mvc.Controllers
/// System.String.
public string LoadWithAccess(int cId, int firstId, string key)
{
- return JsonHelper.Instance.Serialize(_app.LoadWithAccess(key,firstId, cId));
+ return JsonHelper.Instance.Serialize(_app.LoadWithAccess(User.Identity.Name,key,firstId, cId));
}
}
}
\ No newline at end of file
diff --git a/OpenAuth.Mvc/Properties/AssemblyInfo.cs b/OpenAuth.Mvc/Properties/AssemblyInfo.cs
index 73f43e70..36099d8d 100644
--- a/OpenAuth.Mvc/Properties/AssemblyInfo.cs
+++ b/OpenAuth.Mvc/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// 你可以指定所有值,也可以让修订版本和内部版本号采用默认值,
// 方法是按如下所示使用 "*":
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.1.0.0")]
+[assembly: AssemblyFileVersion("1.1.0.0")]
diff --git a/OpenAuth.Mvc/Views/OrgManager/Index.cshtml b/OpenAuth.Mvc/Views/OrgManager/Index.cshtml
index a605d394..5d6b8236 100644
--- a/OpenAuth.Mvc/Views/OrgManager/Index.cshtml
+++ b/OpenAuth.Mvc/Views/OrgManager/Index.cshtml
@@ -6,7 +6,7 @@