BAS_PRService岗位和角色服务:

  1. public class BAS_PRService
  2. {
  3. //岗位
  4. private IRepository<BAS_Post> irepositorypost;
  5. //角色
  6. private IRepository<BAS_Role> irepositoryrole;
  7. //岗位和角色
  8. private IRepository<BAS_PR> irepositorypr;
  9.  
  10. BAS_PR bas_pr;
  11.  
  12. public BAS_PRService(IRepository<BAS_Post> irepositorypost,
  13. IRepository<BAS_Role> irepositoryrole,
  14. IRepository<BAS_PR> irepositorypr)
  15. {
  16. this.irepositorypost = irepositorypost;
  17. this.irepositoryrole = irepositoryrole;
  18. this.irepositorypr = irepositorypr;
  19.  
  20. bas_pr = new BAS_PR(irepositorypr);
  21. }
  22.  
  23. /// <summary>
  24. /// 将多个岗位添加到角色中
  25. /// </summary>
  26. /// <param name="postnames"></param>
  27. /// <param name="rolename"></param>
  28. public void CreateBAS_PR(string[] postnames,string rolename)
  29. {
  30. var listpost = new List<BAS_Post>();
  31. for(int i=0;i<postnames.Length;i++)
  32. {
  33. var post =
  34. irepositorypost.GetByCondition(p => p.Name == postnames[i], p => true)
  35. .SingleOrDefault();
  36. listpost.Add(post);
  37. }
  38.  
  39. var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault();
  40. bas_pr.CreateBAS_PR(listpost, role);
  41. }
  42.  
  43. /// <summary>
  44. /// 根据岗位名获取PR信息
  45. /// </summary>
  46. /// <param name="postname"></param>
  47. /// <returns></returns>
  48. public List<BAS_PR> GetPRSByPostName(string postname)
  49. {
  50. var post = irepositorypost.GetByCondition(p => p.Name == postname, p => true).
  51. SingleOrDefault();
  52. return bas_pr.GetPRSByPost(post);
  53. }
  54. /// <summary>
  55. /// 根据角色名获取PR信息
  56. /// </summary>
  57. /// <param name="rolename"></param>
  58. /// <returns></returns>
  59. public List<BAS_PR> GetPRSByRoleName(string rolename)
  60. {
  61. var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true)
  62. .SingleOrDefault();
  63. return bas_pr.GetPRSByRole(role);
  64. }
  65. }

在基础机构层DDD.Infrastructure添加SessionHelper的帮助类:

  1. public class SessionHelper
  2. {
  3. /// <summary>
  4. /// 添加 Session
  5. /// </summary>
  6. /// <param name="strsessionname"></param>
  7. /// <param name="strvalue"></param>
  8. public static void AddSession(string strsessionname,string strvalue)
  9. {
  10. HttpContext.Current.Session[strsessionname] = strvalue;
  11. HttpContext.Current.Session.Timeout = 600;
  12. }
  13. /// <summary>
  14. /// 添加多个Session值
  15. /// </summary>
  16. /// <param name="strsessioinname"></param>
  17. /// <param name="strvalues"></param>
  18. public static void AddSession(string strsessioinname,string[] strvalues)
  19. {
  20. HttpContext.Current.Session[strsessioinname] = strvalues;
  21. HttpContext.Current.Session.Timeout = 600;
  22. }
  23. /// <summary>
  24. /// 得到Session的值
  25. /// </summary>
  26. /// <param name="strsessionname"></param>
  27. /// <returns></returns>
  28. public static string[] Gets(string strsessionname)
  29. {
  30. if (HttpContext.Current.Session[strsessionname] == null)
  31. return null;
  32. return (string[])HttpContext.Current.Session[strsessionname];
  33. }
  34. }

