Procházet zdrojové kódy

封装部门用户树

kely před 6 měsíci
rodič
revize
1c9ae73cd2
1 změnil soubory, kde provedl 44 přidání a 5 odebrání
  1. 44 5
      app/Http/Controllers/API/DepartmentController.php

+ 44 - 5
app/Http/Controllers/API/DepartmentController.php

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Department\CreateOrUpdateRequest;
 use App\Http\Resources\API\DepartmentResource;
 use App\Models\Department;
+use App\Models\User;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 
@@ -87,13 +88,51 @@ class DepartmentController extends Controller
     }
 
     public function departmentUserIndex(){
-        $companyId=Auth::user()->company_id;
-        $department=Department::query()->where('company_id',$companyId)->with(['users'=>function($query){
-            $query->select('id','name','department_id');
-        }])->get(['id','name','parent_id']);
+
+        //封装部门
+        $departments=Department::query()->get(['id','name','parent_id'])->each(function ($departments){
+            $departments->new_id='department'.$departments->id;
+            $departments->new_parent_id='department'.$departments->parent_id;
+            $departments->type='department';
+        })->toArray();
+
+        //封装用户
+        $users=User::query()->where('company_id',Auth::user()->company_id)->get(['id','name','department_id'])->each(function ($users){
+            $users->new_id='user'.$users->id;
+            $users->new_parent_id='department'.$users->department_id;
+            $users->type='user';
+        })->toArray();
+        $departmentTree=$this->makeUserTree(array_merge($departments, $users));
+
+
         return $this->success([
-            'data' => make_tree($department->toArray())
+            'data' => $departmentTree
         ]);
 
     }
+
+    protected function makeUserTree(array $departmentUsers, $parentId = 'department0') {
+
+        $tree = [];
+        if (empty($departmentUsers)) {
+            return $tree;
+        }
+
+        $newList = [];
+        foreach ($departmentUsers as $k => $v) {
+            $newList[$v['new_id']] = $v;
+        }
+
+        foreach ($newList as $value) {
+            if ($parentId == $value['new_parent_id']) {
+                $tree[] = &$newList[$value['new_id']];
+            }elseif (isset($newList[$value['new_parent_id']])) {
+                $newList[$value['new_parent_id']]['children'][] = &$newList[$value['new_id']];
+            }
+        }
+
+
+        return $tree;
+    }
+
 }