Browse Source

审批取消、通过、拒绝更新关联文件状态

moell 4 months ago
parent
commit
c8f22eab13

+ 10 - 3
app/Http/Controllers/API/ApprovalController.php

@@ -171,15 +171,22 @@ class ApprovalController extends Controller
             ->first();
         throw_validation_if(! $approval, "The data does not exist or the operation is denied permission.");
 
-        $object = ApprovalObjectType::from($approval->object_type)->modelBuilderAllowed($approval->object_id)->findOrFail($approval->object_id);
+        $approvalObjectType = ApprovalObjectType::from($approval->object_type);
+        $object = $approvalObjectType->modelBuilderAllowed($approval->object_id)->findOrFail($approval->object_id);
 
         $approval->status = ObjectApprovalStatus::CANCELED;
         $approval->save();
 
         ActionRepository::createByApproval($approval, ObjectAction::APPROVED_CANCELED);
 
-        $object->approval_status = ObjectApprovalStatus::CANCELED;
-        $object->save();
+        if ($approvalObjectType == ApprovalObjectType::CONTAINER_FILE) {
+            File::query()->whereIn("id", $approval->sub_object_ids)->update([
+                'approval_status' => ObjectApprovalStatus::WAIT
+            ]);
+        } else {
+            $object->approval_status = ObjectApprovalStatus::CANCELED;
+            $object->save();
+        }
 
         return $this->noContent();
     }

+ 11 - 3
app/Services/Approval/ActionService.php

@@ -8,6 +8,7 @@ use App\Models\Enums\ApprovalObjectType;
 use App\Models\Enums\FileObjectType;
 use App\Models\Enums\ObjectAction;
 use App\Models\Enums\ObjectApprovalStatus;
+use App\Models\File;
 use App\Repositories\ActionRepository;
 use App\Services\File\Upload\FileUploadHelper;
 use Illuminate\Http\UploadedFile;
@@ -56,12 +57,19 @@ class ActionService
 
     protected function changeApprovalObjectStatus(): void
     {
-        $object = ApprovalObjectType::from($this->approval->object_type)
+        $approvalType = ApprovalObjectType::from($this->approval->object_type);
+        $object = $approvalType
             ->modelBuilder()
             ->findOrFail($this->approval->object_id);
 
-        $object->approval_status = $this->approval->status;
-        $object->save();
+        if ($approvalType == ApprovalObjectType::CONTAINER_FILE) {
+            File::query()->whereIn("id", $this->approval->sub_object_ids)->update([
+                'approval_status' => $this->approval->status
+            ]);
+        } else {
+            $object->approval_status = $this->approval->status;
+            $object->save();
+        }
     }
 
     protected function triggerAction (string $comment = null)