Browse Source

项目角色冲突的问题

ChenWuJie 4 years ago
parent
commit
9b092f8321

+ 72 - 18
app/Http/Controllers/Admin/ProjectUserController.php

xqd xqd xqd
@@ -6,6 +6,7 @@ use App\Models\Project;
 use App\Models\ProjectRole;
 use App\Models\ProjectUser;
 use App\Models\User;
+use function Couchbase\defaultDecoder;
 use Illuminate\Http\Request;
 
 class ProjectUserController extends BaseController
@@ -83,29 +84,48 @@ class ProjectUserController extends BaseController
         $project_id = $data['project_id'];
         $user_id = $data['user_id'];
         $project_role_id = $data['project_role_id'];
-        //新加的角色是项目经理
-        if ($project_role_id == 4)
+        //查找该用户
+        $project_users = ProjectUser::where('project_id',$project_id)->where('user_id',$user_id)->get()->toArray();
+        //用户在项目中
+        if (count($project_users)!=0)
         {
-            $m_user = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
-            ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->where('user_id',$m_user)->update(['project_role_id'=>3]);
-        }
-        //新加的角色是机电负责人
-        if ($project_role_id == 2)
-        {
-            $s_user = ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->value('user_id');
-            ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->where('user_id',$s_user)->update(['project_role_id'=>1]);
+            if ($project_role_id == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($project_role_id == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            //自己的角色变成项目经理
+                $res = ProjectUser::where('project_id',$project_id)->where('user_id',$user_id)->update(['project_role_id'=>$project_role_id]);
+                if(empty($res)) return back()->withErrors(['sg_error_info' => '更新失败']);
+                return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '更新成功']);
+        }else{
+            // 用户不在项目中
+            if ($project_role_id == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($project_role_id == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            $res = $this->model->create($data);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
         }
-        $this->model->where('user_id', $data['user_id'])->where('project_id',$project_id)->update(['project_role_id'=>$project_role_id]);
-        $res = $this->model->create($data);
-        if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
-        return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
     }
 
     public function edit(Request $request)
     {
         if(empty($request->input('id')) || empty($item = $this->model->find($request->input('id')))) return back()->withErrors(['sg_error_info' => '找不到要编辑的数据']);
         $user_options = (new User())->getOptions();
-        $role_options = (new ProjectRole())->getOptions();
+        $role_options = (new ProjectRole())->getNotLeaderOptions();
         list($model, $model_name, $pre_uri) = array($this->model, $this->model_name, $this->pre_uri);
         return view($this->view_path . 'edit', compact('model', 'model_name', 'pre_uri', 'item', 'user_options', 'role_options'));
     }
@@ -119,9 +139,43 @@ class ProjectUserController extends BaseController
             return back()->withErrors($validator)->withInput();
         }
         $data = $request->input('data');
-        $res = $this->model->where('id', $request->input('id'))->update($data);
-        if(!$res) return back()->withErrors(['sg_error_info' => '数据库保存失败!']);
-        return back()->with(['sg_success_info' => '编辑成功']);
+        $project_id = $request->input('project_id');
+        $project_users = ProjectUser::where('project_id',$project_id)->where('user_id',$data['user_id'])->get()->toArray();
+
+        if (count($project_users)!=0)
+        {
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            //自己的角色变成项目经理
+            $res = ProjectUser::where('project_id',$project_id)->where('user_id',$data['user_id'])->update(['project_role_id'=>$data['project_role_id']]);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '更新失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '更新成功']);
+        }
+        else
+        {
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            $res = $this->model->create($data);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
+        }
+
     }
 
     public function delete(Request $request)

+ 75 - 14
app/Http/Controllers/Admin/ProjectUserRoleController.php

xqd xqd
@@ -81,21 +81,42 @@ class ProjectUserRoleController extends BaseController
         }
         $data = $request->input('data');
         //判断是否一个项目里有同样的用户,如果有的话就替换掉原来的职位
-        if (!empty($data['project_id'])&&!empty($data['project_role_id']))
+
+        $project_users = ProjectUser::where('project_id',$data['project_id'])->where('user_id',$data['user_id'])->get()->toArray();
+        if (count($project_users)!=0)
         {
-            $project_users = ProjectUser::where('project_id',$data['project_id'])->where('user_id',$data['user_id'])->get();
-            if (count($project_users)!=0)
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$data['project_id'])->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
             {
-                $res = ProjectUser::where('project_id',$data['project_id'])
-                    ->where('user_id',$data['user_id'])
-                    ->update(['project_role_id'=>$data['project_role_id']]);
-                if(empty($res)) return back()->withErrors(['sg_error_info' => '更新失败']);
-                return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '更新成功']);
+                $m_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$data['project_id'])->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
             }
+            //自己的角色变成项目经理
+            $res = ProjectUser::where('project_id',$data['project_id'])->where('user_id',$data['user_id'])->update(['project_role_id'=>$data['project_role_id']]);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '更新失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '更新成功']);
         }
-        $res = $this->model->create($data);
-        if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
-        return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
+        else
+        {
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$data['project_id'])->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$data['project_id'])->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            $res = $this->model->create($data);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
+        }
+
     }
 
     public function edit(Request $request)
