fixed checkout

This commit is contained in:
Edward Yang 2022-07-01 16:13:04 +08:00
parent 3dd229f919
commit 31697c0093
4 changed files with 64 additions and 8 deletions

View File

@ -92,31 +92,31 @@ class PluginRepo
/**
* 获取所有配送方式
*/
public static function getShippingMethods(): array
public static function getShippingMethods()
{
$allPlugins = self::allPlugins();
return $allPlugins->where('type', 'shipping')->filter(function ($item) {
$plugin = (new Manager)->getPlugin($item->code);
if ($plugin) {
$item->plugin = $plugin->toArray();
$item->plugin = $plugin;
}
return $plugin && $plugin->getEnabled();
})->toArray();
});
}
/**
* 获取所有支付方式
*/
public static function getPaymentMethods(): array
public static function getPaymentMethods()
{
$allPlugins = self::allPlugins();
return $allPlugins->where('type', 'payment')->filter(function ($item) {
$plugin = (new Manager)->getPlugin($item->code);
if ($plugin) {
$item->plugin = $plugin->toArray();
$item->plugin = $plugin;
}
return $plugin && $plugin->getEnabled();
})->toArray();
});
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Beike\Shop\Http\Resources\Checkout;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class PaymentMethodItem extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param Request $request
* @return array
*/
public function toArray($request): array
{
$pluginSetting = $this->plugin;
return [
'type' => $this->type,
'code' => $this->code,
'name' => $pluginSetting->name,
'description' => $pluginSetting->description,
'icon' => $pluginSetting->icon,
];
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Beike\Shop\Http\Resources\Checkout;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class ShippingMethodItem extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param Request $request
* @return array
*/
public function toArray($request): array
{
$pluginSetting = $this->plugin;
return [
'type' => $this->type,
'code' => $this->code,
'name' => $pluginSetting->name,
'description' => $pluginSetting->description,
'icon' => $pluginSetting->icon,
];
}
}

View File

@ -15,6 +15,8 @@ use Beike\Repositories\AddressRepo;
use Beike\Repositories\PluginRepo;
use Beike\Repositories\SettingRepo;
use Beike\Repositories\CountryRepo;
use Beike\Shop\Http\Resources\Checkout\PaymentMethodItem;
use Beike\Shop\Http\Resources\Checkout\ShippingMethodItem;
class CheckoutService
{
@ -23,8 +25,8 @@ class CheckoutService
$customer = current_customer();
$addresses = AddressRepo::listByCustomer(current_customer());
$shipments = PluginRepo::getShippingMethods();
$payments = PluginRepo::getPaymentMethods();
$shipments = ShippingMethodItem::collection(PluginRepo::getShippingMethods())->jsonSerialize();
$payments = PaymentMethodItem::collection(PluginRepo::getPaymentMethods())->jsonSerialize();
$cartList = CartService::list($customer, true);
$carts = CartService::reloadData($cartList);