在工程DDD.Domain.DomainService中新建:BAS_RoleService服务类:

  1. public class BAS_RoleService
  2. {
  3. //角色
  4. private IRepository<BAS_Role> irepositoryrole;
  5. //用户角色
  6. private IRepository<BAS_User> irepositoryuser;
  7. //部门
  8. private IRepository<BAS_Department> irepositorydepartment;
  9. //岗位
  10. private IRepository<BAS_Post> irepositorypost;
  11. //标识容器
  12. private IRepository<BAS_IdentityContianer> irepositoryidentitycontainer;
  13. //角色和用户
  14. private IRepository<BAS_UR> irepositoryur;
  15. //角色和部门
  16. private IRepository<BAS_DR> irepositorydr;
  17. //角色和岗位
  18. private IRepository<BAS_PR> irepositorypr;
  19.  
  20. BAS_Role bas_role;
  21.  
  22. //构造函数
  23. public BAS_RoleService(IRepository<BAS_Role> irepositoryrole,
  24. IRepository<BAS_User> irepositoryuser,
  25. IRepository<BAS_Department> irepositorydepartment,
  26. IRepository<BAS_Post> irepositorypost,
  27. IRepository<BAS_IdentityContianer> irepositoryidentitycontainer,
  28. IRepository<BAS_UR> irepositoryur,
  29. IRepository<BAS_DR> irepositorydr,
  30. IRepository<BAS_PR> irepositorypr)
  31. {
  32. this.irepositoryrole = irepositoryrole;
  33. this.irepositoryidentitycontainer = irepositoryidentitycontainer;
  34. this.irepositoryuser = irepositoryuser;
  35. this.irepositorydepartment = irepositorydepartment;
  36. this.irepositorypost = irepositorypost;
  37. this.irepositoryur = irepositoryur;
  38. this.irepositorydr = irepositorydr;
  39. this.irepositorypr = irepositorypr;
  40.  
  41. bas_role = new BAS_Role(irepositoryrole);
  42. }
  43.  
  44. /// <summary>
  45. /// 创建角色
  46. /// </summary>
  47. /// <param name="name"></param>
  48. /// <param name="description"></param>
  49. public void CreateRole(string name,string description)
  50. {
  51. var con_id = Guid.NewGuid();
  52. bas_role.CreateRole(name, description, con_id);
  53.  
  54. var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontainer);
  55. bas_identitycontainer.CreateIdentityContainer(con_id);
  56. }
  57.  
  58. /// <summary>
  59. /// 将多个用户添加到角色
  60. /// </summary>
  61. /// <param name="usernos"></param>
  62. /// <param name="rolename"></param>
  63. public void AddUserToRole(List<string> usernos,string rolename)
  64. {
  65. var role = bas_role.GetRoleByName(rolename);
  66. var users = new List<BAS_User>();
  67. foreach(var userno in usernos)
  68. {
  69. var user = new BAS_User(irepositoryuser).GetUserByNo(userno);
  70. users.Add(user);
  71. }
  72. new BAS_UR(irepositoryur).CreateBAS_UR(users, role);
  73. }
  74.  
  75. /// <summary>
  76. /// 将多个部门添加到角色
  77. /// </summary>
  78. /// <param name="departmentnames"></param>
  79. /// <param name="rolename"></param>
  80. public void AddDepartmentToRole(List<string> departmentnames,string rolename)
  81. {
  82. var role = bas_role.GetRoleByName(rolename);
  83. var departments = new List<BAS_Department>();
  84. foreach(var departmentname in departmentnames)
  85. {
  86. var department = new BAS_Department(irepositorydepartment).GetDepartmentByName(departmentname);
  87. departments.Add(department);
  88. }
  89.  
  90. new BAS_DR(irepositorydr).CreateBAS_DR(departments, role);
  91. }
  92.  
  93. /// <summary>
  94. /// 将多个岗位添加到角色
  95. /// </summary>
  96. /// <param name="postnames"></param>
  97. /// <param name="rolename"></param>
  98. public void AddPostToRole(List<string> postnames,string rolename)
  99. {
  100. var role = bas_role.GetRoleByName(rolename);
  101. var posts = new List<BAS_Post>();
  102. foreach(var postname in postnames)
  103. {
  104. var post = new BAS_Post(irepositorypost).GetPostByName(postname);
  105. posts.Add(post);
  106. }
  107.  
  108. new BAS_PR(irepositorypr).CreateBAS_PR(posts, role);
  109. }
  110.  
  111. /// <summary>
  112. /// 根据用户NO获取用户所属角色
  113. /// </summary>
  114. /// <param name="no"></param>
  115. /// <returns></returns>
  116. public List<BAS_Role> GetRoleByUserNo(string no)
  117. {
  118. var urs =
  119. new BAS_URService(irepositoryuser, irepositoryrole, irepositoryur)
  120. .GetURSByUserNo(no);
  121. var roles = new List<BAS_Role>();
  122. foreach(var ur in urs)
  123. {
  124. var role =
  125. irepositoryrole.GetByCondition(p => p.Id == ur.BAS_Role.Id, p => true).SingleOrDefault();
  126. roles.Add(role);
  127. }
  128. return roles;
  129. }
  130. /// <summary>
  131. /// 用户是否在一个角色中
  132. /// </summary>
  133. /// <param name="no"></param>
  134. /// <param name="rolename"></param>
  135. /// <returns></returns>
  136. public bool IsRoleContainUser(string no,string rolename)
  137. {
  138. return GetRoleByUserNo(no).Contains(bas_role.GetRoleByName(rolename));
  139. }
  140.  
  141. /// <summary>
  142. /// 根据部门名获取所属的角色
  143. /// </summary>
  144. /// <param name="departmentname"></param>
  145. /// <returns></returns>
  146. public List<BAS_Role > GetRoleByDepartmentName(string departmentname)
  147. {
  148. var drs =
  149. new BAS_DRService(irepositorydepartment, irepositoryrole, irepositorydr)
  150. .GetDRSByDepartmentName(departmentname);
  151. var roles = new List<BAS_Role>();
  152. foreach(var dr in drs)
  153. {
  154. var role =
  155. irepositoryrole.GetByCondition(p => p.Id == dr.BAS_Role.Id, p => true)
  156. .SingleOrDefault();
  157. roles.Add(role);
  158. }
  159.  
  160. return roles;
  161. }
  162. /// <summary>
  163. /// 某一个部门是否在一个角色中
  164. /// </summary>
  165. /// <param name="departmentname"></param>
  166. /// <param name="rolename"></param>
  167. /// <returns></returns>
  168. public bool IsRoleContainDepartment(string departmentname,string rolename)
  169. {
  170. return GetRoleByDepartmentName(departmentname).Contains(bas_role.GetRoleByName(rolename));
  171. }
  172.  
  173. /// <summary>
  174. /// 根据岗位名获取所属角色信息
  175. /// </summary>
  176. /// <param name="postname"></param>
  177. /// <returns></returns>
  178. public List<BAS_Role> GetRoleByPostName(string postname)
  179. {
  180. var prs =
  181. new BAS_PRService(irepositorypost, irepositoryrole, irepositorypr)
  182. .GetPRSByPostName(postname);
  183. var roles = new List<BAS_Role>();
  184. foreach(var pr in prs)
  185. {
  186. var role =
  187. irepositoryrole.GetByCondition(p => p.Id == pr.BAS_Role.Id, p => true)
  188. .SingleOrDefault();
  189. roles.Add(role);
  190. }
  191. return roles;
  192. }
  193. /// <summary>
  194. /// 判断岗位是否在角色中
  195. /// </summary>
  196. /// <param name="postname"></param>
  197. /// <param name="rolename"></param>
  198. /// <returns></returns>
  199. public bool IsRoleContainPost(string postname,string rolename)
  200. {
  201. return GetRoleByPostName(postname).Contains(bas_role.GetRoleByName(rolename));
  202. }
  203. }

  创建DomainService服务类:

  1. public class BAS_UserService
  2. {
  3. //用户仓储
  4. private IRepository<BAS_User> irepositoryuser;
  5. //标识容器
  6. private IRepository<BAS_IdentityContianer> irepositoryidentitycontainer;
  7. //角色
  8. private IRepository<BAS_Role> irepositoryrole;
  9. //部门信息
  10. private IRepository<BAS_Department> irepositorydepartment;
  11. //岗位信息
  12. private IRepository<BAS_Post> irepositorypost;
  13. //用户角色
  14. private IRepository<BAS_UR> irepositoryur;
  15. //用户对应的岗位
  16. private IRepository<BAS_UDPSet> irepositoryudp;
  17. //部门对应的角色
  18. private IRepository<BAS_DR> irepositorydr;
  19. //岗位对应的角色
  20. private IRepository<BAS_PR> irepositorypr;
  21.  
  22. BAS_User bas_user;
  23.  
  24. public BAS_UserService(IRepository<BAS_User> irepositoryuser,
  25. IRepository<BAS_IdentityContianer> irepositoryidentitycontainer,
  26. IRepository<BAS_Role> irepositoryrole,
  27. IRepository<BAS_Department> irepositorydepartment,
  28. IRepository<BAS_Post> irepositorypost,
  29. IRepository<BAS_UR> irepositoryur,
  30. IRepository<BAS_UDPSet> irepositoryudp,
  31. IRepository<BAS_DR> irepositorydr,
  32. IRepository<BAS_PR> irepositorypr)
  33. {
  34. this.irepositoryuser = irepositoryuser;
  35. this.irepositoryrole = irepositoryrole;
  36. this.irepositorydepartment = irepositorydepartment;
  37. this.irepositorypost = irepositorypost;
  38. this.irepositoryidentitycontainer = irepositoryidentitycontainer;
  39. this.irepositoryur = irepositoryur;
  40. this.irepositoryudp = irepositoryudp;
  41. this.irepositorydr = irepositorydr;
  42. this.irepositorypr = irepositorypr;
  43.  
  44. bas_user = new BAS_User(irepositoryuser);
  45. }
  46.  
  47. /// <summary>
  48. /// 创建用户
  49. /// </summary>
  50. /// <param name="no"></param>
  51. /// <param name="name"></param>
  52. /// <param name="mobile"></param>
  53. /// <param name="password"></param>
  54. public void CreateUser(string no,string name,string mobile,string password)
  55. {
  56. var con_id = Guid.NewGuid();
  57. bas_user.CreateUser(no, name, mobile, con_id,password);
  58.  
  59. var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontainer);
  60. bas_identitycontainer.CreateIdentityContainer(con_id);
  61.  
  62. }
  63. /// <summary>
  64. /// 用户登录
  65. /// </summary>
  66. /// <param name="no"></param>
  67. /// <param name="password"></param>
  68. /// <returns></returns>
  69. public bool UserLogin(string no,string password)
  70. {
  71. //用户登录验证
  72. var loginresult = bas_user.LoginVerify(no, password);
  73.  
  74. if(loginresult)
  75. {
  76. SessionHelper.AddSession("UserNo", no);
  77. var conids = GetUserAllCon_Id(no);
  78. var sconids = new string[conids.Count];
  79. for(int i=0;i<conids.Count;i++)
  80. {
  81. sconids[i] = conids[i].ToString();
  82. }
  83. SessionHelper.AddSession("UserConId", sconids);
  84. }
  85. return loginresult;
  86. }
  87. /// <summary>
  88. /// 得到用户的所有ID
  89. /// </summary>
  90. /// <param name="no"></param>
  91. /// <returns></returns>
  92. private List<Guid> GetUserAllCon_Id(string no)
  93. {
  94. var userallcon_ids = new List<Guid>();
  95. //获取用户自身的Con_id
  96. userallcon_ids.Add(bas_user.GetUserByNo(no).Con_Id);
  97.  
  98. // 获取用户所属角色的Con_id
  99. var roleservice = new BAS_RoleService(irepositoryrole, irepositoryuser,
  100. irepositorydepartment, irepositorypost, irepositoryidentitycontainer, irepositoryur,
  101. irepositorydr, irepositorypr);
  102. //获取用户所属的角色
  103. var userroles = roleservice.GetRoleByUserNo(no);
  104. userallcon_ids.AddRange(userroles.Select(p => p.Con_Id));
  105. //获取用户所属的部门
  106. var departmentservice = new BAS_DepartmentService(irepositorydepartment,
  107. irepositoryidentitycontainer, irepositoryudp, irepositoryuser);
  108. var userdepartments = departmentservice.GetDepartmentByUserNo(no);
  109. userallcon_ids.AddRange(userdepartments.Select(p => p.Con_Id));
  110. //获取部门所属的角色
  111. foreach(var userdepartment in userdepartments)
  112. {
  113. var roles = roleservice.GetRoleByDepartmentName(userdepartment.Name);
  114. userallcon_ids.AddRange(roles.Select(p => p.Con_Id));
  115. }
  116. //获取用户所属的岗位
  117. var postservice = new BAS_PostService(irepositorypost, irepositoryidentitycontainer,
  118. irepositoryuser, irepositoryudp);
  119. var userposts = postservice.GetPostsByUserNO(no);
  120. userallcon_ids.AddRange(userposts.Select(p => p.Con_Id));
  121.  
  122. foreach (var post in userposts)
  123. {
  124. var roles = roleservice.GetRoleByPostName(post.Name);
  125. userallcon_ids.AddRange(roles.Select(p => p.Con_Id));
  126. }
  127.  
  128. return userallcon_ids;
  129. }
  130. }

