6
0
Fork 0

优化购物车商品数据结构

release
李静 2021-12-10 13:40:00 +08:00
parent 5c6b2c2b01
commit 74f4283a65
3 changed files with 22 additions and 40 deletions

View File

@ -1,28 +0,0 @@
<?php
namespace App\Endpoint\Api\Http\Resources\ProductSku;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductSkuShoppingCartResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'cover' => (string) $this->cover,
'sell_price' => $this->sell_price,
'vip_price' => (string) $this->vip_price,
'specs' => array_values((array) $this->specs),
'stock' => (int) $this->saleable_stock,
'is_online' => $this->isOnline(),
];
}
}

View File

@ -2,7 +2,6 @@
namespace App\Endpoint\Api\Http\Resources;
use App\Endpoint\Api\Http\Resources\ProductSku\ProductSkuShoppingCartResource;
use Illuminate\Http\Resources\Json\JsonResource;
class ShoppingCartItemResource extends JsonResource
@ -17,7 +16,27 @@ class ShoppingCartItemResource extends JsonResource
{
return [
'id' => $this->id,
'sku' => ProductSkuShoppingCartResource::make($this->whenLoaded('sku')),
'sku' => $this->when($this->relationLoaded('sku') && $this->sku, function () {
return [
'id' => $this->sku->id,
'name' => $this->sku->name,
'cover' => (string) $this->sku->cover,
'sell_price' => $this->sku->sell_price,
'vip_price' => (string) $this->sku->vip_price,
'specs' => array_values((array) $this->sku->specs),
'stock' => (int) $this->sku->saleable_stock,
'is_online' => $this->sku->isOnline(),
];
}, [
'id' => $this->id,
'name' => $this->name,
'cover' => (string) $this->cover,
'sell_price' => $this->sell_price,
'vip_price' => (string) $this->vip_price,
'specs' => array_values((array) $this->specs),
'stock' => 0,
'is_online' => false,
]),
'quantity' => $this->quantity,
];
}

View File

@ -33,15 +33,6 @@ class ShoppingCartItem extends Model
*/
public function sku()
{
return $this->belongsTo(ProductSku::class)->withDefault(function ($sku, $item) {
$sku->id = $item->sku_id;
$sku->name = $item->name;
$sku->cover = $item->cover;
$sku->sell_price = $item->sell_price;
$sku->vip_price = $item->vip_price;
$sku->specs = $item->specs;
$sku->stock = 0;
$sku->release_at = null;
});
return $this->belongsTo(ProductSku::class);
}
}