DDD领域模型数据访问权限之权限(十二)
2017-11-21 20:25
267 查看
实现权限的领域对象:BAS_Permission
权限集合的领域对象:BAS_PermissionSet
权限和权限集合对应的关系:
权限容器服务:
权限服务:BAS_PermissionService
权限和权限集合的服务:BAS_PPSetService
BAS_PermissionSetService:
在DDD.Application 应用服务:PermissionAppService
测试代码:
public partial class BAS_Permission:AggreateRoot { private IRepository<BAS_Permission> irepository; public BAS_Permission(IRepository<BAS_Permission> irepository) { this.irepository = irepository; } /// <summary> /// 创建权限 /// </summary> /// <param name="name"></param> /// <param name="codeproperty">[Name,UnitPrice]</param> /// <param name="operationtype">0</param> /// <param name="value">["Filed":"UntiPrice","Operator":"Equals","Value":"5000"]</param> /// <param name="description"></param> /// <param name="per_id"></param> public void CreatePermission(string name,string codeproperty,OperationType operationtype, string value,string description,Guid per_id) { var bas_permission = new BAS_Permission(); bas_permission.Id = base.Id; bas_permission.Name = name; bas_permission.Description = description; bas_permission.CodeProperty = codeproperty; bas_permission.CodeValue = value; bas_permission.Per_Id = per_id; irepository.Create(bas_permission); } /// <summary> /// 根据权限名获取权限信息 /// </summary> /// <param name="name"></param> /// <returns></returns> public BAS_Permission GetPermissionByName(string name) { return irepository.GetByCondition(p => p.Name == name, p => true) .SingleOrDefault(); } }
权限集合的领域对象:BAS_PermissionSet
public partial class BAS_PermissionSet:AggreateRoot { private IRepository<BAS_PermissionSet> irepository; public BAS_PermissionSet(IRepository<BAS_PermissionSet> irepository) { this.irepository = irepository; } /// <summary> /// 创建权限集对象 /// </summary> /// <param name="name"></param> /// <param name="description"></param> /// <param name="per_id"></param> public void CreatePermissionSet(string name,string description,Guid per_id) { var bas_permissionset = new BAS_PermissionSet(); bas_permissionset.Id = base.Id; bas_permissionset.Name = name; bas_permissionset.Description = description; bas_permissionset.Per_Id = per_id; irepository.Create(bas_permissionset); } /// <summary> /// 根据权限集名获取权限集信息 /// </summary> /// <param name="name"></param> /// <returns></returns> public BAS_PermissionSet GetPermissionSetByName(string name) { return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault(); } }
权限和权限集合对应的关系:
public partial class BAS_PPSet:AggreateRoot { private IRepository<BAS_PPSet> irepository; public BAS_PPSet(IRepository<BAS_PPSet> irepository) { this.irepository = irepository; } public BAS_PPSet() { } /// <summary> /// 添加多个权限到权限集中 /// </summary> /// <param name="permissions"></param> /// <param name="permissionset"></param> public void CreateBAS_PPS(List<BAS_Permission> permissions,BAS_PermissionSet permissionset) { foreach(var permission in permissions) { var bas_ppset = new BAS_PPSet(); bas_ppset.Id = base.Id; bas_ppset.BAS_Permission = permission; bas_ppset.BAS_PermissionSet = permissionset; irepository.Create(bas_ppset); } } /// <summary> /// 根据权限查找PPSET /// </summary> /// <param name="permission"></param> /// <returns></returns> public List<BAS_PPSet> GetppsetByPermission(BAS_Permission permission) { return irepository.GetByCondition(p => p.BAS_Permission.Id == permission.Id, p => true); } /// <summary> /// 根据权限集查找PPSET /// </summary> /// <param name="permission"></param> /// <returns></returns> public List<BAS_PPSet> GetppsetByPermissionSet(BAS_PermissionSet permissionset) { return irepository.GetByCondition(p => p.BAS_PermissionSet.Id == permissionset.Id, p => true); } }
权限容器服务:
public partial class BAS_PermissionConatiner:AggreateRoot { private IRepository<BAS_PermissionConatiner> irepository; public BAS_PermissionConatiner(IRepository<BAS_PermissionConatiner> irepository) { this.irepository = irepository; } public void CreatePermissionContainer(Guid per_id) { var bas_permissioncontainer = new BAS_PermissionConatiner(); bas_permissioncontainer.Id = per_id; irepository.Create(bas_permissioncontainer); } }
权限服务:BAS_PermissionService
public class BAS_PermissionService { private IRepository<BAS_Permission> irepositorypermission; private IRepository<BAS_PermissionConatiner> irepositorypermissioncontainer; public BAS_PermissionService(IRepository<BAS_Permission> irepositorypermission, IRepository<BAS_PermissionConatiner> irepositorypermissioncontainer) { this.irepositorypermission = irepositorypermission; this.irepositorypermissioncontainer = irepositorypermissioncontainer; } /// <summary> /// 创建权限 /// </summary> /// <param name="name"></param> /// <param name="codeproperty"></param> /// <param name="operationtype"></param> /// <param name="value"></param> /// <param name="description"></param> public void CreatePermission(string name,string codeproperty,OperationType operationtype,string value,string description) { var bas_permission = new BAS_Permission(irepositorypermission); var per_id = Guid.NewGuid(); bas_permission.CreatePermission(name, codeproperty, operationtype, value, description, per_id); var bas_permissioncontainer = new BAS_PermissionConatiner(irepositorypermissioncontainer); bas_permissioncontainer.CreatePermissionContainer(per_id); } }
权限和权限集合的服务:BAS_PPSetService
public class BAS_PPSetService { private IRepository<BAS_Permission> irepositorypermission; private IRepository<BAS_PermissionSet> irepositorypermissionset; private IRepository<BAS_PPSet> irepositoryppset; BAS_PPSet bas_ppset; public BAS_PPSetService(IRepository<BAS_Permission> irepositorypermission, IRepository<BAS_PermissionSet> irepositorypermissionset, IRepository<BAS_PPSet> irepositoryppset) { this.irepositorypermission = irepositorypermission; this.irepositorypermissionset = irepositorypermissionset; this.irepositoryppset = irepositoryppset; bas_ppset = new BAS_PPSet(irepositoryppset); } /// <summary> /// 创建多个权限到权限集中 /// </summary> /// <param name="permissionnames"></param> /// <param name="permissionsetname"></param> public void CreateBAS_PPS(string[] permissionnames,string permissionsetname) { var listpermission = new List<BAS_Permission>(); for(int i=0;i<permissionnames.Length;i++) { var permission = irepositorypermission.GetByCondition(p => p.Name == permissionnames[i], p => true).SingleOrDefault(); listpermission.Add(permission); } var permissionset = irepositorypermissionset.GetByCondition(p => p.Name == permissionsetname, p => true).SingleOrDefault(); bas_ppset.CreateBAS_PPS(listpermission, permissionset); } /// <summary> /// 根据权限名获取PPSET /// </summary> /// <param name="permissionname"></param> /// <returns></returns> public List<BAS_PPSet> GEtppsetbyPermissionName(string permissionname) { var permission = irepositorypermission.GetByCondition(p => p.Name == permissionname, p => true) .SingleOrDefault(); return bas_ppset.GetppsetByPermission(permission); } /// <summary> /// 根据权限集名获取PPSET /// </summary> /// <param name="permissionsetname"></param> /// <returns></returns> public List<BAS_PPSet> GEtppsetbyPermissionSetName(string permissionsetname) { var permissionset = irepositorypermissionset.GetByCondition(p => p.Name == permissionsetname, p => true) .SingleOrDefault(); return bas_ppset.GetppsetByPermissionSet(permissionset); } }
BAS_PermissionSetService:
public class BAS_PermissionSetService { private IRepository<BAS_PermissionSet> irepositorypermissionset; private IRepository<BAS_Permission> irepositorypermission; private IRepository<BAS_PPSet> irepositoryppset; private IRepository<BAS_PermissionConatiner> irepositorypermissioncontainer; BAS_PermissionSet bas_permissionset; BAS_PPSet bas_ppset; public BAS_PermissionSetService(IRepository<BAS_PermissionSet> irepositorypermissionset, IRepository<BAS_Permission> irepositorypermission, IRepository<BAS_PPSet> irepositoryppset, IRepository<BAS_PermissionConatiner> irepositorypermissioncontainer) { this.irepositorypermission = irepositorypermission; this.irepositorypermissioncontainer = irepositorypermissioncontainer; this.irepositorypermissionset = irepositorypermissionset; this.irepositoryppset = irepositoryppset; bas_permissionset = new BAS_PermissionSet(irepositorypermissionset); bas_ppset = new BAS_PPSet(irepositoryppset); } /// <summary> /// 创建权限集 /// </summary> /// <param name="name"></param> /// <param name="description"></param> public void CreatePermissionSet(string name,string description) { var per_id = Guid.NewGuid(); bas_permissionset.CreatePermissionSet(name, description, per_id); var permissioncontainer = new BAS_PermissionConatiner(irepositorypermissioncontainer); permissioncontainer.CreatePermissionContainer(per_id); } /// <summary> /// 将多个权限添加到权限集中 /// </summary> /// <param name="permissionnames"></param> /// <param name="permissionsetname"></param> public void AddPermissionToPermissionSet(List<string> permissionnames, string permissionsetname) { var permissionset = bas_permissionset.GetPermissionSetByName(permissionsetname); var permissions =new List<BAS_Permission>(); foreach(var permissionname in permissionnames) { var bas_permission = new BAS_Permission(irepositorypermission); var permission = bas_permission.GetPermissionByName(permissionname); permissions.Add(permission); } bas_ppset.CreateBAS_PPS(permissions, permissionset); } /// <summary> /// 根据权限名获取权限集的信息 /// </summary> /// <param name="permissionname"></param> /// <returns></returns> public List<BAS_PermissionSet> GetPermissionSetByPermissionName(string permissionname) { var ppsets = new BAS_PPSetService(irepositorypermission, irepositorypermissionset, irepositoryppset) .GEtppsetbyPermissionName(permissionname); var listpermissionset = new List<BAS_PermissionSet>(); foreach(var ppset in ppsets) { var permissionset = irepositorypermissionset.GetByCondition (p => p.Id == ppset.BAS_PermissionSet.Id, p => true).SingleOrDefault(); listpermissionset.Add(permissionset); } return listpermissionset; } /// <summary> /// 判断某个权限是否在某个权限集中 /// </summary> /// <param name="permissionname"></param> /// <param name="permissionsetname"></param> /// <returns></returns> public bool IsPermissionSetContainPermission(string permissionname, string permissionsetname) { return GetPermissionSetByPermissionName(permissionname). Contains(bas_permissionset.GetPermissionSetByName(permissionsetname)); } }
在DDD.Application 应用服务:PermissionAppService
public class PermissionAppService { IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext)) as IRepositoryContext; IRepository<BAS_Permission> permissionrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Permission>)) as IRepository<BAS_Permission>; IRepository<BAS_PermissionConatiner> permissioncontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PermissionConatiner>)) as IRepository<BAS_PermissionConatiner>; BAS_PermissionService bas_permissionservice; BAS_Permission bas_permission; public PermissionAppService() { bas_permissionservice = new BAS_PermissionService (permissionrepository, permissioncontainerrepository); bas_permission = new BAS_Permission(permissionrepository); } /// <summary> /// 权限的创建 /// </summary> /// <param name="name"></param> /// <param name="description"></param> /// <param name="codeproperty"></param> /// <param name="codevalue"></param> /// <param name="operationtype"></param> public void CreatePermission(string name,string description,string codeproperty, string codevalue,OperationType operationtype) { bas_permissionservice.CreatePermission(name, codeproperty, operationtype, codevalue, description); context.Commit(); } /// <summary> /// 根据权限名获取权限信息 /// </summary> /// <param name="name"></param> /// <returns></returns> public BAS_Permission GetPermissionByName(string name) { return bas_permission.GetPermissionByName(name); } public void CreatePermission(string v1, string v2, string v3, string v4, object operationType) { throw new NotImplementedException(); } }
PermissionSetAppService
public class PermissionSetAppService{
IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext))
as IRepositoryContext;
IRepository<BAS_Permission> permissionrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Permission>))
as IRepository<BAS_Permission>;
IRepository<BAS_PermissionConatiner> permissioncontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PermissionConatiner>))
as IRepository<BAS_PermissionConatiner>;
IRepository<BAS_PermissionSet> permissionsetrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PermissionSet>))
as IRepository<BAS_PermissionSet>;
IRepository<BAS_PPSet> ppsetrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PPSet>))
as IRepository<BAS_PPSet>;
BAS_PermissionSetService bas_permissionsetservice;
BAS_PermissionSet bas_permissionset;
public PermissionSetAppService()
{
bas_permissionsetservice = new BAS_PermissionSetService(permissionsetrepository,
permissionrepository, ppsetrepository, permissioncontainerrepository);
bas_permissionset = new BAS_PermissionSet(permissionsetrepository);
}
/// <summary>
/// 创建权限集
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
public void CreatePermissionSet(string name,string description)
{
bas_permissionsetservice.CreatePermissionSet(name, description);
context.Commit();
}
/// <summary>
/// 根据权限集名获取权限集信息
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public BAS_PermissionSet GetPermissionSetByName(string name)
{
return bas_permissionset.GetPermissionSetByName(name);
}
/// <summary>
/// 添加多个权限到权限集
/// </summary>
/// <param name="permissionnames"></param>
/// <param name="permissionsetname"></param>
public void AddPermissionToPermissionSet(string[] permissionnames,string
permissionsetname)
{
bas_permissionsetservice.AddPermissionToPermissionSet(permissionnames
.ToList(), permissionsetname);
context.Commit();
}
/// <summary>
/// 判断某个权限是否在某个权限集中
/// </summary>
/// <param name="permissionname"></param>
/// <param name="permissionsetname"></param>
/// <returns></returns>
public bool IsPermissionSetContainpermission(string permissionname,
string permissionsetname)
{
return bas_permissionsetservice.IsPermissionSetContainPermission(permissionname,
permissionsetname);
}
}
测试代码:
[TestMethod] public void AddPermission() { PermissionAppService permissionservice = new PermissionAppService(); permissionservice.CreatePermission("产品信息权限", "代表一个产品权限信息", "[ProductName,UnitPrice]", "[{\"Field\":\"UnitPrice\",\"Operator\":\"Equal\",\"Value\":\"10\",\"Relation\":\"And\"}]", Domain.OperationType.Read); Assert.IsNotNull(permissionservice.GetPermissionByName("产品信息权限")); } [TestMethod] public void AddPermissionSet() { PermissionSetAppService permissionsetservice = new PermissionSetAppService(); permissionsetservice.CreatePermissionSet("普通用户权限集", "代表普通用户的一个权限集"); Assert.IsNotNull(permissionsetservice.GetPermissionSetByName("普通用户权限集")); } [TestMethod] public void AddPermissionToPermissionSet() { PermissionSetAppService permissionsetservice = new PermissionSetAppService(); string[] permissionnames = new string[1]; permissionnames[0] = "产品信息权限"; permissionsetservice.AddPermissionToPermissionSet(permissionnames, "普通用户权限集"); Assert.IsTrue(permissionsetservice.IsPermissionSetContainpermission("产品信息权限", "普通用户权限集")); }
相关文章推荐
- DDD领域模型数据访问权限之用户权限(十)
- DDD领域模型数据访问权限(九)
- DDD领域模型数据访问之对象(十一)
- 贫血模型;DTO:数据传输对象(Data Transfer Object);AutoMapper ;Domain Model(领域模型);DDD(领域驱动设计)
- DDD领域模型之分配权限(十三)
- DDD:谈谈数据模型、领域模型、视图模型和命令模型
- DDD:谈谈数据模型、领域模型、视图模型和命令模型
- DDD:当视图模型、领域模型和数据模型都采用了同样的类型的时候,我们该如何处理?
- DDD:谈谈数据模型、领域模型、视图模型和命令模型
- 关于数据建模(面向ER)和领域模型建模(面向OO)在企业应用中的作用的讨论
- 基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展
- 黄聪:wordpress后台,修改数据表前缀之后显示“您没有足够的权限访问这个页面”的解决方法
- Revit二次开发高级专题讲座:访问Revit模型中的几何数据以及对象间关系判断方法(点击下载)
- spring boot 最佳实践(九)-- 数据访问权限
- oracle ebs应用产品安全性-数据访问权限集
- 用客户端模型访问SharePoint数据
- Jeeplus框架SSM+shiro权限控制中实现跳过登录验证访问接口数据
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)
- 走火入魔.NET权限组件-字段访问权限(数据表字段的访问权限)思想来解决数据列的权限控制需求
- Abp项目中的领域模型实体类访问仓储的方法