添加应用层的服务:DDD.Application工程  (DepartmentAppService)

  1. public class DepartmentAppService
  2. {
  3. IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext))
  4. as IRepositoryContext;
  5. //部门仓储
  6. IRepository<BAS_Department> departmentrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Department>))
  7. as IRepository<BAS_Department>;
  8. //标识容器仓储
  9. IRepository<BAS_IdentityContianer> identitycontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_IdentityContianer>))
  10. as IRepository<BAS_IdentityContianer>;
  11. //用户岗位部门仓储
  12. IRepository<BAS_UDPSet> udprepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_UDPSet>))
  13. as IRepository<BAS_UDPSet>;
  14. //用户仓储
  15. IRepository<BAS_User> userrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_User>))
  16. as IRepository<BAS_User>;
  17.  
  18. //调用领域服务
  19. BAS_DepartmentService departmentservice;
  20. BAS_Department bas_department;
  21.  
  22. //构造函数
  23. public DepartmentAppService()
  24. {
  25. departmentservice = new BAS_DepartmentService(departmentrepository,
  26. identitycontainerrepository, udprepository, userrepository);
  27. bas_department = new BAS_Department(departmentrepository);
  28. }
  29.  
  30. /// <summary>
  31. /// 部门创建
  32. /// </summary>
  33. /// <param name="name"></param>
  34. /// <param name="description"></param>
  35. public void CreateDepartment(string name,string description)
  36. {
  37. departmentservice.CreateDepartment(name, description);
  38. context.Commit();
  39. }
  40.  
  41. /// <summary>
  42. /// 根据部门名获取部门信息
  43. /// </summary>
  44. /// <param name="name"></param>
  45. /// <returns></returns>
  46. public BAS_Department GetDepartmentByName(string name)
  47. {
  48. return bas_department.GetDepartmentByName(name);
  49. }
  50.  
  51. }

