Department.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\Department as DepartmentModel;
  5. use app\admin\validate\DepartmentValidate;
  6. use app\admin\model\Admin;
  7. use think\facade\Db;
  8. /**
  9. * @apiDefine header
  10. * @apiHeader {String} Authorization Bearer token
  11. */
  12. class Department extends BaseController
  13. {
  14. //获取部门列表
  15. public function list()
  16. {
  17. $params = $this->request->param();
  18. $page = $params['page'] ?? 1;
  19. $limit = $params['limit'] ?? 15;
  20. $where = [];
  21. if (!empty($params['name'])) {
  22. $where[] = ['name', 'like', "%{$params['name']}%"];
  23. }
  24. if (isset($params['status']) ) {
  25. $where[] = ['status', '=',$params['status']];
  26. }
  27. $count = DepartmentModel::where($where)->count();
  28. $list = DepartmentModel::where($where)
  29. ->order('parent_id','asc')
  30. ->order('weight','desc')
  31. ->limit($limit)
  32. ->page($page)
  33. ->select();
  34. return $this->success([
  35. 'list' => $list,
  36. 'count' => $count,
  37. ]);
  38. }
  39. //获取部门树形结构
  40. public function tree()
  41. {
  42. $list = DepartmentModel::where('status', 1)
  43. ->order('parent_id', 'asc')
  44. ->order('weight', 'desc')
  45. ->select();
  46. $list = linear_to_tree($list);
  47. return $this->success($list);
  48. }
  49. //新增或编辑部门
  50. public function update()
  51. {
  52. try {
  53. $params = (new DepartmentValidate)->post()->goCheck('edit');
  54. $id = $this->request->param('id',0);
  55. $name = $params['name'];
  56. $parent_id = $params['parent_id'] ?? 0;
  57. $weight = $params['weight'] ?? 1;
  58. $status = $params['status'] ?? 1;
  59. if ($id) {
  60. $department = DepartmentModel::where('id', $id)->find();
  61. if (!$department) {
  62. return $this->error('部门不存在');
  63. }
  64. } else {
  65. $department = new DepartmentModel();
  66. }
  67. $department->name = $name;
  68. $department->parent_id = $parent_id;
  69. $department->weight = $weight;
  70. $department->status = $status;
  71. $department->remark = $params['remark'] ?? '';
  72. $department->save();
  73. } catch (\Exception $e) {
  74. return $this->error($e->getMessage());
  75. }
  76. return $this->success($department);
  77. }
  78. //设置部门状态
  79. public function setStatus()
  80. {
  81. $params = (new DepartmentValidate)->goCheck('id');
  82. $id = $params['id'];
  83. $department = DepartmentModel::where('id', $id)->find();
  84. if (!$department) {
  85. return $this->error('部门不存在');
  86. }
  87. $department->status = $department->status == 0 ? 1 : 0;
  88. $department->save();
  89. return $this->success($department);
  90. }
  91. public function delete() {
  92. try {
  93. $params = (new DepartmentValidate)->goCheck('id');
  94. $id = $params['id'];
  95. $department = DepartmentModel::where('id', $id)->find();
  96. if (!$department) {
  97. return $this->error('部门不存在');
  98. }
  99. DB::startTrans();
  100. //查询所有下级部门
  101. $tree = DepartmentModel::getChildrenTree($id);
  102. //获取所有下级的ID
  103. $ids = DepartmentModel::getChildrenIds($tree);
  104. $ids[] = $id;
  105. $exists = Admin::whereIn('department_id', $ids)->count();
  106. if ($exists) {
  107. return $this->error('该部门下有用户,不能删除');
  108. }
  109. DepartmentModel::whereIn('id', $ids)->delete();
  110. $department->delete();
  111. DB::commit();
  112. } catch (\Exception $e) {
  113. DB::rollBack();
  114. return $this->error($e->getMessage());
  115. }
  116. return $this->success([], '删除成功');
  117. }
  118. }