Department.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace app\admin\model;
  3. use app\BaseModel;
  4. class Department extends BaseModel
  5. {
  6. protected $autoWriteTimestamp = true;
  7. protected $createTime = 'created_at';
  8. protected $updateTime = 'updated_at';
  9. //获取指定部门的下级树形结构
  10. public static function getChildrenTree($department_id) {
  11. //查询所有下级部门
  12. $list = self::order('parent_id', 'asc')
  13. ->order('weight', 'desc')
  14. ->select();
  15. $tree = linear_to_tree($list, 'children', 'id', 'parent_id', $department_id);
  16. return $tree;
  17. }
  18. //获取所有下级的ID
  19. public static function getChildrenIds($children) {
  20. $ids = [];
  21. foreach ($children as $value) {
  22. $ids[] = $value['id'];
  23. if (!empty($value['children'])) {
  24. $ids = array_merge($ids, self::getChildrenIds($value['children']));
  25. }
  26. }
  27. return $ids;
  28. }
  29. //获取部门下级的所有客服ID
  30. public static function getDepartmentCsUids($admin_id) {
  31. $department_id = Admin::where('id', $admin_id)->value('department_id');
  32. $parent_department_id = self::where('id', $department_id)->value('parent_id');
  33. $tree = self::getChildrenTree($parent_department_id);
  34. $department_ids = self::getChildrenIds($tree);
  35. $cs_uids = Admin::alias('admin')->join('user', 'admin.id=user.uid','left')
  36. ->whereIn('admin.department_id', $department_ids)
  37. ->where('user.role', '>', 0)
  38. ->column('user.user_id');
  39. return $cs_uids;
  40. }
  41. }