PostAppService应用层服务:

  1. public class PostAppService
  2. {
  3. IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext))
  4. as IRepositoryContext;
  5. IRepository<BAS_Post> postrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Post>))
  6. as IRepository<BAS_Post>;
  7. IRepository<BAS_IdentityContianer> identitycontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_IdentityContianer>))
  8. as IRepository<BAS_IdentityContianer>;
  9. IRepository<BAS_User> userrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_User>))
  10. as IRepository<BAS_User>;
  11. IRepository<BAS_UDPSet> udprepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_UDPSet>))
  12. as IRepository<BAS_UDPSet>;
  13.  
  14. BAS_PostService postservice;
  15. BAS_Post bas_post;
  16.  
  17. public PostAppService()
  18. {
  19. postservice = new BAS_PostService(postrepository, identitycontainerrepository, userrepository,
  20. udprepository);
  21. bas_post = new BAS_Post(postrepository);
  22. }
  23.  
  24. /// <summary>
  25. /// 岗位创建
  26. /// </summary>
  27. /// <param name="name"></param>
  28. /// <param name="description"></param>
  29. public void CreatePost(string name,string description)
  30. {
  31. postservice.CreatePost(name, description);
  32. context.Commit();
  33. }
  34. /// <summary>
  35. /// 根据岗位名返回岗位对象
  36. /// </summary>
  37. /// <param name="name"></param>
  38. /// <returns></returns>
  39. public BAS_Post GetPostByName(string name)
  40. {
  41. return bas_post.GetPostByName(name);
  42. }
  43. }

