Browse Source

容器详细支持按版本查看

moell 10 months ago
parent
commit
fca2f65482

+ 3 - 1
app/Http/Controllers/API/ContainerController.php

@@ -87,7 +87,9 @@ class ContainerController extends Controller
      */
     public function show(string $id)
     {
-        $container = Container::query()->allowed()->findOrFail($id);
+        $container = Container::query()->allowed()
+            ->when(\request("version") > 0, fn($query) => $query->where("version", ">=", \request("version")))
+            ->findOrFail($id);
 
         return new ContainerDetailResource($container);
     }

+ 5 - 2
app/Http/Resources/API/ContainerDetailResource.php

@@ -14,18 +14,21 @@ class ContainerDetailResource extends JsonResource
      */
     public function toArray(Request $request): array
     {
+        $content = $this->content($request->get("version", 0))->first();
+
         return [
             'id' => $this->id,
-            'name' => $this->name,
+            'name' => $content?->name,
             'library' => new LibrarySimpleResource($this->library),
             'naming_rule' => new NamingRuleSimpleResource($this->namingRule),
             "mailto"  => $this->mailto,
             "email_subject"  => $this->email_subject,
             "doc_stage"  => $this->doc_stage,
             "doc_type"  => $this->doc_type,
-            "description"  => (new \App\Services\File\ImageUrlService)->getImageUrl($this->description),
+            "description"  => $content?->description ? (new \App\Services\File\ImageUrlService)->getImageUrl($content?->description) : "",
             "acl"  => $this->acl,
             "whitelist"  => $this->whitelist,
+            "version" => $this->version,
             "created_at"  => (string)$this->created_at,
             "created_by" => new UserProfileResource($this->createdBy),
         ];

+ 7 - 0
app/Models/Container.php

@@ -45,4 +45,11 @@ class Container extends Model
     {
         return $this->belongsTo(User::class, 'created_by');
     }
+
+    public function content(int $version = 0): \Illuminate\Database\Eloquent\Relations\HasOne
+    {
+        $version = $version > 0 ? $version : $this->version;
+
+        return $this->hasOne(ContainerContent::class, "container_id")->where("version", $version);
+    }
 }