@@ -116,9 +137,49 @@ class ProjectUserRoleController extends BaseController
             return back()->withErrors($validator)->withInput();
         }
         $data = $request->input('data');
-        $res = $this->model->where('id', $request->input('id'))->update($data);
-        if(!$res) return back()->withErrors(['sg_error_info' => '数据库保存失败!']);
-        return back()->with(['sg_success_info' => '编辑成功']);
+        $user_id = $request->input('user_id');
+        $project_id = $data['project_id'];
+        $project_role_id = $data['project_role_id'];
+
+        $project_users = ProjectUser::where('project_id',$project_id)->where('user_id',$user_id)->get()->toArray();
+
+        if (count($project_users)!=0)
+        {
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            //自己的角色变成项目经理
+            $res = ProjectUser::where('project_id',$project_id)->where('user_id',$user_id)->update(['project_role_id'=>$data['project_role_id']]);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '更新失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '更新成功']);
+        }
+        else
+        {
+            if ($data['project_role_id'] == 4)
+            {
+                //原本的项目经理变成项目副经理
+                $s_user_id = ProjectUser::where('project_id',$project_id)->where('project_role_id',4)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$s_user_id)->update(['project_role_id'=>3]);
+            }else if ($data['project_role_id'] == 2)
+            {
+                $m_user_id = ProjectUser::where('project_id',$data['project_id'])->where('project_role_id',2)->value('user_id');
+                ProjectUser::where('project_id',$project_id)->where('user_id',$m_user_id)->update(['project_role_id'=>1]);
+            }
+            $res = $this->model->create($data);
+            if(empty($res)) return back()->withErrors(['sg_error_info' => '保存失败']);
+            return redirect($this->pre_uri . 'create')->with(['sg_success_info' => '创建成功']);
+        }
+
+//        $res = $this->model->where('id', $request->input('id'))->update($data);
+//        if(!$res) return back()->withErrors(['sg_error_info' => '数据库保存失败!']);
+//        return back()->with(['sg_success_info' => '编辑成功']);
     }
 
     public function delete(Request $request)

+ 2 - 0
resources/views/admin/project-user-roles/edit.blade.php

xqd
@@ -12,7 +12,9 @@
             <form class="layui-form" method="POST" action="{{ $pre_uri . 'update' }}">
 
                 {{ csrf_field() }}
+                {{--@php(dd($item->user_id))--}}
                 <input type="hidden" name="id" value="{{ $item->id }}">
+                <input type="hidden" name="user_id" value="{{ $item->user_id }}">
                 @include('share.layui-form-item', ['type' => 'select', 'name' => 'project_id', 'label' => '项目', 'selected_id' => $item->user_id, 'options' => $project_options])
                 @include('share.layui-form-item', ['type' => 'select', 'name' => 'project_role_id', 'label' => '角色', 'selected_id' => $item->project_role_id, 'options' => $role_options])
                 <div class="layui-form-item">

+ 2 - 1
resources/views/admin/project-user-roles/index.blade.php

xqd xqd
@@ -17,6 +17,7 @@
         <div class="layui-card-body">
             <form class="layui-form" id="sg-search-form">
                 <input type="hidden" name="user_id" value="{{ request('user_id') }}">
+                {{--@php(dd($user->id))--}}
                 {{--<div class="layui-form-item layui-row">--}}
                     {{--<div class="layui-inline">--}}
                         {{--<div class="layui-input-inline">--}}
@@ -107,7 +108,7 @@
                             title: '编辑成员',
                             type: 2,
                             area: ['90%', '90%'],
-                            content: '{{ $pre_uri }}' + 'edit?id=' + data.id,
+                            content: '{{ $pre_uri }}' + 'edit?id=' + data.id+'?user_id='+'{{ request('user_id') }}',
                             end: function () {
                                 top_window.location.reload();
                             }

+ 1 - 0
resources/views/admin/project-users/edit.blade.php

xqd
@@ -13,6 +13,7 @@
 
                 {{ csrf_field() }}
                 <input type="hidden" name="id" value="{{ $item->id }}">
+                <input type="hidden" name="project_id" value="{{ $item->project_id }}">
                 @include('share.layui-form-item', ['type' => 'select', 'name' => 'user_id', 'label' => '用户', 'selected_id' => $item->user_id, 'options' => $user_options])
                 @include('share.layui-form-item', ['type' => 'select', 'name' => 'project_role_id', 'label' => '项目角色', 'selected_id' => $item->project_role_id, 'options' => $role_options])
                 <div class="layui-form-item">

+ 1 - 1
resources/views/admin/project-users/index.blade.php

xqd
@@ -107,7 +107,7 @@
                             title: '编辑成员',
                             type: 2,
                             area: ['90%', '90%'],
-                            content: '{{ $pre_uri }}' + 'edit?id=' + data.id,
+                            content: '{{ $pre_uri }}' + 'edit?id=' + data.id+'&project_id='+data.project,
                             end: function () {
                                 top_window.location.reload();
                             }