ddd 访问权限_DDD领域模型数据访问权限(九)

权限分为:数据权限和功能权限

数据权限:

查询提供附加表达式的支持:

//提供附加表达式的支持

List GetByCondition(Expression> condition,

Expression> definecondition);

//返回聚合根分页的方法

List GetByConditionPages(Expression> condition,

Expression> definecondition,

RequestPage request, out int totalcount);

List GetByConditionPages(List condition,

Expression> definecondition,

RequestPage request, out int totalcount);

List GetByCondition(Expression> condition,

Expression> definecondition);

List GetByConditionPages(Expression> condition,

Expression> definecondition,

RequestPage request, out int totalcount);

List GetByConditionPages(List condition,

Expression> definecondition,

RequestPage request, out int totalcount);

不需要查询条件的写法:

var query = orderdbcontext.Set().Where(condition.And(definecondition));

在工程DDD.Domain新建文件夹ModelPermission: BAS_Department类

public partial class BAS_Department:AggreateRoot

{

private IRepository irepository;

public BAS_Department(IRepository irepository)

{

this.irepository = irepository;

}

///

/// 创建部门对象

///

///

///

///

public void CreateDepartment(string name,string description,Guid con_id)

{

var bas_department = new BAS_Department();

bas_department.Id = base.Id;

bas_department.Name = name;

bas_department.Description = description;

bas_department.Con_Id = con_id;

irepository.Create(bas_department);

}

///

/// 根据部门名称返回部门对象

///

///

///

public BAS_Department GetDepartmentByName(string name)

{

return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();

}

}

BAS_DR类:

public partial class BAS_DR:AggreateRoot

{

private IRepository irepository;

public BAS_DR(IRepository irepository)

{

this.irepository = irepository;

}

public BAS_DR() { }

///

/// 创建DR对象,将多个部门添加到角色中

///

///

///

public void CreateBAS_DR(List departments,BAS_Role role)

{

foreach(var department in departments)

{

var bas_dr = new BAS_DR();

bas_dr.Id = base.Id;

bas_dr.BAS_Department = department;

bas_dr.BAS_Role = role;

irepository.Create(bas_dr);

}

}

///

/// 根据部门对象获取对应的DR信息

///

///

///

public List GetDRSByDepartment(BAS_Department department)

{

return irepository.GetByCondition(p => p.BAS_Department.Id == department.Id,p=>true);

}

///

/// 根据角色对象获取对应的DR信息

///

///

///

public List GetDRSByRole(BAS_Role role)

{

return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);

}

}

}

BAS_IdentityContainer类:

public partial class BAS_IdentityContianer:AggreateRoot

{

private IRepository irepository;

public BAS_IdentityContianer(IRepository irepository)

{

this.irepository = irepository;

}

///

/// 创建标识容器对象

///

///

public void CreateIdentityContainer(Guid con_id)

{

var bas_identitycontainer = new BAS_IdentityContianer();

bas_identitycontainer.Id = con_id;

irepository.Create(bas_identitycontainer);

}

}

BAS_Post类:

public partial class BAS_Post:AggreateRoot

{

private IRepository irepository;

public BAS_Post(IRepository irepository)

{

this.irepository = irepository;

}

///

/// 创建岗位对象

///

///

///

///

public void CreatePost(string name,string description,Guid con_id)

{

var bas_post = new BAS_Post();

bas_post.Id = base.Id;

bas_post.Name = name;

bas_post.Description = description;

bas_post.Con_Id = con_id;

irepository.Create(bas_post);

}

///

/// 根据岗位名返回岗位对象

///

///

///

public BAS_Post GetPostByName(string name)

{

return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();

}

}

BAS_PR类:

public partial class BAS_PR:AggreateRoot

