get('shop-foundation.pay-page.type'); return collect($configs)->map(function ($configItem) use ($order) { $class = call_user_func($configItem['class'], $order); $class->setPriority($configItem['priority']); $class->setUniqueCode($configItem['code']); return $class; })->sortByDesc(function ($class) { return $class->priority; }); } public function eachOrderConfig(Order $order) { $pageConfig = $this->pageConfig($order); /** * @var PaymentPageInterface $concreteProduct */ foreach ($pageConfig as $concreteProduct) { //第一个可用的配置 if ($concreteProduct->usable()) { return $concreteProduct; } } return new DefaultPaymentPage($order); } public function mergePayPage(OrderPay $orderPay) { // $order = Order::find(895); //837、895、789、737、940 // $product = $this->eachOrderConfig($order); // $data[] = $product->toData(); // return $data; // dd($data); $data = []; foreach ($orderPay->orders as $order) { $product = $this->eachOrderConfig($order); $data[] = $product->toData(); } return $data; } public function goodsPaging(Order $order) { $product = $this->eachOrderConfig($order); $goodsList = $product->moduleData('goods'); return $goodsList; } }