SysDeptController.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package cc.iotkit.system.controller;
  2. import cc.iotkit.common.api.PageRequest;
  3. import cc.iotkit.common.api.Request;
  4. import cc.iotkit.common.constant.UserConstants;
  5. import cc.iotkit.common.log.annotation.Log;
  6. import cc.iotkit.common.log.enums.BusinessType;
  7. import cc.iotkit.common.utils.StringUtils;
  8. import cc.iotkit.common.web.core.BaseController;
  9. import cc.iotkit.system.dto.bo.SysDeptBo;
  10. import cc.iotkit.system.dto.vo.SysDeptVo;
  11. import cc.iotkit.system.service.ISysDeptService;
  12. import cn.dev33.satoken.annotation.SaCheckPermission;
  13. import cn.hutool.core.convert.Convert;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.RequiredArgsConstructor;
  16. import org.springframework.validation.annotation.Validated;
  17. import org.springframework.web.bind.annotation.PostMapping;
  18. import org.springframework.web.bind.annotation.RequestBody;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import java.util.List;
  22. /**
  23. * 部门信息
  24. *
  25. * @author Lion Li
  26. */
  27. @Validated
  28. @RequiredArgsConstructor
  29. @RestController
  30. @RequestMapping("/system/dept")
  31. public class SysDeptController extends BaseController {
  32. private final ISysDeptService deptService;
  33. /**
  34. * 获取部门列表
  35. */
  36. @SaCheckPermission("system:dept:list")
  37. @ApiOperation("获取部门列表")
  38. @PostMapping("/list")
  39. public List<SysDeptVo> list(@RequestBody @Validated PageRequest<SysDeptBo> dept) {
  40. return deptService.selectDeptList(dept.getData());
  41. }
  42. /**
  43. * 查询部门列表(排除节点)
  44. */
  45. @ApiOperation("查询部门列表(排除节点)")
  46. @SaCheckPermission("system:dept:list")
  47. @PostMapping("/list/exclude")
  48. public List<SysDeptVo> excludeChild(@Validated @RequestBody Request<Long> request) {
  49. Long deptId = request.getData();
  50. List<SysDeptVo> depts = deptService.selectDeptList(new SysDeptBo());
  51. depts.removeIf(d -> d.getId().equals(deptId)
  52. || StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId)));
  53. return depts;
  54. }
  55. /**
  56. * 根据部门编号获取详细信息
  57. */
  58. @SaCheckPermission("system:dept:query")
  59. @ApiOperation("根据部门编号获取详细信息")
  60. @PostMapping(value = "/getInfo")
  61. public SysDeptVo getInfo(@Validated @RequestBody Request<Long> bo) {
  62. Long deptId = bo.getData();
  63. deptService.checkDeptDataScope(deptId);
  64. return deptService.selectDeptById(deptId);
  65. }
  66. /**
  67. * 新增部门
  68. */
  69. @SaCheckPermission("system:dept:add")
  70. @ApiOperation("新增部门")
  71. @Log(title = "部门管理", businessType = BusinessType.INSERT)
  72. @PostMapping("/add")
  73. public void add(@Validated @RequestBody Request<SysDeptBo> bo) {
  74. SysDeptBo dept = bo.getData();
  75. if (!deptService.checkDeptNameUnique(dept)) {
  76. fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
  77. }
  78. deptService.insertDept(dept);
  79. }
  80. /**
  81. * 修改部门
  82. */
  83. @ApiOperation("修改部门")
  84. @SaCheckPermission("system:dept:edit")
  85. @Log(title = "部门管理", businessType = BusinessType.UPDATE)
  86. @PostMapping("/edit")
  87. public void edit(@Validated @RequestBody Request<SysDeptBo> bo) {
  88. SysDeptBo dept = bo.getData();
  89. Long deptId = dept.getId();
  90. deptService.checkDeptDataScope(deptId);
  91. if (dept.getParentId().equals(deptId)) {
  92. fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
  93. } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
  94. && deptService.selectNormalChildrenDeptById(deptId) > 0) {
  95. fail("该部门包含未停用的子部门!");
  96. }
  97. deptService.updateDept(dept);
  98. }
  99. /**
  100. * 删除部门
  101. */
  102. @SaCheckPermission("system:dept:remove")
  103. @ApiOperation("删除部门")
  104. @Log(title = "部门管理", businessType = BusinessType.DELETE)
  105. @PostMapping("/delete")
  106. public void remove(@Validated @RequestBody Request<Long> bo) {
  107. Long deptId = bo.getData();
  108. if (deptService.hasChildByDeptId(deptId)) {
  109. warn("存在下级部门,不允许删除");
  110. }
  111. if (deptService.checkDeptExistUser(deptId)) {
  112. warn("部门存在用户,不允许删除");
  113. }
  114. deptService.checkDeptDataScope(deptId);
  115. deptService.deleteDeptById(deptId);
  116. }
  117. }