Ver Fonte

项目状态调整

kely há 7 meses atrás
pai
commit
a127a520fb

+ 22 - 0
app/Http/Controllers/API/ProjectController.php

@@ -357,6 +357,28 @@ class ProjectController extends Controller
         return $this->noContent();
     }
 
+
+    public function done(PostponeRequest $request, string $id)
+    {
+        $isAction=true;
+        $project = Project::allowed($id,$isAction)->find($id);
+        if($project===null||is_null($project)){
+            return $this->badRequest('Permission denied or project not found. Please contact the administrator.');
+        };
+
+        $project->status = ProjectStatus::DONE->value;
+        $changes = ModelChangeDetector::detector(ActionObjectType::PROJECT, $project);
+        $project->save();
+
+        ActionRepository::createByProject(
+            $project, ObjectAction::DONE,
+            $request->comment?(new \App\Services\File\ImageUrlService)->interceptImageUrl($request->comment) : null,
+            objectChanges: $changes
+        );
+
+        return $this->noContent();
+    }
+
     public function linkRequirement(LinkRequirementRequest $request, string $id)
     {
         $requirementIds = $request->get("requirement_id",[]);

+ 2 - 0
app/Models/Enums/ProjectStatus.php

@@ -4,6 +4,8 @@ namespace App\Models\Enums;
 
 enum ProjectStatus: string
 {
+    case DESIGN = 'design';//设计
+
     case WAIT = 'wait'; //未开始
 
     case DOING = 'doing'; //进行中

+ 1 - 0
routes/api.php

@@ -159,6 +159,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::patch("project/{project}/closed", [API\ProjectController::class, "closed"])->name("project.closed");
         Route::patch("project/{project}/start", [API\ProjectController::class, "start"])->name("project.start");
         Route::patch("project/{project}/pause", [API\ProjectController::class, "pause"])->name("project.pause");
+        Route::patch("project/{project}/done", [API\ProjectController::class, "done"])->name("project.done");
         Route::patch("project/{project}/postpone", [API\ProjectController::class, "postpone"])
             ->name("project.postpone");
         Route::patch("project/{project}/link-requirement", [API\ProjectController::class, "linkRequirement"])