{

public IRepository irepository;

public BAS_PR(IRepository irepository)

{

this.irepository = irepository;

}

public BAS_PR() { }

///

/// 创建PR对象,将多个岗位添加到角色中

///

///

///

public void CreateBAS_PR(List posts,BAS_Role role)

{

foreach(var post in posts)

{

var bas_pr = new BAS_PR();

bas_pr.Id = base.Id;

bas_pr.BAS_Post = post;

bas_pr.BAS_Role = role;

irepository.Create(bas_pr);

}

}

///

/// 根据岗位对象获取PR信息

///

///

///

public List GetPRSByPost(BAS_Post post)

{

return irepository.GetByCondition(p => p.BAS_Post.Id == post.Id, p => true);

}

///

/// 根据角色对象获取PR信息

///

///

///

public List GetPRSByRole(BAS_Role role)

{

return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);

}

}

BAS_Role类:

public partial class BAS_Role:AggreateRoot

{

private IRepository irepository;

public BAS_Role(IRepository irepository)

{

this.irepository = irepository;

}

///

/// 创建角色对象

///

///

///

///

public void CreateRole(string name,string description,Guid con_id)

{

var bas_role = new BAS_Role();

bas_role.Id = base.Id;

bas_role.Name = name;

bas_role.Description = description;

bas_role.Con_Id = con_id;

irepository.Create(bas_role);

}

///

/// 根据角色名返回角色对象

///

///

///

public BAS_Role GetRoleByName(string name)

{

return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();

}

}

}

BAS_UDPSet类:

public partial class BAS_UDPSet:AggreateRoot

{

private IRepository irepository;

public BAS_UDPSet(IRepository irepository)

{

this.irepository = irepository;

}

public BAS_UDPSet() { }

///

/// 创建UDP对象,将用户添加到某个部门某个岗位

///

///

///

///

/// 是否为主部门主岗位

public void CreateDepartmentPostToUser(BAS_User user,BAS_Department department,

BAS_Post post,bool ismain)

{

var udp = new BAS_UDPSet();

udp.Id = base.Id;

udp.BAS_Department = department;

udp.BAS_Post = post;

udp.BAS_User = user;

udp.IsMain = ismain;

irepository.Create(udp);

}

///

/// 根据部门获取对应的UDP信息

///

///

///

public List GetUDPByDepartment(BAS_Department department)

{

return irepository.GetByCondition(p => p.BAS_Department.Id == department.Id,

p => true);

}

///

/// 根据用户获取对应的UDP信息

///

///

///

public List GetUDPByUser(BAS_User user)

{

return irepository.GetByCondition(p => p.BAS_User.Id == user.Id, p => true);

}

///

/// 根据岗位获取对应的UDP信息

///

///

///

public List GetUDPByPost(BAS_Post post)

{

return irepository.GetByCondition(p => p.BAS_Post.Id == post.Id, p => true);

}

}

BAS_UR类:

public partial class BAS_UR:AggreateRoot

{

private IRepository irepository;

public BAS_UR(IRepository irepository)

{

this.irepository = irepository;

}

public BAS_UR() { }

///

/// 创建UR对象,将多个用户添加到角色中

///

///

///

public void CreateBAS_UR(List users,BAS_Role role)

{

foreach(var user in users)

{

var bas_ur = new BAS_UR();

bas_ur.Id = base.Id;

bas_ur.BAS_User = user;

bas_ur.BAS_Role = role;

irepository.Create(bas_ur);

}

}

///

/// 根据用户对象获取对应的UR信息

///

///

///

public List GetURSByUser(BAS_User user)

{

return irepository.GetByCondition(p => p.BAS_User.Id == user.Id, p => true);

}

public List GetURSByRole(BAS_Role role)

{

return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);

}

}

BAS_User类:

public partial class BAS_User:AggreateRoot

{

private IRepository irepository;

public BAS_User(IRepository irepository)

{

this.irepository = irepository;

}

///

/// 在仓储中创建用户对象

///

///

///

///

///

///

public void CreateUser(string no,string name,string mobile,Guid con_id,string password)

{

BAS_User bas_user = new BAS_User();

bas_user.Id = base.Id;

bas_user.No = no;

bas_user.Name = name;

bas_user.Mobile = mobile;

bas_user.Con_Id = con_id;

var userlogin = new BAS_UserLogin(password);

bas_user.BAS_UserLogin = userlogin;

irepository.Create(bas_user);

}

///

/// 根据用户NO返回用户对象

///

///

///

public BAS_User GetUserByNo(string no)

{

return irepository.GetByCondition(p => p.No == no, p => true).SingleOrDefault();

}

///

/// 用户登录验证

///

///

///

///

public bool LoginVerify(string userno,string password)

{

return irepository.GetByCondition(p => p.No == No && p.BAS_UserLogin.Password == password,

p => true).Count == 1;

}

}

