mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-11-08 18:34:44 +08:00
这是有史以来最艰难的一次提交,不生则死!
This commit is contained in:
28
OpenAuth.App/AuthoriseFactory.cs
Normal file
28
OpenAuth.App/AuthoriseFactory.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using OpenAuth.Domain.Interface;
|
||||
|
||||
namespace OpenAuth.Domain.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// Ȩ<><EFBFBD><DEB7>乤<EFBFBD><E4B9A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺Ŵ<CBBA><C5B4><EFBFBD>
|
||||
/// </summary>
|
||||
public class AuthoriseFactory
|
||||
{
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
public AuthoriseService Create(string loginuser)
|
||||
{
|
||||
if (loginuser == "System")
|
||||
{
|
||||
return new SystemAuthService();
|
||||
}
|
||||
else
|
||||
{
|
||||
return new AuthoriseService()
|
||||
{
|
||||
_unitWork = _unitWork,
|
||||
User = _unitWork.FindSingle<User>(u =>u.Account == loginuser)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
131
OpenAuth.App/AuthoriseService.cs
Normal file
131
OpenAuth.App/AuthoriseService.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
// ***********************************************************************
|
||||
// Assembly : OpenAuth.Domain
|
||||
// Author : yubaolee
|
||||
// Created : 04-21-2016
|
||||
//
|
||||
// Last Modified By : yubaolee
|
||||
// Last Modified On : 04-21-2016
|
||||
// Contact : Microsoft
|
||||
// File: AuthenService.cs
|
||||
// ***********************************************************************
|
||||
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenAuth.Domain.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 领域服务
|
||||
/// <para>用户授权服务</para>
|
||||
/// </summary>
|
||||
public class AuthoriseService
|
||||
{
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
protected User _user;
|
||||
|
||||
private List<string> _userRoleIds; //用户角色GUID
|
||||
|
||||
public List<Module> Modules
|
||||
{
|
||||
get { return GetModulesQuery().ToList(); }
|
||||
}
|
||||
|
||||
public List<Role> Roles
|
||||
{
|
||||
get { return GetRolesQuery().ToList(); }
|
||||
}
|
||||
|
||||
public List<ModuleElement> ModuleElements
|
||||
{
|
||||
get { return GetModuleElementsQuery().ToList(); }
|
||||
}
|
||||
|
||||
public List<Resource> Resources
|
||||
{
|
||||
get { return GetResourcesQuery().ToList(); }
|
||||
}
|
||||
|
||||
public List<Org> Orgs
|
||||
{
|
||||
get { return GetOrgsQuery().ToList(); }
|
||||
}
|
||||
|
||||
public User User
|
||||
{
|
||||
get { return _user; }
|
||||
set
|
||||
{
|
||||
_user = value;
|
||||
_userRoleIds = _unitWork.Find<Relevance>(u => u.FirstId == _user.Id && u.Key == "UserRole").Select(u => u.SecondId).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public void Check(string userName, string password)
|
||||
{
|
||||
var _user = _unitWork.FindSingle<User>(u => u.Account == userName);
|
||||
if (_user == null)
|
||||
{
|
||||
throw new Exception("用户帐号不存在");
|
||||
}
|
||||
_user.CheckPassword(password);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用户可访问的机构
|
||||
/// </summary>
|
||||
/// <returns>IQueryable<Org>.</returns>
|
||||
public virtual IQueryable<Org> GetOrgsQuery()
|
||||
{
|
||||
var orgids = _unitWork.Find<Relevance>(
|
||||
u =>
|
||||
(u.FirstId == _user.Id && u.Key == "UserOrg") ||
|
||||
(u.Key == "RoleOrg" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
|
||||
return _unitWork.Find<Org>(u => orgids.Contains(u.Id));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户可访问的资源
|
||||
/// </summary>
|
||||
/// <returns>IQueryable<Resource>.</returns>
|
||||
public virtual IQueryable<Resource> GetResourcesQuery()
|
||||
{
|
||||
var resourceIds = _unitWork.Find<Relevance>(
|
||||
u =>
|
||||
(u.FirstId == _user.Id && u.Key == "UserResource") ||
|
||||
(u.Key == "RoleResource" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
|
||||
return _unitWork.Find<Resource>(u => resourceIds.Contains(u.Id));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 模块菜单权限
|
||||
/// </summary>
|
||||
public virtual IQueryable<ModuleElement> GetModuleElementsQuery()
|
||||
{
|
||||
var elementIds = _unitWork.Find<Relevance>(
|
||||
u =>
|
||||
(u.FirstId == _user.Id && u.Key == "UserElement") ||
|
||||
(u.Key == "RoleElement" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
|
||||
return _unitWork.Find<ModuleElement>(u => elementIds.Contains(u.Id));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得出最终用户拥有的模块
|
||||
/// </summary>
|
||||
public virtual IQueryable<Module> GetModulesQuery()
|
||||
{
|
||||
var moduleIds = _unitWork.Find<Relevance>(
|
||||
u =>
|
||||
(u.FirstId == _user.Id && u.Key == "UserModule") ||
|
||||
(u.Key == "RoleModule" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
|
||||
return _unitWork.Find<Module>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo);
|
||||
}
|
||||
|
||||
//用户角色
|
||||
public virtual IQueryable<Role> GetRolesQuery()
|
||||
{
|
||||
return _unitWork.Find<Role>(u => _userRoleIds.Contains(u.Id));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,31 +10,17 @@ namespace OpenAuth.App
|
||||
{
|
||||
public class CategoryManagerApp
|
||||
{
|
||||
private ICategoryRepository _repository;
|
||||
private IUnitWork _unitWork;
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
public CategoryManagerApp(ICategoryRepository repository,
|
||||
IUnitWork unitWork)
|
||||
public CategoryManagerApp(IUnitWork unitWork)
|
||||
{
|
||||
_repository = repository;
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
|
||||
public int GetCategoryCntInOrg(string orgId)
|
||||
{
|
||||
if (orgId == string.Empty)
|
||||
{
|
||||
return _repository.Find(null).Count();
|
||||
}
|
||||
else
|
||||
{
|
||||
return _repository.GetCategoryCntInOrgs(GetSubCategories(orgId));
|
||||
}
|
||||
}
|
||||
|
||||
public List<Category> LoadAll()
|
||||
{
|
||||
return _repository.Find(null).ToList();
|
||||
return _unitWork.Find<Category>(null).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -47,13 +33,13 @@ namespace OpenAuth.App
|
||||
if (parentId == string.Empty)
|
||||
{
|
||||
categories = _unitWork.Find<Category>(pageindex, pagesize);
|
||||
total = _repository.GetCount();
|
||||
total = _unitWork.GetCount<Category>();
|
||||
}
|
||||
else
|
||||
{
|
||||
var ids = GetSubCategories(parentId);
|
||||
categories = _unitWork.Find<Category>(pageindex, pagesize, "SortNo", u => ids.Contains(u.Id));
|
||||
total = _repository.GetCategoryCntInOrgs(ids);
|
||||
// total = _repository.GetCategoryCntInOrgs(ids);
|
||||
}
|
||||
|
||||
var query = from c in categories
|
||||
@@ -72,9 +58,7 @@ namespace OpenAuth.App
|
||||
return new GridData()
|
||||
{
|
||||
count = total,
|
||||
total = (int)Math.Ceiling((double)total/pagesize),
|
||||
data = query.ToList(),
|
||||
page = pageindex
|
||||
data = query.ToList()
|
||||
};
|
||||
}
|
||||
|
||||
@@ -84,13 +68,13 @@ namespace OpenAuth.App
|
||||
private string[] GetSubCategories(string orgId)
|
||||
{
|
||||
var category = Find(orgId);
|
||||
var categories = _repository.Find(u => u.CascadeId.Contains(category.CascadeId)).Select(u => u.Id).ToArray();
|
||||
var categories = _unitWork.Find<Category>(u => u.CascadeId.Contains(category.CascadeId)).Select(u => u.Id).ToArray();
|
||||
return categories;
|
||||
}
|
||||
|
||||
public Category Find(string id)
|
||||
{
|
||||
var category = _repository.FindSingle(u => u.Id == id);
|
||||
var category = _unitWork.FindSingle<Category>(u => u.Id == id);
|
||||
if (category == null) return new Category();
|
||||
|
||||
return category;
|
||||
@@ -98,7 +82,7 @@ namespace OpenAuth.App
|
||||
|
||||
public void Delete(string[] ids)
|
||||
{
|
||||
_repository.Delete(u =>ids.Contains(u.Id));
|
||||
_unitWork.Delete<Category>(u =>ids.Contains(u.Id));
|
||||
}
|
||||
|
||||
public void AddOrUpdate(Category model)
|
||||
@@ -109,23 +93,24 @@ namespace OpenAuth.App
|
||||
|
||||
if (category.Id == string.Empty)
|
||||
{
|
||||
_repository.Add(category);
|
||||
_unitWork.Add(category);
|
||||
}
|
||||
else
|
||||
{
|
||||
//获取旧的的CascadeId
|
||||
var CascadeId = _repository.FindSingle(o => o.Id == category.Id).CascadeId;
|
||||
var CascadeId = _unitWork.FindSingle<Category>(o => o.Id == category.Id).CascadeId;
|
||||
//根据CascadeId查询子分类
|
||||
var categorys = _repository.Find(u => u.CascadeId.Contains(CascadeId) && u.Id != category.Id).OrderBy(u => u.CascadeId).ToList();
|
||||
var categorys = _unitWork.Find<Category>(u => u.CascadeId.Contains(CascadeId) && u.Id != category.Id).OrderBy(u => u.CascadeId).ToList();
|
||||
|
||||
_repository.Update(category);
|
||||
_unitWork.Update(category);
|
||||
|
||||
//更新子分类的CascadeId
|
||||
foreach (var a in categorys)
|
||||
{
|
||||
ChangeModuleCascade(a);
|
||||
_repository.Update(a);
|
||||
_unitWork.Update(a);
|
||||
}
|
||||
_unitWork.Save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +121,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
string cascadeId;
|
||||
int currentCascadeId = 1; //当前结点的级联节点最后一位
|
||||
var sameLevels = _repository.Find(o => o.ParentId == org.ParentId && o.Id != org.Id);
|
||||
var sameLevels = _unitWork.Find<Category>(o => o.ParentId == org.ParentId && o.Id != org.Id);
|
||||
foreach (var obj in sameLevels)
|
||||
{
|
||||
int objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last());
|
||||
@@ -145,7 +130,7 @@ namespace OpenAuth.App
|
||||
|
||||
if (org.ParentId != null && org.ParentId != string.Empty)
|
||||
{
|
||||
var parentOrg = _repository.FindSingle(o => o.Id == org.ParentId);
|
||||
var parentOrg = _unitWork.FindSingle<Category>(o => o.Id == org.ParentId);
|
||||
if (parentOrg != null)
|
||||
{
|
||||
cascadeId = parentOrg.CascadeId + currentCascadeId +".";
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
// ***********************************************************************
|
||||
// Assembly : OpenAuth.App
|
||||
// Author : Yubao Li
|
||||
// Created : 12-02-2015
|
||||
//
|
||||
// Last Modified By : Yubao Li
|
||||
// Last Modified On : 12-02-2015
|
||||
// ***********************************************************************
|
||||
// <copyright file="ModuleElementManagerApp.cs" company="">
|
||||
// Copyright (c) . All rights reserved.
|
||||
// </copyright>
|
||||
// <summary>模块元素</summary>
|
||||
// ***********************************************************************
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Infrastructure;
|
||||
using OpenAuth.App.SSO;
|
||||
using OpenAuth.App.ViewModel;
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using OpenAuth.Domain.Service;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class ModuleElementManagerApp
|
||||
{
|
||||
private ModuleEleManService _moduleEleManService;
|
||||
|
||||
public ModuleElementManagerApp(ModuleEleManService moduleEleManService)
|
||||
{
|
||||
_moduleEleManService = moduleEleManService;
|
||||
}
|
||||
|
||||
public void AddOrUpdate(ModuleElement model)
|
||||
{
|
||||
var newbtn = new ModuleElement();
|
||||
model.CopyTo(newbtn);
|
||||
_moduleEleManService.AddOrUpdate(newbtn);
|
||||
}
|
||||
|
||||
public IEnumerable<ModuleElement> LoadByModuleId(string id)
|
||||
{
|
||||
string username = AuthUtil.GetUserName();
|
||||
return _moduleEleManService.LoadByModuleId(username, id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取带有授权状态的菜单列表
|
||||
/// </summary>
|
||||
/// <param name="accessType">授权类型,当前有RoleElement/UserElement</param>
|
||||
/// <param name="firstId">
|
||||
/// 当为RoleElement时,表示RoleId
|
||||
/// 当为UserElement时,表示UserId
|
||||
/// </param>
|
||||
/// <param name="moduleId">模块ID</param>
|
||||
public List<dynamic> LoadWithAccess(string accessType, string firstId, string moduleId)
|
||||
{
|
||||
string username = AuthUtil.GetUserName();
|
||||
return _moduleEleManService.LoadWithAccess(username, accessType, firstId, moduleId);
|
||||
}
|
||||
|
||||
public void Delete(string[] objs)
|
||||
{
|
||||
_moduleEleManService.Delete(objs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,22 @@
|
||||
using OpenAuth.Domain;
|
||||
using System.Collections.Generic;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using OpenAuth.Domain.Service;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class ModuleManagerApp
|
||||
{
|
||||
private ModuleManService _moduleManService;
|
||||
|
||||
public ModuleManagerApp(ModuleManService moduleManService)
|
||||
{
|
||||
_moduleManService = moduleManService;
|
||||
}
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
public void Delete(string id)
|
||||
{
|
||||
_moduleManService.Delete(id);
|
||||
// _unitWork.Delete<Module>(id);
|
||||
}
|
||||
|
||||
public void AddOrUpdate(Module vm)
|
||||
{
|
||||
_moduleManService.AddOrUpdate(vm);
|
||||
// _moduleManService.AddOrUpdate(vm);
|
||||
}
|
||||
|
||||
#region 用户/角色分配模块
|
||||
@@ -32,7 +28,7 @@ namespace OpenAuth.App
|
||||
/// <param name="userId">The user unique identifier.</param>
|
||||
public List<Module> LoadForUser(string userId)
|
||||
{
|
||||
return _moduleManService.LoadForUser(userId);
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -41,7 +37,7 @@ namespace OpenAuth.App
|
||||
/// <param name="roleId">The role unique identifier.</param>
|
||||
public List<Module> LoadForRole(string roleId)
|
||||
{
|
||||
return _moduleManService.LoadForRole(roleId);
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion 用户/角色分配模块
|
||||
|
||||
@@ -80,6 +80,8 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AuthoriseFactory.cs" />
|
||||
<Compile Include="AuthoriseService.cs" />
|
||||
<Compile Include="CategoryManagerApp.cs" />
|
||||
<Compile Include="AuthorizeApp.cs" />
|
||||
<Compile Include="Extention\IWF_Runtime.cs" />
|
||||
@@ -89,14 +91,12 @@
|
||||
<Compile Include="Request\IdPageReq.cs" />
|
||||
<Compile Include="Request\PageReq.cs" />
|
||||
<Compile Include="Request\QueryUserListReq.cs" />
|
||||
<Compile Include="RevelanceManagerApp.cs" />
|
||||
<Compile Include="SystemAuthService.cs" />
|
||||
<Compile Include="WFFormService.cs" />
|
||||
<Compile Include="WFProcessInstanceService.cs" />
|
||||
<Compile Include="WFSchemeService.cs" />
|
||||
<Compile Include="ModuleElementManagerApp.cs" />
|
||||
<Compile Include="ModuleManagerApp.cs" />
|
||||
<Compile Include="ResourceManagerApp.cs" />
|
||||
<Compile Include="RevelanceManagerApp.cs" />
|
||||
<Compile Include="RoleManagerApp.cs" />
|
||||
<Compile Include="SSO\AppInfo.cs" />
|
||||
<Compile Include="SSO\AppInfoService.cs" />
|
||||
<Compile Include="SSO\AuthUtil.cs" />
|
||||
@@ -106,7 +106,6 @@
|
||||
<Compile Include="SSO\LoginResult.cs" />
|
||||
<Compile Include="SSO\SSOAuthAttribute.cs" />
|
||||
<Compile Include="SSO\UserAuthSession.cs" />
|
||||
<Compile Include="StockManagerApp.cs" />
|
||||
<Compile Include="UserManagerApp.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="OrgManagerApp.cs" />
|
||||
@@ -123,9 +122,9 @@
|
||||
<Project>{5FEAEC9A-4F1E-4EE7-B377-9DB1B0870DAC}</Project>
|
||||
<Name>Infrastructure</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenAuth.Domain\OpenAuth.Domain.csproj">
|
||||
<Project>{6108da8e-92a1-4abe-b9f5-26d64d55ca2c}</Project>
|
||||
<Name>OpenAuth.Domain</Name>
|
||||
<ProjectReference Include="..\OpenAuth.Repository\OpenAuth.Repository.csproj">
|
||||
<Project>{e8df8dea-e2cf-4bdb-8f4f-3f8205b0e03a}</Project>
|
||||
<Name>OpenAuth.Repository</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -9,47 +9,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
public class OrgManagerApp
|
||||
{
|
||||
private IOrgRepository _repository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public OrgManagerApp(IOrgRepository repository, IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
public IList<Org> GetAll()
|
||||
{
|
||||
return _repository.LoadOrgs().ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 部门的直接子部门
|
||||
/// <para>TODO:可以根据用户的喜好决定选择LoadAllChildren或LoadDirectChildren</para>
|
||||
/// </summary>
|
||||
/// <param name="orgId">The org unique identifier.</param>
|
||||
/// <returns>IEnumerable{Org}.</returns>
|
||||
public IList<Org> LoadDirectChildren(string orgId)
|
||||
{
|
||||
return _repository.Find(u => u.ParentId == orgId).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到部门的所有子部门
|
||||
/// <para>如果orgId为0,表示取得所有部门</para>
|
||||
/// </summary>
|
||||
public GridData LoadAllChildren(string orgId)
|
||||
{
|
||||
var query = _repository.GetSubOrgs(orgId);
|
||||
return new GridData
|
||||
{
|
||||
page = 1,
|
||||
data = query.ToList(),
|
||||
count = query.Count(),
|
||||
total = 1
|
||||
};
|
||||
}
|
||||
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 添加部门
|
||||
@@ -62,23 +22,23 @@ namespace OpenAuth.App
|
||||
ChangeModuleCascade(org);
|
||||
if (org.Id == string.Empty)
|
||||
{
|
||||
_repository.Add(org);
|
||||
_unitWork.Add(org);
|
||||
}
|
||||
else
|
||||
{
|
||||
//获取旧的的CascadeId
|
||||
var CascadeId = _repository.FindSingle(o => o.Id == org.Id).CascadeId;
|
||||
var CascadeId = _unitWork.FindSingle<Org>(o => o.Id == org.Id).CascadeId;
|
||||
//根据CascadeId查询子部门
|
||||
var orgs = _repository.Find(u => u.CascadeId.Contains(CascadeId) && u.Id != org.Id).OrderBy(u => u.CascadeId).ToList();
|
||||
var orgs = _unitWork.Find<Org>(u => u.CascadeId.Contains(CascadeId) && u.Id != org.Id).OrderBy(u => u.CascadeId).ToList();
|
||||
|
||||
//更新操作
|
||||
_repository.Update(org);
|
||||
_unitWork.Update(org);
|
||||
|
||||
//更新子部门的CascadeId
|
||||
foreach (var a in orgs)
|
||||
{
|
||||
ChangeModuleCascade(a);
|
||||
_repository.Update(a);
|
||||
_unitWork.Update(a);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,10 +50,10 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
public void DelOrg(string[] ids)
|
||||
{
|
||||
var delOrg = _repository.Find(u => ids.Contains(u.Id)).ToList();
|
||||
var delOrg = _unitWork.Find<Org>(u => ids.Contains(u.Id)).ToList();
|
||||
foreach (var org in delOrg)
|
||||
{
|
||||
_repository.Delete(u => u.CascadeId.Contains(org.CascadeId));
|
||||
_unitWork.Delete<Org>(u => u.CascadeId.Contains(org.CascadeId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,17 +67,17 @@ namespace OpenAuth.App
|
||||
{
|
||||
//用户角色
|
||||
var userRoleIds =
|
||||
_relevanceRepository.Find(u => u.FirstId == userId && u.Key == "UserRole").Select(u => u.SecondId).ToList();
|
||||
_unitWork.Find<Relevance>(u => u.FirstId == userId && u.Key == "UserRole").Select(u => u.SecondId).ToList();
|
||||
|
||||
//用户角色与自己分配到的角色ID
|
||||
var moduleIds =
|
||||
_relevanceRepository.Find(
|
||||
_unitWork.Find<Relevance>(
|
||||
u =>
|
||||
(u.FirstId == userId && u.Key == "UserOrg") ||
|
||||
(u.Key == "RoleOrg" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList();
|
||||
|
||||
if (!moduleIds.Any()) return new List<Org>();
|
||||
return _repository.Find(u => moduleIds.Contains(u.Id)).ToList();
|
||||
return _unitWork.Find<Org>(u => moduleIds.Contains(u.Id)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -127,11 +87,40 @@ namespace OpenAuth.App
|
||||
public List<Org> LoadForRole(string roleId)
|
||||
{
|
||||
var moduleIds =
|
||||
_relevanceRepository.Find(u => u.FirstId == roleId && u.Key == "RoleOrg")
|
||||
_unitWork.Find<Relevance>(u => u.FirstId == roleId && u.Key == "RoleOrg")
|
||||
.Select(u => u.SecondId)
|
||||
.ToList();
|
||||
if (!moduleIds.Any()) return new List<Org>();
|
||||
return _repository.Find(u => moduleIds.Contains(u.Id)).ToList();
|
||||
return _unitWork.Find<Org>(u => moduleIds.Contains(u.Id)).ToList();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 得到部门的所有子部门
|
||||
/// <para>如果orgId为0,表示取得所有部门</para>
|
||||
/// </summary>
|
||||
public GridData LoadAllChildren(string orgId)
|
||||
{
|
||||
var query = GetSubOrgs(orgId);
|
||||
return new GridData
|
||||
{
|
||||
data = query.ToList(),
|
||||
count = query.Count(),
|
||||
};
|
||||
}
|
||||
|
||||
public IEnumerable<Org> GetSubOrgs(string orgId)
|
||||
{
|
||||
string cascadeId = "0.";
|
||||
if (!string.IsNullOrEmpty(orgId))
|
||||
{
|
||||
var org = _unitWork.FindSingle<Org>(u => u.Id == orgId);
|
||||
if (org == null)
|
||||
throw new Exception("未能找到指定对象信息");
|
||||
cascadeId = org.CascadeId;
|
||||
}
|
||||
|
||||
return _unitWork.Find<Org>(u => u.CascadeId.Contains(cascadeId));
|
||||
}
|
||||
|
||||
#region 私有方法
|
||||
@@ -141,7 +130,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
string cascadeId;
|
||||
int currentCascadeId = 1; //当前结点的级联节点最后一位
|
||||
var sameLevels = _repository.Find(o => o.ParentId == org.ParentId && o.Id != org.Id);
|
||||
var sameLevels = _unitWork.Find<Org>(o => o.ParentId == org.ParentId && o.Id != org.Id);
|
||||
foreach (var obj in sameLevels)
|
||||
{
|
||||
int objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last());
|
||||
@@ -150,7 +139,7 @@ namespace OpenAuth.App
|
||||
|
||||
if (org.ParentId != null && org.ParentId != string.Empty)
|
||||
{
|
||||
var parentOrg = _repository.FindSingle(o => o.Id == org.ParentId);
|
||||
var parentOrg = _unitWork.FindSingle<Org>(o => o.Id == org.ParentId);
|
||||
if (parentOrg != null)
|
||||
{
|
||||
cascadeId = parentOrg.CascadeId + currentCascadeId+".";
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Infrastructure;
|
||||
using OpenAuth.App.ViewModel;
|
||||
using OpenAuth.Domain.Service;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class ResourceManagerApp
|
||||
{
|
||||
private ResManagerService _resManagerService;
|
||||
|
||||
public ResourceManagerApp(ResManagerService resManagerService)
|
||||
{
|
||||
_resManagerService = resManagerService;
|
||||
}
|
||||
|
||||
public int GetResourceCntInOrg(string orgId)
|
||||
{
|
||||
return _resManagerService.GetResourceCntInOrg(orgId);
|
||||
}
|
||||
|
||||
public List<Resource> LoadAll()
|
||||
{
|
||||
return _resManagerService.LoadAll();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载一个节点下面的一个或全部Resources
|
||||
/// </summary>
|
||||
public dynamic Load(string username, string categoryId, int pageindex, int pagesize)
|
||||
{
|
||||
return _resManagerService.Load(username, categoryId, pageindex, pagesize);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Delete(string[] ids)
|
||||
{
|
||||
_resManagerService.Delete(ids);
|
||||
}
|
||||
|
||||
public void AddOrUpdate(Resource model)
|
||||
{
|
||||
Resource resource = new Resource();
|
||||
model.CopyTo(resource);
|
||||
_resManagerService.AddOrUpdate(resource);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取带有授权状态的菜单列表
|
||||
/// </summary>
|
||||
/// <param name="accessType">授权类型,当前有RoleResource/UserResource</param>
|
||||
/// <param name="firstId">
|
||||
/// 当为RoleResource时,表示RoleId
|
||||
/// 当为UserResource时,表示UserId
|
||||
/// </param>
|
||||
/// <param name="cId">分类ID</param>
|
||||
public List<dynamic> LoadWithAccess(string username, string accessType, string firstId, string cId)
|
||||
{
|
||||
return _resManagerService.LoadWithAccess(username, accessType, firstId, cId);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,44 +1,93 @@
|
||||
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Infrastructure;
|
||||
|
||||
using OpenAuth.App.ViewModel;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class RevelanceManagerApp
|
||||
{
|
||||
|
||||
private readonly IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public RevelanceManagerApp(IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加关联
|
||||
/// <para>比如给用户分配资源,那么firstId就是用户ID,secIds就是资源ID列表</para>
|
||||
/// </summary>
|
||||
/// <param name="type">关联的类型,如"UserResource"</param>
|
||||
public void Assign(string type, string firstId, string[] secIds)
|
||||
{
|
||||
_relevanceRepository.AddRelevance(type, secIds.ToLookup(u => firstId));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消关联
|
||||
/// </summary>
|
||||
/// <param name="type">关联的类型,如"UserResource"</param>
|
||||
/// <param name="firstId">The first identifier.</param>
|
||||
/// <param name="secIds">The sec ids.</param>
|
||||
public void UnAssign(string type, string firstId, string[] secIds)
|
||||
{
|
||||
_relevanceRepository.DeleteBy(type, secIds.ToLookup(u =>firstId));
|
||||
}
|
||||
}
|
||||
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class RevelanceManagerApp
|
||||
{
|
||||
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 添加关联
|
||||
/// <para>比如给用户分配资源,那么firstId就是用户ID,secIds就是资源ID列表</para>
|
||||
/// </summary>
|
||||
/// <param name="type">关联的类型,如"UserResource"</param>
|
||||
public void Assign(string type, string firstId, string[] secIds)
|
||||
{
|
||||
Assign(type, secIds.ToLookup(u => firstId));
|
||||
}
|
||||
|
||||
public void Assign(string key, ILookup<string, string> idMaps)
|
||||
{
|
||||
DeleteBy(key, idMaps);
|
||||
_unitWork.BatchAdd((from sameVals in idMaps
|
||||
from value in sameVals
|
||||
select new Relevance
|
||||
{
|
||||
Key = key,
|
||||
FirstId = sameVals.Key,
|
||||
SecondId = value,
|
||||
OperateTime = DateTime.Now
|
||||
}).ToArray());
|
||||
_unitWork.Save();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 删除关联
|
||||
/// </summary>
|
||||
/// <param name="key">关联标识</param>
|
||||
/// <param name="idMaps">关联的<firstId, secondId>数组</param>
|
||||
public void DeleteBy(string key, ILookup<string, string> idMaps)
|
||||
{
|
||||
foreach (var sameVals in idMaps)
|
||||
{
|
||||
foreach (var value in sameVals)
|
||||
{
|
||||
_unitWork.Delete<Relevance>(u => u.Key == key && u.FirstId == sameVals.Key && u.SecondId == value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消关联
|
||||
/// </summary>
|
||||
/// <param name="type">关联的类型,如"UserResource"</param>
|
||||
/// <param name="firstId">The first identifier.</param>
|
||||
/// <param name="secIds">The sec ids.</param>
|
||||
public void UnAssign(string type, string firstId, string[] secIds)
|
||||
{
|
||||
DeleteBy(type, secIds.ToLookup(u =>firstId));
|
||||
}
|
||||
|
||||
public void DeleteBy(string key, params string[] firstIds)
|
||||
{
|
||||
_unitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.Key == key);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加新的关联
|
||||
/// </summary>
|
||||
/// <param name="key">关联标识</param>
|
||||
/// <param name="idMaps">关联的<firstId, secondId>数组</param>
|
||||
public void AddRelevance(string key, ILookup<string, string> idMaps)
|
||||
{
|
||||
DeleteBy(key, idMaps);
|
||||
_unitWork.BatchAdd<Relevance>((from sameVals in idMaps
|
||||
from value in sameVals
|
||||
select new Relevance
|
||||
{
|
||||
Key = key,
|
||||
FirstId = sameVals.Key,
|
||||
SecondId = value,
|
||||
OperateTime = DateTime.Now
|
||||
}).ToArray());
|
||||
_unitWork.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
using OpenAuth.App.ViewModel;
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class RoleManagerApp
|
||||
{
|
||||
private IRoleRepository _repository;
|
||||
private IOrgRepository _orgRepository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public RoleManagerApp(IRoleRepository repository,
|
||||
IOrgRepository orgRepository,
|
||||
IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_orgRepository = orgRepository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
public int GetRoleCntInOrg(string orgId)
|
||||
{
|
||||
if (orgId == string.Empty)
|
||||
{
|
||||
return _repository.Find(null).Count();
|
||||
}
|
||||
else
|
||||
{
|
||||
return _repository.GetRoleCntInOrgs(GetSubOrgIds(orgId));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载一个部门及子部门全部Roles
|
||||
/// </summary>
|
||||
public GridData Load(string orgId, int pageindex, int pagesize)
|
||||
{
|
||||
if (pageindex < 1) pageindex = 1; //TODO:如果列表为空新增加一个用户后,前端会传一个0过来,奇怪??
|
||||
IEnumerable<Role> roles;
|
||||
int total = 0;
|
||||
if (orgId == string.Empty)
|
||||
{
|
||||
roles = _repository.LoadRoles(pageindex, pagesize);
|
||||
total = _repository.GetCount();
|
||||
}
|
||||
else
|
||||
{
|
||||
roles = _repository.LoadInOrgs(pageindex, pagesize, GetSubOrgIds(orgId));
|
||||
total = _repository.GetRoleCntInOrgs(orgId);
|
||||
}
|
||||
|
||||
var rolevms = new List<RoleVM>();
|
||||
foreach (var role in roles)
|
||||
{
|
||||
RoleVM rolevm = role;
|
||||
var orgs = _orgRepository.LoadByRole(role.Id);
|
||||
rolevm.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList());
|
||||
rolevm.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
|
||||
rolevms.Add(rolevm);
|
||||
}
|
||||
|
||||
var result = new GridData
|
||||
{
|
||||
count = total,
|
||||
total = (int)Math.Ceiling((double)total/pagesize),
|
||||
data = rolevms.ToList(),
|
||||
page = pageindex
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前组织的所有下级组织
|
||||
/// </summary>
|
||||
private string[] GetSubOrgIds(string orgId)
|
||||
{
|
||||
var orgs = _orgRepository.GetSubOrgs(orgId).Select(u => u.Id).ToArray();
|
||||
return orgs;
|
||||
}
|
||||
|
||||
public Role Find(string id)
|
||||
{
|
||||
var role = _repository.FindSingle(u => u.Id == id);
|
||||
if (role == null) role = new Role();
|
||||
return role;
|
||||
}
|
||||
|
||||
public void Delete(string id)
|
||||
{
|
||||
_repository.Delete(id);
|
||||
}
|
||||
|
||||
public void AddOrUpdate(JObject obj)
|
||||
{
|
||||
var role = obj.ToObject<Role>();
|
||||
if (role.Id == string.Empty)
|
||||
{
|
||||
role.CreateTime = DateTime.Now;
|
||||
_repository.Add(role);
|
||||
}
|
||||
else
|
||||
{
|
||||
_repository.Update(role);
|
||||
}
|
||||
|
||||
string[] orgIds = obj["OrganizationIds"].ToString().Split(',').ToArray();
|
||||
|
||||
_relevanceRepository.DeleteBy("RoleOrg", role.Id);
|
||||
_relevanceRepository.AddRelevance("RoleOrg", orgIds.ToLookup(u => role.Id));
|
||||
}
|
||||
|
||||
public List<Role> LoadForUser(string userId)
|
||||
{
|
||||
return _repository.LoadForUser(userId).ToList();
|
||||
}
|
||||
|
||||
public List<RoleVM> LoadForOrgAndUser(string orgId, string userId)
|
||||
{
|
||||
var userroles = LoadForUser(userId);
|
||||
var orgroles = _repository.LoadInOrgs(GetSubOrgIds(orgId)).ToList();
|
||||
|
||||
var rolevms = new List<RoleVM>();
|
||||
foreach (var role in orgroles)
|
||||
{
|
||||
RoleVM rolevm = role;
|
||||
rolevm.Checked = userroles.Any(u => u.Id == role.Id);
|
||||
var orgs = _orgRepository.LoadByRole(role.Id);
|
||||
rolevm.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList());
|
||||
rolevm.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
|
||||
rolevms.Add(rolevm);
|
||||
}
|
||||
return rolevms;
|
||||
}
|
||||
|
||||
public List<string> GetUsersInRole(string ruleName)
|
||||
{
|
||||
var role = _repository.FindSingle(u => u.Name == ruleName);
|
||||
if (role == null) return null;
|
||||
|
||||
return _relevanceRepository.Find(u => u.Key == "UserRole"
|
||||
&& u.SecondId == role.Id).Select(u => u.FirstId).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using Infrastructure;
|
||||
|
||||
namespace OpenAuth.App.SSO
|
||||
{
|
||||
public class LoginResult
|
||||
public class LoginResult :Response<string>
|
||||
{
|
||||
public bool Success;
|
||||
public string ErrorMsg;
|
||||
public string ReturnUrl;
|
||||
public string Token;
|
||||
}
|
||||
|
||||
@@ -62,14 +62,14 @@ namespace OpenAuth.App.SSO
|
||||
//<2F><><EFBFBD><EFBFBD>Session
|
||||
new ObjCacheProvider<UserAuthSession>().Create(currentSession.Token, currentSession, DateTime.Now.AddDays(10));
|
||||
|
||||
result.Success = true;
|
||||
result.Code = 200;
|
||||
result.ReturnUrl = appInfo.ReturnUrl;
|
||||
result.Token = currentSession.Token;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMsg = ex.Message;
|
||||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
using System;
|
||||
using OpenAuth.Domain;
|
||||
using Infrastructure;
|
||||
using OpenAuth.Domain.Service;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class StockManagerApp
|
||||
{
|
||||
private StockManagerService _service;
|
||||
|
||||
public StockManagerApp(StockManagerService service)
|
||||
{
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据部门ID得到进出库信息
|
||||
/// </summary>
|
||||
public dynamic Load(string username, string orgId, int page, int rows)
|
||||
{
|
||||
return _service.Load(username, orgId, page, rows);
|
||||
}
|
||||
|
||||
public void Delete(string[] id)
|
||||
{
|
||||
_service.Delete(id);
|
||||
}
|
||||
|
||||
public void AddOrUpdate(Stock model)
|
||||
{
|
||||
Stock stock = new Stock();
|
||||
model.CopyTo(stock);
|
||||
_service.AddOrUpdate(stock);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
58
OpenAuth.App/SystemAuthService.cs
Normal file
58
OpenAuth.App/SystemAuthService.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
// ***********************************************************************
|
||||
// Assembly : OpenAuth.Domain
|
||||
// Author : yubaolee
|
||||
// Created : 04-21-2016
|
||||
//
|
||||
// Last Modified By : yubaolee
|
||||
// Last Modified On : 04-21-2016
|
||||
// Contact : Microsoft
|
||||
// File: AuthenService.cs
|
||||
// ***********************************************************************
|
||||
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenAuth.Domain.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 领域服务
|
||||
/// <para>超级管理员权限</para>
|
||||
/// </summary>
|
||||
public class SystemAuthService : AuthoriseService
|
||||
{
|
||||
public SystemAuthService()
|
||||
{
|
||||
_user = new User { Account = "System", Id = string.Empty };
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override IQueryable<Org> GetOrgsQuery()
|
||||
{
|
||||
return _unitWork.Find<Org>(null);
|
||||
}
|
||||
|
||||
public override IQueryable<Resource> GetResourcesQuery()
|
||||
{
|
||||
return _unitWork.Find<Resource>(null);
|
||||
}
|
||||
|
||||
public override IQueryable<ModuleElement> GetModuleElementsQuery()
|
||||
{
|
||||
return _unitWork.Find<ModuleElement>(null);
|
||||
}
|
||||
|
||||
public override IQueryable<Module> GetModulesQuery()
|
||||
{
|
||||
return _unitWork.Find<Module>(null);
|
||||
}
|
||||
|
||||
public override IQueryable<Role> GetRolesQuery()
|
||||
{
|
||||
//用户角色
|
||||
return _unitWork.Find<Role>(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,35 +11,15 @@ namespace OpenAuth.App
|
||||
{
|
||||
public class UserManagerApp
|
||||
{
|
||||
private IUserRepository _repository;
|
||||
private IOrgRepository _orgRepository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
public RevelanceManagerApp ReleManagerApp { get; set; }
|
||||
|
||||
public UserManagerApp(IUserRepository repository,
|
||||
IOrgRepository orgRepository,
|
||||
IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_orgRepository = orgRepository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
public User Get(string account)
|
||||
{
|
||||
return _repository.FindSingle(u => u.Account == account);
|
||||
return _unitWork.FindSingle<User>(u => u.Account == account);
|
||||
}
|
||||
|
||||
public int GetUserCntInOrg(string orgId)
|
||||
{
|
||||
if (orgId == string.Empty)
|
||||
{
|
||||
return _repository.Find(null).Count();
|
||||
}
|
||||
else
|
||||
{
|
||||
return _repository.GetUserCntInOrgs(GetSubOrgIds(orgId));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载一个部门及子部门全部用户
|
||||
@@ -51,20 +31,20 @@ namespace OpenAuth.App
|
||||
int records = 0;
|
||||
if (request.orgId ==string.Empty)
|
||||
{
|
||||
users = _repository.LoadUsers(request.page, request.limit);
|
||||
records = _repository.GetCount();
|
||||
users = _unitWork.Find<User>(null).OrderBy(u => u.Id).Skip((request.page - 1) * request.limit).Take(request.limit);
|
||||
records = _unitWork.GetCount<User>();
|
||||
}
|
||||
else
|
||||
{
|
||||
var ids = GetSubOrgIds(request.orgId);
|
||||
users = _repository.LoadInOrgs(request.page, request.limit, ids);
|
||||
records = _repository.GetUserCntInOrgs(ids);
|
||||
users = _unitWork.Find<User>(u =>ids.Contains(u.Id)).OrderBy(u => u.Id).Skip((request.page - 1) * request.limit).Take(request.limit);
|
||||
records = _unitWork.GetCount<User>();
|
||||
}
|
||||
var userviews = new List<UserView>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
UserView uv = user;
|
||||
var orgs = _orgRepository.LoadByUser(user.Id);
|
||||
UserView uv = user;
|
||||
var orgs = LoadByUser(user.Id);
|
||||
uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList());
|
||||
uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
|
||||
userviews.Add(uv);
|
||||
@@ -73,9 +53,7 @@ namespace OpenAuth.App
|
||||
return new GridData
|
||||
{
|
||||
count = records,
|
||||
total = (int)Math.Ceiling((double)records / request.limit),
|
||||
data = userviews,
|
||||
page = request.page
|
||||
};
|
||||
}
|
||||
|
||||
@@ -84,18 +62,18 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
private string[] GetSubOrgIds(string orgId)
|
||||
{
|
||||
var org = _orgRepository.FindSingle(u => u.Id == orgId);
|
||||
var orgs = _orgRepository.Find(u => u.CascadeId.Contains(org.CascadeId)).Select(u => u.Id).ToArray();
|
||||
var org = _unitWork.FindSingle<Org>(u => u.Id == orgId);
|
||||
var orgs = _unitWork.Find<Org>(u => u.CascadeId.Contains(org.CascadeId)).Select(u => u.Id).ToArray();
|
||||
return orgs;
|
||||
}
|
||||
|
||||
public UserView Find(string id)
|
||||
{
|
||||
var user = _repository.FindSingle(u => u.Id == id);
|
||||
var user = _unitWork.FindSingle<User>(u => u.Id == id);
|
||||
if (user == null) return new UserView();
|
||||
|
||||
UserView view = user;
|
||||
foreach (var org in _orgRepository.LoadByUser(id))
|
||||
foreach (var org in LoadByUser(id))
|
||||
{
|
||||
view.Organizations += "," + org.Name;
|
||||
view.OrganizationIds += "," + org.Id;
|
||||
@@ -107,10 +85,7 @@ namespace OpenAuth.App
|
||||
|
||||
public void Delete(string[] ids)
|
||||
{
|
||||
_repository.Delete(u => ids.Contains(u.Id));
|
||||
_relevanceRepository.DeleteBy("UserOrg", ids);
|
||||
_relevanceRepository.DeleteBy("UserModule", ids);
|
||||
_relevanceRepository.DeleteBy("UserRole", ids);
|
||||
_unitWork.Delete<User>(u => ids.Contains(u.Id));
|
||||
}
|
||||
|
||||
public void AddOrUpdate(UserView view)
|
||||
@@ -120,18 +95,19 @@ namespace OpenAuth.App
|
||||
User user = view;
|
||||
if (string.IsNullOrEmpty(view.Id))
|
||||
{
|
||||
if (_repository.IsExist(u => u.Account == view.Account))
|
||||
if (_unitWork.IsExist<User>(u => u.Account == view.Account))
|
||||
{
|
||||
throw new Exception("用户账号已存在");
|
||||
}
|
||||
user.CreateTime = DateTime.Now;
|
||||
user.Password = user.Account; //初始密码与账号相同
|
||||
_repository.Add(user);
|
||||
_unitWork.Add(user);
|
||||
_unitWork.Save();
|
||||
view.Id = user.Id; //要把保存后的ID存入view
|
||||
}
|
||||
else
|
||||
{
|
||||
_repository.Update(u => u.Id == view.Id, u => new User
|
||||
_unitWork.Update<User>(u => u.Id == view.Id, u => new User
|
||||
{
|
||||
Account = user.Account,
|
||||
BizCode = user.BizCode,
|
||||
@@ -143,13 +119,22 @@ namespace OpenAuth.App
|
||||
}
|
||||
string[] orgIds = view.OrganizationIds.Split(',').ToArray();
|
||||
|
||||
_relevanceRepository.DeleteBy("UserOrg", user.Id);
|
||||
_relevanceRepository.AddRelevance("UserOrg", orgIds.ToLookup(u => user.Id));
|
||||
ReleManagerApp.DeleteBy("UserOrg", user.Id);
|
||||
ReleManagerApp.AddRelevance("UserOrg", orgIds.ToLookup(u => user.Id));
|
||||
}
|
||||
|
||||
public IEnumerable<User> GetUsers(IEnumerable<string> userids)
|
||||
/// <summary>
|
||||
/// 加载用户的所有机构
|
||||
/// </summary>
|
||||
public IEnumerable<Org> LoadByUser(string userId)
|
||||
{
|
||||
return _repository.Find(u => userids.Contains(u.Id));
|
||||
var result = from userorg in _unitWork.Find<Relevance>(null)
|
||||
join org in _unitWork.Find<Org>(null) on userorg.SecondId equals org.Id
|
||||
where userorg.FirstId == userId && userorg.Key == "UserOrg"
|
||||
select org;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -27,14 +27,7 @@ namespace OpenAuth.App.ViewModel
|
||||
/// 操作消息
|
||||
/// </summary>
|
||||
public string msg;
|
||||
/// <summary>
|
||||
/// 页码
|
||||
/// </summary>
|
||||
public int page;
|
||||
/// <summary>
|
||||
/// 总页数
|
||||
/// </summary>
|
||||
public int total;
|
||||
|
||||
/// <summary>
|
||||
/// 总记录条数
|
||||
/// </summary>
|
||||
|
||||
@@ -13,12 +13,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
public class WFFormService
|
||||
{
|
||||
protected IUnitWork _unitWork;
|
||||
|
||||
public WFFormService(IUnitWork unitWork)
|
||||
{
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
public List<WFFrmMain> GetAllList()
|
||||
{
|
||||
@@ -39,12 +34,10 @@ namespace OpenAuth.App
|
||||
{
|
||||
var result = new GridData
|
||||
{
|
||||
page = pageCurrent
|
||||
count = _unitWork.Find<WFFrmMain>(null).Count(),
|
||||
data = _unitWork.Find<WFFrmMain>(pageCurrent, pageSize, "ModifyDate descending", null).ToList()
|
||||
};
|
||||
|
||||
int cnt = _unitWork.Find<WFFrmMain>(null).Count();
|
||||
result.total = cnt % pageSize == 0 ? cnt / pageSize : cnt / pageSize + 1;
|
||||
result.data = _unitWork.Find<WFFrmMain>(pageCurrent, pageSize, "ModifyDate descending", null).ToList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,12 +16,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
public class WFProcessInstanceService
|
||||
{
|
||||
protected IUnitWork _unitWork;
|
||||
|
||||
public WFProcessInstanceService(IUnitWork unitWork)
|
||||
{
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
#region 获取数据
|
||||
/// <summary>
|
||||
@@ -306,27 +301,21 @@ namespace OpenAuth.App
|
||||
public GridData Load(string userid, string type, int pageCurrent, int pageSize)
|
||||
{
|
||||
//todo:待办/已办/我的
|
||||
var result = new GridData
|
||||
{
|
||||
page = pageCurrent
|
||||
};
|
||||
var result = new GridData();
|
||||
|
||||
var cnt = _unitWork.Find<WFProcessInstance>(u => u.CreateUserId == userid).Count();
|
||||
result.count = _unitWork.Find<WFProcessInstance>(u => u.CreateUserId == userid).Count();
|
||||
if (type == "inbox") //待办事项
|
||||
{
|
||||
result.total = cnt%pageSize == 0? cnt/pageSize : cnt/pageSize + 1;
|
||||
result.data = _unitWork.Find<WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList();
|
||||
|
||||
}
|
||||
else if (type == "outbox") //已办事项
|
||||
{
|
||||
result.total = cnt % pageSize == 0 ? cnt / pageSize : cnt / pageSize + 1;
|
||||
result.data = _unitWork.Find<WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList();
|
||||
|
||||
}
|
||||
else //我的流程
|
||||
{
|
||||
result.total = cnt % pageSize == 0 ? cnt / pageSize : cnt / pageSize + 1;
|
||||
result.data = _unitWork.Find<WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,12 +13,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
public class WFSchemeService
|
||||
{
|
||||
protected IUnitWork _unitWork;
|
||||
|
||||
public WFSchemeService(IUnitWork unitWork)
|
||||
{
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
public IUnitWork _unitWork { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 保存流程
|
||||
@@ -109,13 +104,9 @@ namespace OpenAuth.App
|
||||
|
||||
public GridData Load(int pageCurrent, int pageSize)
|
||||
{
|
||||
var result = new GridData
|
||||
{
|
||||
page = pageCurrent
|
||||
};
|
||||
var result = new GridData();
|
||||
|
||||
int cnt = _unitWork.Find<WFSchemeInfo>(null).Count();
|
||||
result.total = cnt%pageSize ==0?cnt/pageSize:cnt/pageSize+1;
|
||||
result.count = _unitWork.Find<WFSchemeInfo>(null).Count();
|
||||
result.data = _unitWork.Find<WFSchemeInfo>(pageCurrent, pageSize, "ModifyDate descending", null).ToList();
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user