Browse Source

创建project时把创建人添加到项目团队中

kely 11 months ago
parent
commit
0eedb6fe8a
2 changed files with 19 additions and 1 deletions
  1. 14 1
      app/Http/Controllers/API/ProjectController.php
  2. 5 0
      app/ModelFilters/TaskFilter.php

+ 14 - 1
app/Http/Controllers/API/ProjectController.php

@@ -33,6 +33,7 @@ use App\Models\ProjectPlan;
 use App\Models\ProjectRequirement;
 use App\Models\Requirement;
 use App\Models\Task;
+use App\Models\TeamMember;
 use App\Models\User;
 use App\Models\RequirementGroup;
 use App\Repositories\ActionRepository;
@@ -40,6 +41,7 @@ use App\Services\History\ModelChangeDetector;
 use App\Services\Project\ProjectKanbanService;
 use App\Services\Project\ProjectGanttService;
 use App\Services\Project\ProjectTaskGroupViewService;
+use Carbon\Carbon;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
@@ -96,7 +98,8 @@ class ProjectController extends Controller
             'company_id', 'created_by'
         ]);
 
-        $project->fill([
+        DB::transaction(function () use ($request,$project) {
+            $project->fill([
             ...$request->all(),
             'company_id' => Auth::user()->company_id,
             'created_by' => Auth::id(),
@@ -125,6 +128,16 @@ class ProjectController extends Controller
             }
         }
 
+        TeamMember::create([
+            'project_id' => $project->id,
+            'user_id' => Auth::id(),
+            'role' => Auth::user()->role,
+            'limited' => 1,
+            'join_at' => Carbon::now()->toDateString(),
+            'created_by' => Auth::id(),
+        ]);
+    });
+
         return $this->created();
     }
 

+ 5 - 0
app/ModelFilters/TaskFilter.php

@@ -15,6 +15,11 @@ class TaskFilter extends ModelFilter
     */
     public $relations = [];
 
+    public function project(string $project): TaskFilter
+    {
+        return $this->where("project_id", $project);
+    }
+
     public function status(string $status): TaskFilter
     {
         return $this->where("status", $status);