实现权限的领域对象:BAS_Permission

 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("产品信息权限", "普通用户权限集"));
}
04-02 15:46