添加RoleAppService应用层的服务:

  1. public class RoleAppService
  2. {
  3. IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext))
  4. as IRepositoryContext;
  5. IRepository<BAS_Department> departmentrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Department>))
  6. as IRepository<BAS_Department>;
  7. IRepository<BAS_IdentityContianer> identitycontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_IdentityContianer>))
  8. as IRepository<BAS_IdentityContianer>;
  9. IRepository<BAS_Role> rolerepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Role>))
  10. as IRepository<BAS_Role>;
  11. IRepository<BAS_User> userrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_User>))
  12. as IRepository<BAS_User>;
  13. IRepository<BAS_Post> postrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Post>))
  14. as IRepository<BAS_Post>;
  15. IRepository<BAS_UR> urrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_UR>))
  16. as IRepository<BAS_UR>;
  17. IRepository<BAS_DR> drrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_DR>))
  18. as IRepository<BAS_DR>;
  19. IRepository<BAS_PR> prrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PR>))
  20. as IRepository<BAS_PR>;
  21.  
  22. BAS_RoleService roleserivice;
  23. BAS_Role bas_role;
  24. public RoleAppService()
  25. {
  26. roleserivice =
  27. new BAS_RoleService(rolerepository, userrepository, departmentrepository,
  28. postrepository, identitycontainerrepository, urrepository,
  29. drrepository, prrepository);
  30. bas_role = new BAS_Role(rolerepository);
  31. }
  32.  
  33. /// <summary>
  34. /// 角色创建
  35. /// </summary>
  36. /// <param name="name"></param>
  37. /// <param name="description"></param>
  38. public void CreateRole(string name,string description)
  39. {
  40. roleserivice.CreateRole(name, description);
  41. context.Commit();
  42. }
  43. /// <summary>
  44. /// 根据角色名返回角色
  45. /// </summary>
  46. /// <param name="name"></param>
  47. /// <returns></returns>
  48. public BAS_Role GetRoleByName(string name)
  49. {
  50. return bas_role.GetRoleByName(name);
  51. }
  52.  
  53. /// <summary>
  54. /// 添加用户到角色
  55. /// </summary>
  56. /// <param name="usernos"></param>
  57. /// <param name="rolename"></param>
  58. public void AddUserToRole(string [] usernos,string rolename)
  59. {
  60. roleserivice.AddUserToRole(usernos.ToList(), rolename);
  61. context.Commit();
  62. }
  63.  
  64. /// <summary>
  65. /// 添加部门到角色
  66. /// </summary>
  67. /// <param name="departmentnames"></param>
  68. /// <param name="rolename"></param>
  69. public void AddDepartmentToRole(string [] departmentnames,string rolename)
  70. {
  71. roleserivice.AddDepartmentToRole(departmentnames.ToList(), rolename);
  72. context.Commit();
  73. }
  74.  
  75. /// <summary>
  76. /// 添加岗位到角色
  77. /// </summary>
  78. /// <param name="postnames"></param>
  79. /// <param name="rolename"></param>
  80. public void AddPostToRole(string [] postnames,string rolename)
  81. {
  82. roleserivice.AddPostToRole(postnames.ToList(), rolename);
  83. context.Commit();
  84. }
  85.  
  86. /// <summary>
  87. /// 角色是否包含某个用户
  88. /// </summary>
  89. /// <param name="userno"></param>
  90. /// <param name="rolename"></param>
  91. /// <returns></returns>
  92. public bool IsRoleContainUser(string userno,string rolename)
  93. {
  94. return roleserivice.IsRoleContainUser(userno, rolename);
  95. }
  96. /// <summary>
  97. /// 角色是否包含某个部门
  98. /// </summary>
  99. /// <param name="departmentname"></param>
  100. /// <param name="rolename"></param>
  101. /// <returns></returns>
  102. public bool IsRoleContainDepartment(string departmentname,string rolename)
  103. {
  104. return roleserivice.IsRoleContainDepartment(departmentname, rolename);
  105. }
  106. /// <summary>
  107. /// 角色是否包含某个岗位
  108. /// </summary>
  109. /// <param name="postname"></param>
  110. /// <param name="rolename"></param>
  111. /// <returns></returns>
  112. public bool IsRoleContainPost(string postname,string rolename)
  113. {
  114. return roleserivice.IsRoleContainPost(postname, rolename);
  115. }
  116. }

