Zhouzhendong 4 лет назад
Родитель
Сommit
30bfbef771

+ 9 - 28
app/Http/Controllers/UserController.php

@@ -63,11 +63,6 @@ class UserController extends Controller
         return view('maintenance.user.index',compact('users','owners'));
     }
 
-    /**
-     * Show the form for creating a new resource.
-     *
-     * @return Response
-     */
     public function create()
     {
         if(!Gate::allows('用户-录入')){ return redirect(url('/'));  }
@@ -98,12 +93,6 @@ class UserController extends Controller
         ]);
     }
 
-    /**
-     * Show the form for editing the specified resource.
-     *
-     * @param User $user
-     * @return Response
-     */
     public function edit(User $user)
     {
         if(!Gate::allows('用户-编辑')){ return redirect(url('/'));  }
@@ -131,13 +120,6 @@ class UserController extends Controller
         return view('maintenance.user.edit',compact('user','rolesAll','roles','logistics','logisticUser','userWorkgroups','userWorkgroup','suppliers','supplierUser','workGroup','workGroups','ownerGroup','ownerGroups'));
     }
 
-    /**
-     * Update the specified resource in storage.
-     *
-     * @param Request $request
-     * @param User $user
-     * @return Response
-     */
     public function update(Request $request, User $user)
     {
 
@@ -179,29 +161,28 @@ class UserController extends Controller
             UserDetail::query()->where('user_id',$user->id) ->update(['mobile_phone'=>$phone]);
         }
 
+        // 货主
+        $ownerIds = [];
         //工作组
         $work_id = [];
         $treeData = $request->input('treeData')??[];
         foreach ($treeData as $v){
             if (strrpos($v,'g') === 0) array_push($work_id, mb_substr($v,1));
         }
-        if ($work_id)$user->workGroups()->sync($work_id);
+        if ($work_id){
+            $user->workGroups()->sync($work_id);
+        }
         //项目组
         $owners = $request->input('ownerGroup')??'';
-        if ($owners)$user->ownerGroups()->sync($owners);
-
+        if ($owners){
+            $user->ownerGroups()->sync($owners);
+        }
+        app("UserService")->bindOwner($work_id, $owners, $user);
         app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         app("UserService")->clearUserCache($user);
         return redirect('maintenance/user/')->with('successTip',"成功修改用户“{$user['name']}”!");
     }
 
-    /**
-     * Remove the specified resource from storage.
-     *
-     * @param User $user
-     * @return array|Response
-     * @throws Exception
-     */
     public function destroy(User $user)
     {
         if(!Gate::allows('用户-删除')){ return redirect(url('/'));  }

+ 10 - 0
app/Services/ObligationService.php

@@ -7,6 +7,7 @@ use App\Owner;
 use App\Traits\ServiceAppAop;
 use App\Obligation;
 use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
 
 class ObligationService
 {
@@ -152,4 +153,13 @@ class ObligationService
         }
         return Owner::query()->with('departmentObligationOwner')->find($param['id']);
     }
+
+    public function getObligationUnderOwner($ids):array
+    {
+        if (!$ids || count($ids) == 0){
+            return [];
+        }
+        return DB::table("department_obligation_owner")->select("owner_id")->whereIn("obligation_id",$ids)
+            ->groupBy("owner_id")->pluck("owner_id")->toArray();
+    }
 }

+ 6 - 0
app/Services/OwnerService.php

@@ -624,4 +624,10 @@ sql;
         }
         return $owners;
     }
+
+    public function getOwnerGroupUnderOwner($ids):array
+    {
+        return Owner::query()->select("id")->whereIn("user_owner_group_id",$ids)
+            ->pluck("id")->toArray();
+    }
 }

+ 1 - 0
app/Services/UserOwnerGroupService.php

@@ -5,6 +5,7 @@ namespace App\Services;
 
 use App\UserOwnerGroup;
 use App\Traits\ServiceAppAop;
+use Illuminate\Support\Facades\DB;
 
 
 class UserOwnerGroupService

+ 18 - 0
app/Services/UserService.php

@@ -208,4 +208,22 @@ class UserService
         $user->load("owners:id");
         return array_column($user->owners->toArray(),"id");
     }
+
+    public function bindOwner($workGroupIds, $ownerGroupIds, User $user){
+        $ownerIds = [];
+        if ($workGroupIds){
+            $ownerIds = app("ObligationService")->getObligationUnderOwner($workGroupIds);
+        }
+        if ($ownerGroupIds){
+            $ownerIds = array_merge($ownerIds, app("OwnerService")->getOwnerGroupUnderOwner($ownerGroupIds));
+        }
+        $user->loadMissing("owners:id");
+        if ($user->owners){
+            foreach ($user->owners as $owner){
+                $ownerIds[] = $owner->id;
+            }
+        }
+        $ownerIds = array_unique($ownerIds);
+        $user->owners()->sync($ownerIds);
+    }
 }