mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-11-08 10:24:44 +08:00
统一处理多对多表映射
This commit is contained in:
@@ -11,13 +11,13 @@ namespace OpenAuth.App
|
||||
public class ModuleManagerApp
|
||||
{
|
||||
private IModuleRepository _repository;
|
||||
private IUserModuleRepository _userModuleRepository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public ModuleManagerApp(IModuleRepository repository,
|
||||
IUserModuleRepository userModuleRepository)
|
||||
IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_userModuleRepository = userModuleRepository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -55,7 +55,7 @@ namespace OpenAuth.App
|
||||
}
|
||||
public List<Module> LoadForUser(int userId)
|
||||
{
|
||||
var moduleIds = _userModuleRepository.Find(u => u.UserId == userId).Select(u => u.ModuleId).ToList();
|
||||
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();
|
||||
}
|
||||
@@ -116,8 +116,8 @@ namespace OpenAuth.App
|
||||
|
||||
public void AccessModules(int userId, int[] ids)
|
||||
{
|
||||
_userModuleRepository.DeleteByUser(userId);
|
||||
_userModuleRepository.AddUserModule(userId, ids);
|
||||
_relevanceRepository.DeleteBy("UserModule",userId);
|
||||
_relevanceRepository.AddRelevance("UserModule",ids.ToDictionary(u =>userId));
|
||||
}
|
||||
|
||||
#region 私有方法
|
||||
|
||||
@@ -12,15 +12,15 @@ namespace OpenAuth.App
|
||||
{
|
||||
private IRoleRepository _repository;
|
||||
private IOrgRepository _orgRepository;
|
||||
private IUserRoleRepository _userRoleRepository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public RoleManagerApp(IRoleRepository repository,
|
||||
IOrgRepository orgRepository,
|
||||
IUserRoleRepository userRoleRepository)
|
||||
IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_orgRepository = orgRepository;
|
||||
_userRoleRepository = userRoleRepository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
public int GetRoleCntInOrg(int orgId)
|
||||
@@ -107,8 +107,10 @@ namespace OpenAuth.App
|
||||
foreach (var role in roleIds)
|
||||
{
|
||||
RoleVM rolevm = role;
|
||||
rolevm.IsBelongUser = (_userRoleRepository.FindSingle(u => u.RoleId == role.Id && u.UserId == userId) !=
|
||||
null);
|
||||
rolevm.IsBelongUser = (_relevanceRepository.FindSingle(u => u.SecondId == role.Id
|
||||
&& u.FirstId == userId
|
||||
&& u.Key =="UserRole")
|
||||
!=null);
|
||||
rolevms.Add(rolevm);
|
||||
}
|
||||
return rolevms;
|
||||
@@ -116,8 +118,9 @@ namespace OpenAuth.App
|
||||
|
||||
public void AccessRole(int userId, int[] roleIds)
|
||||
{
|
||||
_userRoleRepository.DeleteByUser(userId);
|
||||
_userRoleRepository.AddUserRole(userId, roleIds);
|
||||
_relevanceRepository.DeleteBy("UserRole", userId);
|
||||
|
||||
_relevanceRepository.AddRelevance("UserRole",roleIds.ToDictionary(roleId => userId));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,12 +11,15 @@ namespace OpenAuth.App
|
||||
{
|
||||
private IUserRepository _repository;
|
||||
private IOrgRepository _orgRepository;
|
||||
private IRelevanceRepository _relevanceRepository;
|
||||
|
||||
public UserManagerApp(IUserRepository repository,
|
||||
IOrgRepository orgRepository)
|
||||
IOrgRepository orgRepository,
|
||||
IRelevanceRepository relevanceRepository)
|
||||
{
|
||||
_repository = repository;
|
||||
_orgRepository = orgRepository;
|
||||
_relevanceRepository = relevanceRepository;
|
||||
}
|
||||
|
||||
public int GetUserCntInOrg(int orgId)
|
||||
@@ -92,7 +95,10 @@ namespace OpenAuth.App
|
||||
|
||||
public void Delete(int id)
|
||||
{
|
||||
_repository.Delete(id);
|
||||
_repository.Delete(u =>u.Id == id);
|
||||
_relevanceRepository.DeleteBy("UserOrg", id);
|
||||
_relevanceRepository.DeleteBy("UserModule", id);
|
||||
_relevanceRepository.DeleteBy("UserRole");
|
||||
}
|
||||
|
||||
public void AddOrUpdate(UserView view)
|
||||
@@ -109,7 +115,8 @@ namespace OpenAuth.App
|
||||
}
|
||||
int[] orgIds = view.OrganizationIds.Split(',').Select(id => int.Parse(id)).ToArray();
|
||||
|
||||
_repository.SetOrg(user.Id, orgIds);
|
||||
_relevanceRepository.DeleteBy("UserOrg", user.Id);
|
||||
_relevanceRepository.AddRelevance("UserOrg", orgIds.ToDictionary(u =>user.Id));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user