BAS_UserLogin类:

public partial class BAS_UserLogin:ValueObject

{

public BAS_UserLogin(string password)

{

Id = base.Id;

Password = password;

}

}

部门的领域服务:BAS_DepartmentService

public class BAS_DepartmentService

{

private IRepository irepositorydepartment;

private IRepository irepositoryidentitycontainer;

private IRepository irepositoryudp;

private IRepository irepositoryuser;

public BAS_DepartmentService(IRepository irepositorydepartment,

IRepository irepositoryidentitycontainer,

IRepository irepositoryudp,

IRepository irepositoryuser)

{

this.irepositorydepartment = irepositorydepartment;

this.irepositoryidentitycontainer = irepositoryidentitycontainer;

this.irepositoryudp = irepositoryudp;

this.irepositoryuser = irepositoryuser;

}

///

/// 协调创建部门与标识容器对象

///

///

///

public void CreateDepartment(string name,string description)

{

var bas_department = new BAS_Department(irepositorydepartment);

var con_id = Guid.NewGuid();

bas_department.CreateDepartment(name, description, con_id);

var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontainer);

bas_identitycontainer.CreateIdentityContainer(con_id);

}

public List GetDepartmentByUserNo(string no)

{

var udps = new BAS_UDPService(irepositoryudp, irepositoryuser,

irepositorydepartment, null).GetUdpByUser(no);

var departments = new List();

foreach(var udp in udps)

{

var department = irepositorydepartment.GetByCondition(p => p.Id == udp.BAS_Department.Id, p => true).SingleOrDefault();

departments.Add(department);

}

return departments;

}

}

中间服务UDP:BAS_UDPService

public class BAS_UDPService

{

private IRepository irepositoryudp;

private IRepository irepositoryuser;

private IRepository irepositorydepartment;

private IRepository irepositorypost;

BAS_UDPSet udp;

public BAS_UDPService( IRepository irepositoryudp,

IRepository irepositoryuser,

IRepository irepositorydepartment,

IRepository irepositorypost)

{

this.irepositoryudp = irepositoryudp;

this.irepositoryuser = irepositoryuser;

this.irepositorydepartment = irepositorydepartment;

this.irepositorypost = irepositorypost;

udp = new BAS_UDPSet(irepositoryudp);

}

///

/// 将用户添加到部门和岗位

///

///

///

///

///

public void CreateDepartmentPostToUser(string userno,string departmentname,

string postname,bool ismain)

{

var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();

var department = irepositorydepartment.GetByCondition(p => p.Name == departmentname,

p => true).SingleOrDefault();

var post = irepositorypost.GetByCondition(p => p.Name == postname, p => true).SingleOrDefault();

udp.CreateDepartmentPostToUser(user, department, post,ismain);

}

///

/// 根据部门名获取UDP信息

///

///

///

public List GetUdpByDepartment(string departmentname)

{

var department = irepositorydepartment.GetByCondition(

p => p.Name == departmentname, p => true).SingleOrDefault();

return udp.GetUDPByDepartment(department);

}

///

/// 根据用户NO获取UDP信息

///

///

///

public List GetUdpByUser(string userno)

{

var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();

return udp.GetUDPByUser(user);

}

///

/// 根据岗位名获取UDP信息

///

///

///

public List GetUdpByPost(string postname)

{

var post =

irepositorypost.GetByCondition(p => p.Name == postname, p => true).SingleOrDefault();

return udp.GetUDPByPost(post);

}

}

岗位BAS_PostService服务:

public class BAS_PostService