UserAppService应用层的服务:

  1. public class UserAppService
  2. {
  3. IRepositoryContext context = ServiecLocator.Instance.GetService(typeof(IRepositoryContext))
  4. as IRepositoryContext;
  5. IRepository<BAS_Department> departmentrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Department>))
  6. as IRepository<BAS_Department>;
  7. IRepository<BAS_IdentityContianer> identitycontainerrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_IdentityContianer>))
  8. as IRepository<BAS_IdentityContianer>;
  9. IRepository<BAS_Role> rolerepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Role>))
  10. as IRepository<BAS_Role>;
  11. IRepository<BAS_User> userrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_User>))
  12. as IRepository<BAS_User>;
  13. IRepository<BAS_Post> postrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_Post>))
  14. as IRepository<BAS_Post>;
  15. IRepository<BAS_UR> urrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_UR>))
  16. as IRepository<BAS_UR>;
  17. IRepository<BAS_DR> drrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_DR>))
  18. as IRepository<BAS_DR>;
  19. IRepository<BAS_PR> prrepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_PR>))
  20. as IRepository<BAS_PR>;
  21. IRepository<BAS_UDPSet> udprepository = ServiecLocator.Instance.GetService(typeof(IRepository<BAS_UDPSet>))
  22. as IRepository<BAS_UDPSet>;
  23.  
  24. BAS_UserService bas_userservice;
  25. BAS_User bas_user;
  26. BAS_UDPService udpservice;
  27.  
  28. public UserAppService()
  29. {
  30. bas_userservice =
  31. new BAS_UserService(userrepository, identitycontainerrepository, rolerepository,
  32. departmentrepository, postrepository, urrepository, udprepository, drrepository, prrepository);
  33. bas_user = new BAS_User(userrepository);
  34. udpservice = new BAS_UDPService(udprepository, userrepository, departmentrepository,
  35. postrepository);
  36. }
  37.  
  38. /// <summary>
  39. /// 用户创建
  40. /// </summary>
  41. /// <param name="no"></param>
  42. /// <param name="name"></param>
  43. /// <param name="mobile"></param>
  44. /// <param name="password"></param>
  45. public void CreateUser(string no,string name,string mobile,string password)
  46. {
  47. bas_userservice.CreateUser(no, name, mobile, password);
  48. context.Commit();
  49. }
  50. /// <summary>
  51. /// 根据用户NO获取用户对象
  52. /// </summary>
  53. /// <param name="no"></param>
  54. /// <returns></returns>
  55. public BAS_User GetUserByNo(string no)
  56. {
  57. return bas_user.GetUserByNo(no);
  58. }
  59. /// <summary>
  60. /// 将用户添加到部门与岗位
  61. /// </summary>
  62. /// <param name="userno"></param>
  63. /// <param name="departmentname"></param>
  64. /// <param name="postname"></param>
  65. /// <param name="ismain"></param>
  66. public void CreateDepartmentPostToUser(string userno,string departmentname,string postname
  67. ,bool ismain)
  68. {
  69. udpservice.CreateDepartmentPostToUser(userno, departmentname, postname, ismain);
  70. context.Commit();
  71. }
  72. /// <summary>
  73. /// 根据部门,用户与岗位信息获取三者连接信息
  74. /// </summary>
  75. /// <param name="departmentname"></param>
  76. /// <param name="userno"></param>
  77. /// <param name="postname"></param>
  78. /// <returns></returns>
  79. public List<BAS_UDPSet> GetUDPByDepartmentUserPost(string departmentname,string userno,
  80. string postname)
  81. {
  82. return udpservice.GetUdpByDepartment(departmentname)
  83. .Concat(udpservice.GetUdpByPost(postname)).Concat
  84. (udpservice.GetUdpByUser(userno)).ToList();
  85. }
  86. }

