shoppingmallv2 init...
This commit is contained in:
parent
ae2d59ff20
commit
2a3d768b44
@ -5,16 +5,13 @@ namespace App\Controllers\Front;
|
|||||||
use App\Entities\OrderEntity;
|
use App\Entities\OrderEntity;
|
||||||
use App\Models\OrderModel;
|
use App\Models\OrderModel;
|
||||||
use App\Models\ProductModel;
|
use App\Models\ProductModel;
|
||||||
use CodeIgniter\Cookie\Cookie;
|
|
||||||
use CodeIgniter\Cookie\CookieStore;
|
|
||||||
use CodeIgniter\Cookie\Exceptions\CookieException;
|
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use DateTime;
|
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
class OrderController extends FrontController
|
class OrderController extends FrontController
|
||||||
{
|
{
|
||||||
|
private $_productModel = null;
|
||||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
$this->_model = new OrderModel($this->getFields());
|
$this->_model = new OrderModel($this->getFields());
|
||||||
@ -54,21 +51,6 @@ class OrderController extends FrontController
|
|||||||
$this->_session->set(SESSION_NAMES['CART'], [...$order_uids, $entity->getPrimaryKey()]);
|
$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()
|
public function insert()
|
||||||
{
|
{
|
||||||
$msg = "";
|
$msg = "";
|
||||||
@ -76,9 +58,19 @@ class OrderController extends FrontController
|
|||||||
$this->_viewDatas['fields'] = $this->getFields(__FUNCTION__);
|
$this->_viewDatas['fields'] = $this->getFields(__FUNCTION__);
|
||||||
$this->_viewDatas['fieldRules'] = $this->_model->getFieldRules($this->_viewDatas['fields'], __FUNCTION__);
|
$this->_viewDatas['fieldRules'] = $this->_model->getFieldRules($this->_viewDatas['fields'], __FUNCTION__);
|
||||||
$this->insert_process();
|
$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 시작
|
//Transaction 시작
|
||||||
$this->_model->transStart();
|
$this->_model->transStart();
|
||||||
|
//Order(장바구니)에 넣기,상품재고 줄이기,Order(장바구니)번호 세션넣기
|
||||||
$entity = $this->_model->create($this->_viewDatas['fieldDatas']);
|
$entity = $this->_model->create($this->_viewDatas['fieldDatas']);
|
||||||
|
$this->_productModel->decreaseStock($product, $this->_viewDatas['fieldDatas']['quantity']);
|
||||||
$this->setCart($entity);
|
$this->setCart($entity);
|
||||||
//Transaction Commit
|
//Transaction Commit
|
||||||
$this->_model->transComplete();
|
$this->_model->transComplete();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user