From 1d00cec904ba195c7543b791610564d5a14ad964 Mon Sep 17 00:00:00 2001 From: Hero Date: Tue, 11 Dec 2018 18:36:31 +0900 Subject: [PATCH] =?UTF-8?q?=ED=94=8C=EB=9F=AC=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=9C=A0=EB=8B=9B=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - composer.json | 8 +- payment/src/Resources.php | 6 ++ src/Dev.php | 3 +- src/Handlers/CartHandler.php | 15 ++- src/Handlers/OrderHandler.php | 44 ++++----- src/Handlers/ProductHandler.php | 3 +- src/Handlers/ShopHandler.php | 3 - src/Models/OrderDelivery.php | 5 + src/Models/OrderItemGroup.php | 2 +- src/Models/Shop.php | 3 +- src/Plugin/Database.php | 125 ++++++++++++++++++++++--- src/Plugin/Resources.php | 8 +- src/Services/OrderService.php | 3 +- src/Services/ProductSettingService.php | 3 + src/Services/ShopService.php | 3 + 16 files changed, 180 insertions(+), 55 deletions(-) diff --git a/.gitignore b/.gitignore index 9b3313c..af3bf49 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ vendor composer.lock -Tests assets/node_modules src/Components/Skins/XeroCommerceDefault/assets/node_modules diff --git a/composer.json b/composer.json index 0dac088..8f30cce 100644 --- a/composer.json +++ b/composer.json @@ -108,11 +108,15 @@ }, "autoload": { "psr-4": { - "Xpressengine\\Plugins\\XeroCommerce\\": "src/", + "Xpressengine\\Plugins\\XeroCommerce\\": [ + "src/", + "./" + ], "Xpressengine\\XePlugin\\XeroPay\\": [ "payment/src/", "payment/" - ] + ], + "Xpressengine\\Plugins\\XeroCommerce\\Test\\": "tests/" } }, "config": { diff --git a/payment/src/Resources.php b/payment/src/Resources.php index 0d08df2..1eda3e6 100644 --- a/payment/src/Resources.php +++ b/payment/src/Resources.php @@ -107,4 +107,10 @@ public static function makeDataTable() $table->timestamps(); }); } + + public static function deleteDataTable(){ + Schema::dropIfExists('xero_pay_payment'); + + Schema::dropIfExists('xero_pay_log'); + } } diff --git a/src/Dev.php b/src/Dev.php index f0aab57..2e97943 100644 --- a/src/Dev.php +++ b/src/Dev.php @@ -2,6 +2,7 @@ namespace Xpressengine\Plugins\XeroCommerce; +use App\Facades\XeConfig; use Faker\Factory; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; @@ -206,7 +207,7 @@ private function storeProductCategory($product) private function getXeroCommerceCategoryIds() { - $config = \XeConfig::get(Plugin::getId()); + $config = XeConfig::get(Plugin::getId()); $categoryId = $config->get('categoryId'); diff --git a/src/Handlers/CartHandler.php b/src/Handlers/CartHandler.php index f7be53d..bd176da 100644 --- a/src/Handlers/CartHandler.php +++ b/src/Handlers/CartHandler.php @@ -19,12 +19,19 @@ public function getCartList() public function getCartListByCartIds($cart_ids) { - return $this->getCartQuery()->whereIn('id', $cart_ids)->get(); + if (is_iterable($cart_ids)) { + return $this->getCartQuery()->whereIn('id', $cart_ids)->get(); + }else{ + return $this->getCartQuery()->where('id', $cart_ids)->get(); + } } private function getCartQuery() { - return Cart::where('user_id', Auth::id() ?: \request()->ip())->latest(); + if (is_null($user_id = Auth::id())) { + $user_id = \request()->ip(); + } + return Cart::where('user_id', $user_id)->latest(); } public function addCart(SellType $sellType, $cartGroupList, $delivery) @@ -68,9 +75,9 @@ public function getSellSetList() public function makeCartGroup(SellUnit $sellUnit, $count) { $cartGroup = new CartGroup(); - - $sellUnit->cartGroup()->save($cartGroup); + $cartGroup->cart_id = 0; $cartGroup->setCount($count); + $sellUnit->cartGroup()->save($cartGroup); $cartGroup->save(); return $cartGroup; diff --git a/src/Handlers/OrderHandler.php b/src/Handlers/OrderHandler.php index 50eb762..a56e833 100644 --- a/src/Handlers/OrderHandler.php +++ b/src/Handlers/OrderHandler.php @@ -53,14 +53,17 @@ public function register($carts) $orderItem->order_id = $order->id; $orderItem->delivery_pay = $cart->delivery_pay; - $cart->forcedSellType()->orderItems()->save($orderItem); + $orderItem->sellType()->associate($cart->forcedSellType()); + $orderItem->original_price = $orderItem->getOriginalPrice(); + $orderItem->sell_price = $orderItem->getSellPrice(); + $orderItem->code = 0; $orderItem->save(); $cart->sellGroups->each(function (CartGroup $cartGroup) use (&$orderItem) { $orderItemGroup = new OrderItemGroup(); - $cartGroup->forcedSellUnit()->orderItemGroup()->save($orderItemGroup); + $orderItemGroup->sellUnit()->associate($cartGroup->forcedSellUnit()); $orderItemGroup->setCount($cartGroup->getCount()); $orderItem->sellGroups()->save($orderItemGroup); @@ -102,7 +105,7 @@ public function update(Order $order) public function paidCheck(Order $order) { - $payment = $order->payment; + $payment = $order->payment()->first(); if ($payment) { if ($payment->is_paid) { @@ -158,11 +161,6 @@ public function afterServiceCheck(Order $order) } } - public function updateOrder() - { - - } - public function makeOrder() { $now = now(); @@ -216,6 +214,7 @@ public function makePayment(Order $order) $payment->discount = $summary['discount_price']; $payment->millage = 0; $payment->fare = $summary['fare']; + $payment->is_paid=false; if ($pay = $order->xeropay) { $payment->method = $pay->method; @@ -235,31 +234,31 @@ public function idUpdate(Order $order) $this->update($order); } - public function makeDelivery(Order $order, Request $request) + public function makeDelivery(Order $order, $args) { - if (isset($request->delivery['nickname'])) { - $del = $request->delivery; + if (isset($args['delivery']['nickname'])) { + $del = $args['delivery']; $del['user_id'] = Auth::id(); $del['seq'] = UserDelivery::where('user_id', Auth::id())->count() + 1; UserDelivery::updateOrCreate( - ['nickname' => $request->delivery['nickname']], + ['nickname' => $args['delivery']['nickname']], $del ); } - $order->orderItems->each(function (OrderItem $orderItem) use ($request) { + $order->orderItems->each(function (OrderItem $orderItem) use ($args) { $delivery = new OrderDelivery(); $delivery->order_item_id = $orderItem->id; $delivery->ship_no = ''; $delivery->status = OrderDelivery::READY; $delivery->company_id = $orderItem->sellType->getDelivery()->company->id; - $delivery->recv_name = $request->delivery['name']; - $delivery->recv_phone = $request->delivery['phone']; - $delivery->recv_addr = $request->delivery['addr'] ?: ''; - $delivery->recv_addr_detail = $request->delivery['addr_detail']; - $delivery->recv_addr_post = $request->delivery['addr_post']; - $delivery->recv_msg = $request->delivery['msg']; + $delivery->recv_name = $args['delivery']['name']; + $delivery->recv_phone = $args['delivery']['phone']; + $delivery->recv_addr = $args['delivery']['addr'] ?: ''; + $delivery->recv_addr_detail = $args['delivery']['addr_detail']; + $delivery->recv_addr_post = $args['delivery']['addr_post']; + $delivery->recv_msg = $args['delivery']['msg']; $delivery->save(); }); @@ -290,7 +289,7 @@ public function dailyBoard() } $counts = collect($days)->map(function ($item) { - return $this->whereUser()->whereDate('created_at', $item)->count(); + return $this->whereUser()->where('code','!=',Order::TEMP)->whereDate('created_at', $item)->count(); })->all(); return [ @@ -318,7 +317,7 @@ public function shipNoRegister(OrderItem $orderItem, $ship_no) $delivery->setShipNo($ship_no); - $this->update($order); + return $this->update($order); } public function completeDelivery(OrderItem $orderItem) @@ -336,7 +335,7 @@ public function changeOrderItem(OrderItem $orderItem, $code) $orderItem->code = $code; $orderItem->save(); - $this->update($order); + return $this->update($order); } public function makeOrderAfterservice($type, OrderItem $orderItem, Request $request) @@ -373,6 +372,7 @@ public function orderCancel(Order $order, $reason) $this->changeOrderItem($orderItem, Order::CANCELED); }); + return $this->update($order); } public function receiveOrderAfterservice(OrderItem $orderItem) diff --git a/src/Handlers/ProductHandler.php b/src/Handlers/ProductHandler.php index b67deb3..2002788 100644 --- a/src/Handlers/ProductHandler.php +++ b/src/Handlers/ProductHandler.php @@ -218,7 +218,6 @@ public function store(array $args) } } - \Event::dispatch(new NewProductRegisterEvent($newProduct)); return $newProduct->id; } @@ -303,7 +302,7 @@ private function storeRevision($product) $revisionProduct->save(); } - public function setPublish($productId, boolean $bool) + public function setPublish($productId, $bool) { $product = Product::find($productId); $product->publish = $bool; diff --git a/src/Handlers/ShopHandler.php b/src/Handlers/ShopHandler.php index 3d6ea02..ec606c5 100644 --- a/src/Handlers/ShopHandler.php +++ b/src/Handlers/ShopHandler.php @@ -21,8 +21,6 @@ public function store(array $args) $newShop->save(); - $newShop->users()->sync($args['user_id']); - return $newShop; } @@ -73,7 +71,6 @@ public function update(array $args, Shop $shop) $shop->{$key} = $value; } } - $shop->users()->sync($args['user_id']); $shop->save(); } diff --git a/src/Models/OrderDelivery.php b/src/Models/OrderDelivery.php index 23d7024..a885ec0 100644 --- a/src/Models/OrderDelivery.php +++ b/src/Models/OrderDelivery.php @@ -48,4 +48,9 @@ public function getUrl() { return $this->company->uri . $this->ship_no; } + + public function orderItem() + { + return $this->belongsTo(OrderItem::class); + } } diff --git a/src/Models/OrderItemGroup.php b/src/Models/OrderItemGroup.php index dfe14bb..ee86872 100644 --- a/src/Models/OrderItemGroup.php +++ b/src/Models/OrderItemGroup.php @@ -20,6 +20,6 @@ function setCount($count) public function sellSet() { - return $this->belongsTo(OrderItem::class); + return $this->belongsTo(OrderItem::class,'order_item_id'); } } diff --git a/src/Models/Shop.php b/src/Models/Shop.php index 37b1d52..ab045cf 100644 --- a/src/Models/Shop.php +++ b/src/Models/Shop.php @@ -61,7 +61,8 @@ public function deliveryCompanys() public function getDefaultDeliveryCompany() { - return $this->deliveryCompanys()->where('is_default', 1)->first(); + $default = $this->deliveryCompanys()->where('is_default', 1)->first(); + return $default?:$this->deliveryCompanys()->first(); } public function users() diff --git a/src/Plugin/Database.php b/src/Plugin/Database.php index 2c7eb2b..dcdeff7 100644 --- a/src/Plugin/Database.php +++ b/src/Plugin/Database.php @@ -3,7 +3,9 @@ namespace Xpressengine\Plugins\XeroCommerce\Plugin; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; +use Xpressengine\Plugins\XeroCommerce\Models\Product; class Database { @@ -41,7 +43,7 @@ public static function create() Schema::create('xero_commerce_user_agreement', function (Blueprint $table) { $table->increments('id'); - $table->string('user_id',36); + $table->string('user_id', 36); $table->integer('agreement_id'); $table->timestamps(); }); @@ -58,13 +60,13 @@ public static function create() Schema::create('xero_commerce_shop', function (Blueprint $table) { $table->increments('id'); $table->string('shop_name'); - $table->string('shop_eng_name'); + $table->string('shop_eng_name')->nullable(); $table->string('logo_path')->nullable(); $table->string('background_path')->nullable(); $table->integer('shop_type'); - $table->integer('state_approval'); - $table->text('delivery_info'); - $table->text('as_info'); + $table->integer('state_approval')->default(0); + $table->text('delivery_info')->nullable(); + $table->text('as_info')->nullable(); $table->softDeletes(); $table->timestamps(); }); @@ -150,7 +152,7 @@ public static function create() $table->morphs('type'); $table->string('title'); $table->text('content'); - $table->string('user_id',36); + $table->string('user_id', 36); $table->boolean('privacy')->default(false); $table->timestamps(); }); @@ -161,7 +163,7 @@ public static function create() $table->string('title'); $table->integer('score'); $table->text('content'); - $table->string('user_id',36); + $table->string('user_id', 36); $table->timestamps(); }); @@ -192,7 +194,7 @@ public static function create() $table->increments('id'); $table->string('order_id'); $table->smallInteger('delivery_pay'); - $table->integer('delivery_id'); + $table->integer('delivery_id')->nullable(); $table->morphs('type'); $table->integer('original_price'); $table->integer('sell_price'); @@ -252,8 +254,8 @@ public static function create() $table->integer('discount'); $table->integer('millage'); $table->integer('fare'); - $table->boolean('is_paid'); - $table->text('receipt'); + $table->boolean('is_paid')->default(false); + $table->text('receipt')->nullable(); $table->timestamps(); }); @@ -277,11 +279,77 @@ public static function create() \Xpressengine\XePlugin\XeroPay\Resources::makeDataTable(); } + public static function drop() + { + Schema::dropIfExists('xero_commerce_user'); + + Schema::dropIfExists('xero_commerce_user_delivery'); + + Schema::dropIfExists('xero_commerce_user_agreement'); + + Schema::dropIfExists('xero_commerce_agreement'); + + Schema::dropIfExists('xero_commerce_shop'); + + Schema::dropIfExists('xero_commerce_shop_user'); + + Schema::dropIfExists('xero_commerce_shop_delivery'); + + self::dropIfExistsProductTables(); + self::dropIfExistsProductOptionTables(); + + Schema::dropIfExists('xero_commerce_images'); + + Schema::dropIfExists('xero_commerce_product_slug'); + + Schema::dropIfExists('xero_commerce_product_category'); + + Schema::dropIfExists('xero_commerce_label'); + + Schema::dropIfExists('xero_commerce_badge'); + + Schema::dropIfExists('xero_commerce_product_label'); + + Schema::dropIfExists('xero_commerce_order'); + + Schema::dropIfExists('xero_commerce_order_agreement'); + + Schema::dropIfExists('xero_commerce_qna'); + + Schema::dropIfExists('xero_commerce_feedback'); + + Schema::dropIfExists('xero_commerce_cart'); + + Schema::dropIfExists('xero_commerce_wish'); + + Schema::dropIfExists('xero_commerce_cart_group'); + + Schema::dropIfExists('xero_commerce_order_item'); + + + Schema::dropIfExists('xero_commerce_order_item_group'); + + Schema::dropIfExists('xero_commerce_order_delivery'); + + Schema::dropIfExists('xero_commerce_order_afterservice'); + + Schema::dropIfExists('xero_commerce_delivery_company'); + + Schema::dropIfExists('xero_commerce_payment'); + + Schema::dropIfExists('xero_commerce_order_log'); + + Schema::dropIfExists('xero_commerce_pay_log'); + + \Xpressengine\XePlugin\XeroPay\Resources::deleteDataTable(); + } + /** * @return void */ - private static function createProductTables() + private + static function createProductTables() { //상품 테이블 생성 Schema::create('xero_commerce_products', function (Blueprint $table) { @@ -312,7 +380,22 @@ private static function createProductTables() }); } - public static function changeTable() + + /** + * @return void + */ + private + static function dropIfExistsProductTables() + { + //상품 테이블 생성 + Schema::dropIfExists('xero_commerce_products'); + + //상품 Revision 테이블 생성 + Schema::dropIfExists('xero_commerce_products_revision'); + } + + public + static function changeTable() { Schema::table('xero_commerce_products', function (Blueprint $table) { $table->boolean('publish')->default(false); @@ -324,7 +407,8 @@ public static function changeTable() * * @return Blueprint */ - private static function setProductTableColumns($table) + private + static function setProductTableColumns($table) { $table->integer('shop_id'); $table->boolean('publish')->default(false); @@ -347,7 +431,8 @@ private static function setProductTableColumns($table) return $table; } - private static function createProductOptionTables() + private + static function createProductOptionTables() { Schema::create('xero_commerce_product_option_item', function (Blueprint $table) { $table->increments('id'); @@ -376,7 +461,17 @@ private static function createProductOptionTables() }); } - private static function setProductOptionTableColumns($table) + + private + static function dropIfExistsProductOptionTables() + { + Schema::dropIfExists('xero_commerce_product_option_item'); + + Schema::dropIfExists('xero_commerce_product_option_item_revision'); + } + + private + static function setProductOptionTableColumns($table) { $table->integer('product_id')->index(); $table->integer('option_type'); diff --git a/src/Plugin/Resources.php b/src/Plugin/Resources.php index 47da94d..e64145c 100644 --- a/src/Plugin/Resources.php +++ b/src/Plugin/Resources.php @@ -1232,7 +1232,7 @@ public static function storeDefaultDeliveryCompanySet() */ public static function storeDefaultShop() { - $userId = \Auth::user()->getId(); + $userId = Auth::id(); if (Shop::where('shop_name', Shop::BASIC_SHOP_NAME)->first() == null) { $args['user_id'] = $userId; @@ -1242,7 +1242,11 @@ public static function storeDefaultShop() $storeHandler = new ShopHandler(); $store = $storeHandler->store($args); - $store->deliveryCompanys()->attach(DeliveryCompany::pluck('id')); + $store->deliveryCompanys()->attach(DeliveryCompany::pluck('id'), [ + 'delivery_fare'=>0, + 'up_to_free'=>0, + 'is_default'=>0 + ]); } } diff --git a/src/Services/OrderService.php b/src/Services/OrderService.php index 838d3e6..16e76f3 100644 --- a/src/Services/OrderService.php +++ b/src/Services/OrderService.php @@ -50,7 +50,8 @@ public function pay(Order $order, Request $request) public function complete(Order $order, Request $request) { $this->orderHandler->idUpdate($order); - return $this->orderHandler->makeDelivery($order, $request); + $args = $request->all(); + return $this->orderHandler->makeDelivery($order, $args); } public function orderItemList(Order $order) diff --git a/src/Services/ProductSettingService.php b/src/Services/ProductSettingService.php index 18e7743..5c80ae3 100644 --- a/src/Services/ProductSettingService.php +++ b/src/Services/ProductSettingService.php @@ -3,6 +3,7 @@ namespace Xpressengine\Plugins\XeroCommerce\Services; use Xpressengine\Http\Request; +use Xpressengine\Plugins\XeroCommerce\Events\NewProductRegisterEvent; use Xpressengine\Plugins\XeroCommerce\Handlers\ProductHandler; use Xpressengine\Plugins\XeroCommerce\Models\Product; use Xpressengine\Plugins\XeroCommerce\Models\ProductOptionItem; @@ -107,6 +108,8 @@ public function store(Request $request) $newProductId = $this->productHandler->store($productArgs); + \Event::dispatch(new NewProductRegisterEvent(Product::find($newProductId))); + return $newProductId; } diff --git a/src/Services/ShopService.php b/src/Services/ShopService.php index 38029b1..73072ce 100644 --- a/src/Services/ShopService.php +++ b/src/Services/ShopService.php @@ -73,6 +73,8 @@ public function create(Request $request) $newShop = $this->handler->store($args); + $newShop->users()->sync($args['user_id']); + return $newShop; } @@ -104,6 +106,7 @@ public function update(Request $request, $shopId) $shop = $this->handler->getShop($shopId); $this->handler->update($args, $shop); + $shop->users()->sync($args['user_id']); } /**