如何在T4模板中生成同一个上下文:

  1. 添加一下代码:
    public partial class SalesOrdersModelContainer : DbContext

添加WebApp连接数据库的配置:

  1. <connectionStrings>
  2. <add name="SalesOrdersModelContainer"
    connectionString=
    "metadata=res://*/SalesOrdersModel.csdl|res://*/SalesOrdersModel.ssdl|
    res://*/SalesOrdersModel.msl|res://*/PermissionModel.csdl|res://*/PermissionModel.ssdl|res://*/PermissionModel.msl;
    provider=System.Data.SqlClient;
    provider connection string="data source=localhost;initial catalog=SalesOrderDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
    providerName="System.Data.EntityClient" />
  3. </connectionStrings>

单元测试代码:

  1. namespace DDD.UnitTest
  2. {
  3. [TestClass]
  4. public class PermissionTest
  5. {
  6. [TestMethod]
  7. public void CreateUser()
  8. {
  9. UserAppService userappservice =
  10. new UserAppService();
  11. userappservice.CreateUser("10", "孙", "1359333", "pass");
  12. Assert.IsNotNull(userappservice.GetUserByNo("10"));
  13. }
  14.  
  15. [TestMethod]
  16. public void CreateDepartment()
  17. {
  18. DepartmentAppService departmentservice =
  19. new DepartmentAppService();
  20. departmentservice.CreateDepartment("财务中心", "进行财务核算与管理");
  21. Assert.IsNotNull(departmentservice.GetDepartmentByName("财务中心"));
  22. }
  23.  
  24. [TestMethod]
  25. public void CreatePost()
  26. {
  27. PostAppService postservice = new PostAppService();
  28. postservice.CreatePost("高级会计师", "高级会计师");
  29. Assert.IsNotNull(postservice.GetPostByName("高级会计师"));
  30. }
  31.  
  32. [TestMethod]
  33. public void CreateDepartmentPostToUser()
  34. {
  35. UserAppService userservice = new UserAppService();
  36. userservice.CreateDepartmentPostToUser("10", "财务中心", "高级会计师", true);
  37. Assert.IsNotNull(userservice.GetUDPByDepartmentUserPost("财务中心", "10", "高级会计师"));
  38. }
  39.  
  40. [TestMethod]
  41. public void CreateRole()
  42. {
  43. RoleAppService roleservice =
  44. new RoleAppService();
  45. roleservice.CreateRole("角色1", "具有某些权限的角色");
  46. Assert.IsNotNull(roleservice.GetRoleByName("角色1"));
  47. }
  48.  
  49. [TestMethod]
  50. public void AddUserToRole()
  51. {
  52. RoleAppService roleservice = new RoleAppService();
  53. string[] usernos = new string[1];
  54. usernos[0] = "10";
  55. roleservice.AddUserToRole(usernos, "角色1");
  56. Assert.IsTrue(roleservice.IsRoleContainUser("10", "角色1"));
  57. }
  58.  
  59. [TestMethod]
  60. public void AddDepartmentToRole()
  61. {
  62. RoleAppService roleservice = new RoleAppService();
  63. string[] departmentnames = new string[1];
  64. departmentnames[0] = "财务中心";
  65. roleservice.AddDepartmentToRole(departmentnames, "角色1");
  66. Assert.IsTrue(roleservice.IsRoleContainDepartment("财务中心", "角色1"));
  67. }
  68.  
  69. [TestMethod]
  70. public void AddPostToRole()
  71. {
  72. RoleAppService roleservice = new RoleAppService();
  73. string[] postnames = new string[1];
  74. postnames[0] = "高级会计师";
  75. roleservice.AddPostToRole(postnames, "角色1");
  76. Assert.IsTrue(roleservice.IsRoleContainPost("高级会计师", "角色1"));
  77. }
  78. }
  79. }