{

private IRepository irepositorypost;

private IRepository irepositoryidentitycontianer;

private IRepository irepositoryuser;

private IRepository irepositoryudp;

public BAS_PostService(IRepository irepositorypost

,IRepository irepositoryidentitycontianer,

IRepository irepositoryuser,

IRepository irepositoryudp)

{

this.irepositorypost = irepositorypost;

this.irepositoryidentitycontianer = irepositoryidentitycontianer;

this.irepositoryuser = irepositoryuser;

this.irepositoryudp = irepositoryudp;

}

///

/// 创建岗位

///

///

///

public void CreatePost(string name,string description)

{

var bas_post = new BAS_Post(irepositorypost);

var con_id = Guid.NewGuid();

bas_post.CreatePost(name, description, con_id);

var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontianer);

bas_identitycontainer.CreateIdentityContainer(con_id);

}

///

/// 通过用户NO获取用户岗位信息

///

///

///

public List GetPostsByUserNO(string no)

{

var udps = new BAS_UDPService(irepositoryudp, irepositoryuser, null, irepositorypost)

.GetUdpByUser(no);

var posts =new List();

foreach(var udp in udps)

{

var post = irepositorypost.GetByCondition(p => p.Id == udp.BAS_Post.Id, p => true)

.SingleOrDefault();

posts.Add(post);

}

return posts;

}

}

BAS_DRService 角色:

public class BAS_DRService

{

private IRepository irepositorydepartment;

private IRepository irepositoryrole;

private IRepository irepositorydr;

BAS_DR bas_dr;

public BAS_DRService(IRepository irepositorydepartment,

IRepository irepositoryrole,

IRepository irepositorydr)

{

this.irepositorydepartment = irepositorydepartment;

this.irepositoryrole = irepositoryrole;

this.irepositorydr = irepositorydr;

bas_dr = new BAS_DR(irepositorydr);

}

///

/// 将多个部门添加到角色中

///

///

///

public void CreateBAS_DR(string [] departmentnames,string rolename)

{

var listdepartment = new List();

for(int i=0;i

{

var department =

irepositorydepartment.GetByCondition(p => p.Name == departmentnames[i]

, p => true).SingleOrDefault();

listdepartment.Add(department);

}

var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault();

bas_dr.CreateBAS_DR(listdepartment, role);

}

///

/// 根据部门名获取DR信息

///

///

///

public List GetDRSByDepartmentName(string departmentname)

{

var department =

irepositorydepartment.GetByCondition(p => p.Name == departmentname, p => true)

.SingleOrDefault();

return bas_dr.GetDRSByDepartment(department);

}

///

/// 根据角色名获取DR信息

///

///

///

public List GetDRSbyRoleName(string rolename)

{

var role =

irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault();

return bas_dr.GetDRSByRole(role);

}

}

多个用户添加到角色BAS_URService:

public class BAS_URService

{

private IRepository irepositoryuser;

private IRepository irepositoryrole;

private IRepository irepositoryur;

BAS_UR bas_ur;

public BAS_URService(IRepository irepositoryuser,

IRepository irepositoryrole,

IRepository irepositoryur)

{

this.irepositoryuser = irepositoryuser;

this.irepositoryrole = irepositoryrole;

this.irepositoryur = irepositoryur;

bas_ur = new BAS_UR(irepositoryur);

}

///

/// 将多个用户添加到角色

///

///

///

public void CreateBAS_UR(string[] usernos,string rolename)

{

var listuser = new List();

for(int i=0;i

{

var user = irepositoryuser.GetByCondition(p => p.No == usernos[i], p => true)

.SingleOrDefault();

listuser.Add(user);

}

var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault();

bas_ur.CreateBAS_UR(listuser, role);

}

///

/// 根据用户No获取UR

///

///

///

public List GetURSByUserNo(string userno)

{

var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();

return bas_ur.GetURSByUser(user);

}

///

/// 根据角色名获取UR

///

///

///

public List GetURsByRoleName(string rolename)

{

var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true)

.SingleOrDefault();

return bas_ur.GetURSByRole(role);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值