SysDeptController.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using Microsoft.AspNetCore.Mvc;
  2. using System.Collections;
  3. using ZR.Model.System;
  4. using ZR.Model.System.Dto;
  5. namespace ZR.Admin.WebApi.Controllers.System
  6. {
  7. /// <summary>
  8. /// 部门
  9. /// </summary>
  10. [Route("system/dept")]
  11. [ApiExplorerSettings(GroupName = "sys")]
  12. public class SysDeptController : BaseController
  13. {
  14. public ISysDeptService DeptService;
  15. public ISysUserService UserService;
  16. public SysDeptController(ISysDeptService deptService
  17. , ISysUserService userService)
  18. {
  19. DeptService = deptService;
  20. UserService = userService;
  21. }
  22. /// <summary>
  23. /// 获取部门列表
  24. /// </summary>
  25. /// <returns></returns>
  26. [ActionPermissionFilter(Permission = "system:dept:list")]
  27. [HttpGet("list")]
  28. public IActionResult List([FromQuery] SysDeptQueryDto dept)
  29. {
  30. return SUCCESS(DeptService.GetList(dept));
  31. }
  32. /// <summary>
  33. /// 查询部门列表(排除节点)
  34. /// </summary>
  35. /// <param name="deptId"></param>
  36. /// <returns></returns>
  37. [HttpGet("list/exclude/{deptId}")]
  38. public IActionResult ExcludeChild(long deptId)
  39. {
  40. var depts = DeptService.GetList(new SysDeptQueryDto());
  41. for (int i = 0; i < depts.Count; i++)
  42. {
  43. SysDeptDto d = depts[i];
  44. long[] deptIds = Tools.SpitLongArrary(d.Ancestors);
  45. if (d.DeptId == deptId || ((IList)deptIds).Contains(deptId))
  46. {
  47. depts.Remove(d);
  48. }
  49. }
  50. return SUCCESS(depts);
  51. }
  52. /// <summary>
  53. /// 获取部门下拉树列表
  54. /// </summary>
  55. /// <param name="dept"></param>
  56. /// <returns></returns>
  57. [HttpGet("treeselect")]
  58. public IActionResult TreeSelect(SysDeptQueryDto dept)
  59. {
  60. var depts = DeptService.GetSysDepts(dept);
  61. return SUCCESS(DeptService.BuildDeptTreeSelect(depts), TIME_FORMAT_FULL);
  62. }
  63. /// <summary>
  64. /// 获取角色部门信息
  65. /// 加载对应角色部门列表树
  66. /// </summary>
  67. /// <param name="roleId"></param>
  68. /// <returns></returns>
  69. [HttpGet("roleDeptTreeselect/{roleId}")]
  70. public IActionResult RoleMenuTreeselect(int roleId)
  71. {
  72. var depts = DeptService.GetSysDepts(new SysDeptQueryDto());
  73. var checkedKeys = DeptService.SelectRoleDepts(roleId);
  74. return SUCCESS(new
  75. {
  76. checkedKeys,
  77. depts = DeptService.BuildDeptTreeSelect(depts),
  78. });
  79. }
  80. /// <summary>
  81. /// 根据部门编号获取详细信息
  82. /// </summary>
  83. /// <returns></returns>
  84. [HttpGet("{deptId}")]
  85. [ActionPermissionFilter(Permission = "system:dept:query")]
  86. public IActionResult GetInfo(long deptId)
  87. {
  88. var info = DeptService.GetFirst(f => f.DeptId == deptId);
  89. return SUCCESS(info);
  90. }
  91. /// <summary>
  92. /// 新增部门
  93. /// </summary>
  94. /// <param name="dept"></param>
  95. /// <returns></returns>
  96. [HttpPost]
  97. [Log(Title = "部门管理", BusinessType = BusinessType.INSERT)]
  98. [ActionPermissionFilter(Permission = "system:dept:add")]
  99. public IActionResult Add([FromBody] SysDept dept)
  100. {
  101. if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept)))
  102. {
  103. return ToResponse(ResultCode.CUSTOM_ERROR, $"新增部门{dept.DeptName}失败,部门名称已存在");
  104. }
  105. dept.Create_by = HttpContext.GetName();
  106. return ToResponse(DeptService.InsertDept(dept));
  107. }
  108. /// <summary>
  109. /// 修改部门
  110. /// </summary>
  111. /// <param name="dept"></param>
  112. /// <returns></returns>
  113. [HttpPut]
  114. [Log(Title = "部门管理", BusinessType = BusinessType.UPDATE)]
  115. [ActionPermissionFilter(Permission = "system:dept:update")]
  116. public IActionResult Update([FromBody] SysDept dept)
  117. {
  118. if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept)))
  119. {
  120. return ToResponse(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,部门名称已存在");
  121. }
  122. else if (dept.ParentId.Equals(dept.DeptId))
  123. {
  124. return ToResponse(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,上级部门不能是自己");
  125. }
  126. dept.Update_by = HttpContext.GetName();
  127. return ToResponse(DeptService.UpdateDept(dept));
  128. }
  129. /// <summary>
  130. /// 删除部门
  131. /// </summary>
  132. /// <returns></returns>
  133. [HttpDelete("{deptId}")]
  134. [ActionPermissionFilter(Permission = "system:dept:remove")]
  135. [Log(Title = "部门管理", BusinessType = BusinessType.DELETE)]
  136. public IActionResult Remove(long deptId)
  137. {
  138. if (DeptService.Queryable().Count(it => it.ParentId == deptId && it.DelFlag == 0) > 0)
  139. {
  140. return ToResponse(ResultCode.CUSTOM_ERROR, $"存在下级部门,不允许删除");
  141. }
  142. if (UserService.Queryable().Count(it => it.DeptId == deptId && it.DelFlag == 0) > 0)
  143. {
  144. return ToResponse(ResultCode.CUSTOM_ERROR, $"部门存在用户,不允许删除");
  145. }
  146. return SUCCESS(DeptService.Delete(deptId));
  147. }
  148. }
  149. }