DDD领域模型数据访问权限之用户权限(十)的更多相关文章

  1. DDD领域模型数据访问权限之权限(十二)

    实现权限的领域对象:BAS_Permission public partial class BAS_Permission:AggreateRoot { private IRepository<B ...

  2. DDD领域模型数据访问权限(九)

    权限分为:数据权限和功能权限 数据权限: 查询提供附加表达式的支持: //提供附加表达式的支持 List<TAggreateRoot> GetByCondition(Expression& ...

  3. DDD领域模型数据访问之对象(十一)

    在工程DDD.Domain中文件夹ModelPermission新建类:BAS_Object public partial class BAS_Obejct:AggreateRoot { //仓储接口 ...

  4. windows service(system权限)创建用户权限进程

    windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到. 通常桌面系统explorer的权限是User权限,即 ...

  5. Zookeeper Acl权限 超级用户权限 怎么跳过ACL密码/账户验证

    Zookeeper的一个节点不知道什么原因无法删除了,查看日志发现是没有权限, 我们之前使用ACL进行Zookeeper节点的权限管理. 可以解决以下三种但不限于以下三种问题: 1.在设置Acl权限时 ...

  6. Vue-Access-Control:前端用户权限控制解决方案

    原文地址:http://refined-x.com/2017/11/28/Vue2.0用户权限控制解决方案/ Vue-Access-Control是一套基于Vue/Vue-Router/axios 实 ...

  7. hive的用户和用户权限

    HiverServer2支持远程多客户端的并发和认证,支持通过JDBC.Beeline等连接操作.hive默认的Derby数据库,由于是内嵌的文件数据库,只支持一个用户的操作访问,支持多用户需用mys ...

  8. Mysql数据库用户及用户权限管理,Navicat设置用户权限

    Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...

  9. mongodb副本集用户权限设置

     mongodb副本集用户权限设置  用户权限参考文章 一:先看看MongoDB中用户的角色说明 read :   数据库的只读权限,包括: aggregate,checkShardingIndex, ...

随机推荐

  1. 设计模式---单一职责模式之桥模式(Bridge)

    一:概念 Bridge模式又叫做桥接模式,其实基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任他的主要特点是吧抽象与行为实现分离开来,从而可以保持各部分的独立性以及一对 ...

  2. CSS实现文字竖排排版

    CSS实现文字竖排 注意: writing-mode: vertical-rl;存在兼容性问题,在IE上正常,在谷歌的低版本上可能识别不了. 如果文字少的话考虑直接在每一个文字中间加一个<br& ...

  3. CM记录-Hbase启用安全认证控制

    1.cm-cluster2-HBase-2-HBase 安全授权(hbase.security.authorization)-simple改为true 2.添加配置 1)超级用户-加入root.hba ...

  4. Hadoop记录-hadoop介绍

    1.hadoop是什么? Hadoop 是Apache基金会下一个开源的大数据分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构. ...

  5. ELF文件解析(二):ELF header详解

    上一篇讲了ELF文件的总体布局,以及section和segment的概念.按照计划,今天继续讲 ELF header. 讲新的内容之前,先更正一个错误:上一篇中讲section header tabl ...

  6. js 拖拽 碰撞 + 重力 运动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Extmail 批量添加邮箱用户

    Extmail  设置批量添加邮箱用户 需要修改  userctl.pl  文件 修改 userctl.pl 文件 cd /var/www/extsuite/extman/tools 编辑 userc ...

  8. pyqt5的使用目录

    pyqt5的安装 我的第一个例子 标签控件QLabel的使用   按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板  QObject 定时器  QWidget类-坐标系 ...

  9. Window上,启动Tomcat服务之后,关闭启动窗口,服务器也随之关闭

    在Window环境上,启动Tomcat服务器之后,随手关闭启动窗口,服务器也随之关闭了. 现在想要的效果是,当关闭启动窗口后,服务器仍然运行. 1. 开始:运行cmd,进入doc命令行 tomcat安 ...

  10. 浏览器调用接口发现Provisional headers are shown

    一次请求时候报错 无论如何也找不到错误,后台接口和前端请求都是正确的.后来发现是 自己浏览器上装了广告拦截的插件 把我这个请求给拦截 果断卸载插件立马就好了.