From 2a3d768b445b363d8e8de503894f7fcd8534352a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Wed, 2 Aug 2023 13:09:38 +0900 Subject: [PATCH] shoppingmallv2 init... --- app/Controllers/Front/OrderController.php | 30 +++++++++-------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/app/Controllers/Front/OrderController.php b/app/Controllers/Front/OrderController.php index 2aca89f..5cafeff 100644 --- a/app/Controllers/Front/OrderController.php +++ b/app/Controllers/Front/OrderController.php @@ -5,16 +5,13 @@ namespace App\Controllers\Front; use App\Entities\OrderEntity; use App\Models\OrderModel; use App\Models\ProductModel; -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\Cookie\Exceptions\CookieException; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; -use DateTime; use Psr\Log\LoggerInterface; class OrderController extends FrontController { + private $_productModel = null; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { $this->_model = new OrderModel($this->getFields()); @@ -54,21 +51,6 @@ class OrderController extends FrontController $this->_session->set(SESSION_NAMES['CART'], [...$order_uids, $entity->getPrimaryKey()]); } - //장바구니에 담기 - protected function insert_process() - { - //fieldData Rule 검사및 fieldData 적용 - parent::insert_process(); - //상품재고 줄이기 - $productModel = new ProductModel(); - $product = $productModel->getEntity([$this->_model->getPrimaryKey() => $this->_viewDatas['fieldDatas']['product_uid']]); - //구매 금액 비교 - $price = ($product->getPrice() - $product->getSale()) * $this->_viewDatas['fieldDatas']['quantity']; - if ($price != $this->_viewDatas['fieldDatas']['price']) { - throw new \Exception("실 상품금액{$price} 와 구매금액{$this->_viewDatas['fieldDatas']['price']}이 서로 다릅니다."); - } - $productModel->decreaseStock($product, $this->_viewDatas['fieldDatas']['quantity']); - } public function insert() { $msg = ""; @@ -76,9 +58,19 @@ class OrderController extends FrontController $this->_viewDatas['fields'] = $this->getFields(__FUNCTION__); $this->_viewDatas['fieldRules'] = $this->_model->getFieldRules($this->_viewDatas['fields'], __FUNCTION__); $this->insert_process(); + $this->_productModel ?: new ProductModel(); + //상품정보 가져오기 + $product = $this->_productModel->getEntity([$this->_model->getPrimaryKey() => $this->_viewDatas['fieldDatas']['product_uid']]); + //구매 금액 비교 + $price = ($product->getPrice() - $product->getSale()) * $this->_viewDatas['fieldDatas']['quantity']; + if ($price != $this->_viewDatas['fieldDatas']['price']) { + throw new \Exception("실 상품금액{$price} 와 구매금액{$this->_viewDatas['fieldDatas']['price']}이 서로 다릅니다."); + } //Transaction 시작 $this->_model->transStart(); + //Order(장바구니)에 넣기,상품재고 줄이기,Order(장바구니)번호 세션넣기 $entity = $this->_model->create($this->_viewDatas['fieldDatas']); + $this->_productModel->decreaseStock($product, $this->_viewDatas['fieldDatas']['quantity']); $this->setCart($entity); //Transaction Commit $this->_model->transComplete();