From 81da48f7b21ad1fe2a073e25022ed43e3bf7f6a1 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 1 Jul 2022 15:17:21 +0800 Subject: [PATCH] fixed plugin --- .../Http/Controllers/PluginController.php | 2 +- beike/Repositories/PluginRepo.php | 48 ++++++++++++++++--- beike/Repositories/SettingRepo.php | 10 ---- .../Http/Controllers/CheckoutController.php | 1 + beike/Shop/Services/CheckoutService.php | 5 +- 5 files changed, 47 insertions(+), 19 deletions(-) diff --git a/beike/Admin/Http/Controllers/PluginController.php b/beike/Admin/Http/Controllers/PluginController.php index 12334c5a..fb1e344a 100644 --- a/beike/Admin/Http/Controllers/PluginController.php +++ b/beike/Admin/Http/Controllers/PluginController.php @@ -11,10 +11,10 @@ namespace Beike\Admin\Http\Controllers; -use Beike\Repositories\PluginRepo; use Exception; use Beike\Plugin\Manager; use Illuminate\Http\Request; +use Beike\Repositories\PluginRepo; use Beike\Repositories\SettingRepo; use Illuminate\Contracts\View\View; use Beike\Admin\Http\Resources\PluginResource; diff --git a/beike/Repositories/PluginRepo.php b/beike/Repositories/PluginRepo.php index 1facf1e4..eebabe10 100644 --- a/beike/Repositories/PluginRepo.php +++ b/beike/Repositories/PluginRepo.php @@ -12,6 +12,7 @@ namespace Beike\Repositories; use Beike\Models\Plugin; +use Beike\Plugin\Manager; use Illuminate\Database\Eloquent\Collection; class PluginRepo @@ -63,20 +64,55 @@ class PluginRepo */ public static function installed($code): bool { - $plugins = self::listByCode(); + $plugins = self::getPluginsByCode(); return $plugins->has($code); } + public static function allPlugins() + { + if (self::$installedPlugins !== null) { + return self::$installedPlugins; + } + return self::$installedPlugins = Plugin::all(); + } + + /** * 获取所有已安装插件 * @return Plugin[]|Collection */ - public static function listByCode() + public static function getPluginsByCode() { - if (self::$installedPlugins !== null) { - return self::$installedPlugins; - } - return self::$installedPlugins = Plugin::all()->keyBy('code'); + $allPlugins = self::allPlugins(); + return $allPlugins->keyBy('code'); + } + + + /** + * 获取所有配送方式 + */ + public static function getShippingMethods() + { + $allPlugins = self::allPlugins(); + return $allPlugins->where('type', 'shipping')->filter(function ($item) { + $plugin = (new Manager)->getPlugin($item->code); + $item->plugin = $plugin; + return $plugin && $plugin->getEnabled(); + }); + } + + + /** + * 获取所有支付方式 + */ + public static function getPaymentMethods() + { + $allPlugins = self::allPlugins(); + return $allPlugins->where('type', 'payment')->filter(function ($item) { + $plugin = (new Manager)->getPlugin($item->code); + $item->plugin = $plugin; + return $plugin && $plugin->getEnabled(); + }); } } diff --git a/beike/Repositories/SettingRepo.php b/beike/Repositories/SettingRepo.php index e83ccab7..8291648a 100644 --- a/beike/Repositories/SettingRepo.php +++ b/beike/Repositories/SettingRepo.php @@ -74,14 +74,4 @@ class SettingRepo } Setting::query()->insert($rows); } - - public static function getShipments() - { - return []; - } - - public static function getPayments() - { - return []; - } } diff --git a/beike/Shop/Http/Controllers/CheckoutController.php b/beike/Shop/Http/Controllers/CheckoutController.php index c7ec3139..d2bd511b 100644 --- a/beike/Shop/Http/Controllers/CheckoutController.php +++ b/beike/Shop/Http/Controllers/CheckoutController.php @@ -19,6 +19,7 @@ class CheckoutController extends Controller public function index(Request $request) { $data = CheckoutService::checkoutData(); + dd($data); return view('checkout', $data); } } diff --git a/beike/Shop/Services/CheckoutService.php b/beike/Shop/Services/CheckoutService.php index 116bce7a..3b637319 100644 --- a/beike/Shop/Services/CheckoutService.php +++ b/beike/Shop/Services/CheckoutService.php @@ -12,6 +12,7 @@ namespace Beike\Shop\Services; use Beike\Repositories\AddressRepo; +use Beike\Repositories\PluginRepo; use Beike\Repositories\SettingRepo; use Beike\Repositories\CountryRepo; @@ -22,8 +23,8 @@ class CheckoutService $customer = current_customer(); $addresses = AddressRepo::listByCustomer(current_customer()); - $shipments = SettingRepo::getShipments(); - $payments = SettingRepo::getPayments(); + $shipments = PluginRepo::getShippingMethods(); + $payments = PluginRepo::getPaymentMethods(); $cartList = CartService::list($customer, true); $carts = CartService::reloadData($cartList);