zoukankan      html  css  js  c++  java
  • DDD领域模型数据访问权限之权限(十二)

    实现权限的领域对象: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("产品信息权限", "普通用户权限集"));
            }
    
    
    
    
  • 相关阅读:
    hdu 1281 棋盘游戏(二分匹配)
    UVA 12545 Bits Equalizer
    算法之匈牙利算法
    I题 hdu 1234 开门人和关门人
    H题 hdu 2520 我是菜鸟,我怕谁
    G题 hdu 1466 计算直线的交点数
    F题 hdu 1431 素数回文
    E题hdu 1425 sort
    D题 hdu 1412 {A} + {B}
    有12个球,外形相同,其中一个小球的质量与其他11个不同,给一个天平,需要几次把这个小球找出来并且求出这个小球是比其他的轻还是重
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/7875172.html
Copyright © 2011-2022 走看看