This commit is contained in:
2023-03-08 09:16:04 +08:00
commit e78454540f
1318 changed files with 210569 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Activity;
use Illuminate\Http\Resources\Json\JsonResource;
use Jason\Api\Api;
use Modules\Mall\Http\Resources\Api\Category\CategoryBaseResource;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class ActivityBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'activity_id' => $this->id,
'cover' => $this->cover_url,
'title' => $this->title,
'description' => $this->description,
'created_at' => (string)$this->created_at,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Activity;
use App\Api\Resources\BaseCollection;
class ActivityCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($activity) {
return new ActivityBaseResource($activity);
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Activity;
use Illuminate\Http\Resources\Json\JsonResource;
use Jason\Api\Api;
use Modules\Mall\Http\Resources\Api\Category\CategoryBaseResource;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class ActivityResource extends JsonResource
{
public function toArray($request): array
{
return [
'activity_id' => $this->id,
'cover' => $this->cover_url,
'title' => $this->title,
'description' => $this->description,
'content' => $this->content,
'created_at' => $this->created_at->format('Y-m-d'),
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Address;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Mall\Http\Resources\Api\Region\RegionResource;
class AddressResource extends JsonResource
{
public function toArray($request): array
{
return [
'address_id' => $this->id,
'name' => $this->name,
'mobile' => $this->mobile,
'province' => new RegionResource($this->province),
'city' => new RegionResource($this->city),
'district' => new RegionResource($this->district),
'address' => $this->address,
'full_address' => $this->getFullAddress(),
'default' => $this->is_default,
'created_at' => (string) $this->created_at,
'updated_at' => (string) $this->updated_at,
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Banner;
use Illuminate\Http\Resources\Json\JsonResource;
class BannerResource extends JsonResource
{
public function toArray($request): array
{
return [
'title' => $this->title,
'cover' => $this->cover_url,
'url' => $this->linker,
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Category;
use Illuminate\Http\Resources\Json\JsonResource;
class CategoryBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'category_id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Category;
use Illuminate\Http\Resources\Json\JsonResource;
class CategoryResource extends JsonResource
{
public function toArray($request): array
{
return [
'category_id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
'children' => $this->when(!$this->children()->shown()->get()->isEmpty(), function () {
return self::collection($this->children()->shown()->get());
}),
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class BrandResource extends JsonResource
{
public function toArray($request): array
{
return [
'brand_id' => $this->id,
'name' => $this->name,
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class CartResource extends JsonResource
{
public function toArray($request): array
{
return [
'cart_id' => $this->id,
'sku_id' => $this->sku_id,
'goods_id' => $this->sku->goods_id,
'qty' => $this->qty,
'max_qty' => $this->sku->stock,
'price' => (float) $this->sku->price,
'cover' => $this->sku->cover_url,
'name' => $this->sku->goods->name,
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Mall\Models\Goods;
class DetailResource extends JsonResource
{
public function toArray($request): array
{
return [
'cart_id' => $this->id,
'sku_id' => $this->sku_id,
'qty' => $this->qty,
'max_qty' => $this->sku->stock,
'price' => (float) $this->sku->price,
'cover' => ($this->sku->goods->type === Goods::TYPE_SINGLE) ? $this->sku->goods->cover_url : $this->sku->cover_url,
'name' => $this->sku->goods->name,
];
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class GoodsBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'goods_id' => $this->id,
'shop' => new ShopBaseInfoResource($this->shop),
'is_self' => (bool) $this->shop->is_self,
'name' => $this->name,
'description' => $this->description ?? '',
'cover' => $this->cover_url,
'tags' => TagResource::collection($this->tags),
'original_price' => (float) $this->original_price,
'price' => [
'show' => $this->price,
'score' => $this->score,
'price_min' => $this->price_min,
'price_max' => $this->price_max,
],
'clicks' => $this->clicks,
'sales' => $this->sales,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use App\Api\Resources\BaseCollection;
class GoodsCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($goods) {
return new GoodsBaseResource($goods);
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
use Jason\Api\Api;
use Modules\Mall\Http\Resources\Api\Category\CategoryBaseResource;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class GoodsResource extends JsonResource
{
public function toArray($request): array
{
$user = Api::user();
return [
'goods_id' => $this->id,
'shop' => new ShopBaseInfoResource($this->shop),
'brand' => new BrandResource($this->brand),
'category' => new CategoryBaseResource($this->category),
'tags' => TagResource::collection($this->tags),
'type' => $this->type,
'pay_type' => $this->pay_type,
'clicks' => $this->clicks,
'sales' => $this->sales,
'name' => $this->name,
'cover' => $this->cover_url,
'pictures' => $this->pictures_url,
'description' => $this->description ?? '',
'content' => $this->content,
'created_at' => (string) $this->created_at,
'original_price' => (float) $this->original_price,
'price' => [
'show' => $this->price,
'score' => $this->score,
'price_min' => $this->price_min,
'price_max' => $this->price_max,
],
'specs' => SpecResource::collection($this->specs),
'skus' => SkuResource::collection($this->skus),
'canPick' => $user && $user->canPick(),
'hasCase' => $user && (bool) $user->case,
'hasLogin' => (bool) $user,
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class SkuBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'sku_id' => $this->id,
'goods_name' => $this->goods->name,
'cover' => $this->cover_url,
];
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class SkuResource extends JsonResource
{
public function toArray($request): array
{
return [
'sku_id' => $this->id,
'goods_id' => $this->goods_id,
'goods_name' => $this->goods->name,
'cover' => $this->cover_url,
'price' => (float) $this->price,
'score' => (float) $this->score,
'assets' => (float) $this->assets,
'unit' => $this->unit ?? '',
'stock' => $this->stock,
'weight' => $this->weight,
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class SpecResource extends JsonResource
{
public function toArray($request): array
{
return [
'spec_id' => $this->id,
'name' => $this->name,
'values' => SpecValueResource::collection($this->values),
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class SpecValueResource extends JsonResource
{
public function toArray($request): array
{
return [
'value_id' => $this->id,
'value' => $this->value,
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Goods;
use Illuminate\Http\Resources\Json\JsonResource;
class TagResource extends JsonResource
{
public function toArray($request): array
{
return [
'tag_id' => $this->id,
'name' => $this->name,
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class LogisticResource extends JsonResource
{
public function toArray($request): array
{
return [
'time' => $this->time,
'context' => $this->context,
'ftime' => $this->ftime,
'areaName' => $this->areaName ?? "",
'status' => $this->status,
];
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use App\Api\Resources\BaseCollection;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
use Modules\Mall\Models\Order;
class OrderCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($order) {
return [
'order_no' => $order->order_no,
'shop' => new ShopBaseInfoResource($order->shop),
'amount' => $order->amount,
'freight' => $order->freight,
'total' => $order->total,
'type' => $order->type_text,
'state' => $order->state_text,
'can' => $order->getCanAction(),
'is_logistic_show' => $order->is_logistic_show,
'created_at' => (string) $order->created_at,
'items' => OrderItemResource::collection($order->items),
];
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class OrderExpressResource extends JsonResource
{
public function toArray($request): array
{
return [
'express_id' => $this->id,
'name' => $this->name,
'mobile' => $this->mobile,
'express_name' => $this->express_id ? $this->express->name : '',
'express_no' => $this->express_no,
'full_address' => $this->getFullAddress(),
];
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Mall\Http\Resources\Api\Goods\SkuResource;
class OrderItemResource extends JsonResource
{
public function toArray($request): array
{
return [
'item_id' => $this->id,
'qty' => $this->qty,
'price' => $this->price,
'total' => $this->total,
'can' => [
'refund' => $this->canRefund(),
],
'sku' => $this->source,
'refund_status_text' => $this->refund_status_text,
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class OrderLogisticResource extends JsonResource
{
public function toArray($request): array
{
return [
'express_id' => $this->express_id,
'express_no' => $this->express_no,
'order_state' => $this->order->state_text,
'logistic_name' => $this->express->name,
'logistic_cover' => $this->express->cover_url,
'address' => $this->getFullAddress(),
];
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class OrderResource extends JsonResource
{
public function toArray($request): array
{
return [
'order_no' => $this->order_no,
'shop' => new ShopBaseInfoResource($this->shop),
'amount' => $this->amount,
'freight' => $this->freight,
'total' => $this->total,
'type' => $this->type_text,
'state' => $this->state_text,
'can' => $this->getCanAction(),
'is_logistic_show' => $this->is_logistic_show,
'items' => OrderItemResource::collection($this->items),
'express' => new OrderExpressResource($this->express),
'remark' => (string) $this->remark,
'expired_at' => (string) $this->expired_at,
'paid_at' => (string) $this->paid_at,
'created_at' => (string) $this->created_at,
];
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use App\Api\Resources\BaseCollection;
use Modules\Mall\Http\Resources\Api\Shop\ShopBaseInfoResource;
class RefundCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($refund) {
return [
'refund_no' => $refund->refund_no,
'order_no' => $refund->order->order_no,
'shop' => new ShopBaseInfoResource($refund->shop),
'refund_total' => $refund->refund_total,
'actual_total' => $refund->actual_total,
'state' => [
'state' => $refund->state,
'text' => $refund->status_text,
'remark' => $refund->state_text,
],
'can' => collect($refund->transitions())->map(function ($item) {
return $item->getName();
}),
'created_at' => (string) $refund->created_at,
'items' => RefundItemsResource::collection($refund->items),
];
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class RefundItemsResource extends JsonResource
{
public function toArray($request): array
{
return [
'refund_item_id' => $this->id,
'price' => $this->price,
'goods_id' => $this->source ? $this->source['goods_id'] : '',
'cover' => $this->source ? $this->source['cover'] : '',
'goods_name' => $this->source ? $this->source['goods_name'] : '',
'qty' => $this->qty,
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class RefundLogResource extends JsonResource
{
public function toArray($request): array
{
return [
'refund_log_id' => $this->id,
'title' => $this->title,
'remark' => $this->remark,
'state_text' => $this->state_text,
'isMy' => $this->refund->user->is($this->userable),
'created_at' => (string) $this->created_at,
];
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Order;
use Illuminate\Http\Resources\Json\JsonResource;
class RefundResource extends JsonResource
{
public function toArray($request): array
{
return [
'refund_id' => $this->id,
'refund_no' => $this->refund_no,
'order_no' => $this->order->order_no,
'state' => [
'state' => $this->state,
'text' => $this->status_text,
'remark' => $this->state_text,
],
'refund_total' => $this->refund_total,
'actual_total' => $this->actual_total,
'order' => [
'order_id' => $this->order->id,
'order_no' => $this->order->order_no,
'paid_at' => $this->order->paid_at ? $this->order->paid_at->toDateTimeString() : '',
'deliver_at' => $this->order->express->deliver_at ? $this->order->express->deliver_at->toDateTimeString() : '',
'receive_at' => $this->order->express->receive_at ? $this->order->express->receive_at->toDateTimeString() : '',
],
'items' => RefundItemsResource::collection($this->items),
'can' => collect($this->transitions())->map(function ($item) {
return $item->getName();
}),
'log' => new RefundLogResource($this->logs()->oldest()->first()),
'created_at' => $this->created_at->toDateTimeString(),
'updated_at' => $this->updated_at->toDateTimeString(),
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Region;
use Illuminate\Http\Resources\Json\JsonResource;
class RegionResource extends JsonResource
{
public function toArray($request): array
{
return [
'region_id' => $this->id,
'name' => $this->name,
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Shop;
use Illuminate\Http\Resources\Json\JsonResource;
class ExpressResource extends JsonResource
{
public function toArray($request): array
{
return [
'express_id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Shop;
use Illuminate\Http\Resources\Json\JsonResource;
class ShopBaseInfoResource extends JsonResource
{
public function toArray($request): array
{
return [
'shop_id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
'is_self' => (bool) $this->is_self,
];
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Shop;
use App\Api\Resources\BaseCollection;
class ShopCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($shop) {
return [
'shop_id' => $shop->id,
'name' => $shop->name,
'is_self' => (bool) $shop->is_self,
'mobile' => $shop->mobile,
'description' => $shop->description,
'cover' => $shop->cover_url,
];
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Shop;
use Illuminate\Http\Resources\Json\JsonResource;
class ShopEditResource extends JsonResource
{
public function toArray($request): array
{
return [
'shop_id' => $this->id,
'name' => $this->name,
'mobile' => $this->mobile,
'cover' => $this->cover_url,
'description' => $this->description,
'province' => [
'id' => $this->province_id,
'name' => $this->province->name,
],
'city' => [
'id' => $this->city_id,
'name' => $this->city->name,
],
'district' => [
'id' => $this->district_id,
'name' => $this->district->name,
],
'address' => $this->address ?? '',
'created_at' => (string) $this->created_at,
];
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Shop;
use Illuminate\Http\Resources\Json\JsonResource;
class ShopResource extends JsonResource
{
public function toArray($request): array
{
return [
'shop_id' => $this->id,
'name' => $this->name,
'is_self' => (bool) $this->is_self,
'description' => $this->description,
'user' => [
'user_id' => $this->user->id,
'nickname' => $this->user->info->nickname,
'avatar' => $this->user->info->avatar ?? '',
],
'mobile' => $this->mobile,
'cover' => $this->cover_url,
'goodsCount' => $this->goods()->count(),
'region' => [
'province' => $this->province->name,
'city' => $this->city->name,
'district' => $this->district->name,
'address' => $this->address,
],
'created_at' => (string) $this->created_at,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\Mall\Http\Resources\Api\Video;
use Illuminate\Http\Resources\Json\JsonResource;
class VideoResource extends JsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
'path' => $this->path_url,
];
}
}