From 8260c767391994853f3aeaa021c97cefdf5ef3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0git=20config=20git=20config=20-?= =?UTF-8?q?-helpgit=20config=20--global=20user=2Ename=20=EC=B5=9C=EC=A4=80?= =?UTF-8?q?=ED=9D=A0?= Date: Tue, 1 Aug 2023 06:16:35 +0900 Subject: [PATCH] shoppingmallv2 init... --- app/Backend/BaseBackend.php | 8 +- app/Backend/EcommerceBackend.php | 81 ++++++------------- app/Config/Routes.php | 1 - app/Controllers/Admin/EcommerceController.php | 59 +++++--------- app/Controllers/Front/EcommerceController.php | 59 -------------- app/Language/ko/Order.php | 2 +- app/Views/admin/product/orderform.php | 2 +- 7 files changed, 50 insertions(+), 162 deletions(-) delete mode 100644 app/Controllers/Front/EcommerceController.php diff --git a/app/Backend/BaseBackend.php b/app/Backend/BaseBackend.php index 2484785..926d377 100644 --- a/app/Backend/BaseBackend.php +++ b/app/Backend/BaseBackend.php @@ -36,22 +36,22 @@ abstract class BaseBackend return $this->_model->getTitleField(); } //Form Fields - public function getFields(string $action) + public function getFields(string $action): array { return $this->_model->getFields($action); } //Field별 Form Rule용 - public function getFieldRules(array $fields, string $action) + public function getFieldRules(array $fields, string $action): array { return $this->_model->getFieldRules($fields, $action); } //Field별 Form Filter용 - public function getFieldFilters() + public function getFieldFilters(): array { return $this->_model->getFieldFilters(); } //Field별 Form BatchFilter용 - public function getFieldBatchFilters() + public function getFieldBatchFilters(): array { return $this->_model->getFieldBatchFilters(); } diff --git a/app/Backend/EcommerceBackend.php b/app/Backend/EcommerceBackend.php index 59030b0..a9a7ef4 100644 --- a/app/Backend/EcommerceBackend.php +++ b/app/Backend/EcommerceBackend.php @@ -2,13 +2,16 @@ namespace App\Backend; +use App\Models\OrderModel; +use App\Models\ProductModel; + class EcommerceBackend extends BaseBackend { private $_product = null; private $_order = null; public function __construct() { - parent::__construct('Order'); + parent::__construct('Ecommerce'); $this->_product = new ProductBackend(); $this->_order = new OrderBackend(); } @@ -22,71 +25,39 @@ class EcommerceBackend extends BaseBackend $this->_product; } - //초기선언부-------- - //Title Field - public function getTitleField() - { - return "product_uid"; - } //Form Fields - public function getFields(string $action = ""): array + public function getFields(string $action): array { - $fields = ['product_uid', "quantity", "price"]; - switch ($action) { - default: - return $fields; - break; - } + return ["product_uid", "quantity", "price", "status"]; } - public function getFieldFilters(): array - { - return ['product_uid', "user_uid"]; - } - public function getFieldBatchFilters(): array - { - return ["status"]; - } - public function getFieldRule(string $field, array $rules, string $action = ""): array - { - switch ($field) { - case $this->getTitleField(): - case "product_uid": - $rules[$field] = "required|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]"; - break; - case 'quantity': - case 'price': - $rules[$field] = "required|numeric"; - break; - default: - throw new \Exception(__FUNCTION__ . "에서 오류발생: Field명:{$field}는 사용할수없습니다."); - break; - } - return $rules; - } - public function getFieldRules(array $fields, string $action) + //Field별 Form Rule용 + public function getFieldRules(array $fields, string $action): array { $rules = array(); foreach ($fields as $field) { - $rules = $this->getFieldRule($field, $rules, $action); + switch ($field) { + case "product_uid": + $rules[$field] = "required|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]"; + break; + case "sess_id": + $rules[$field] = "required|string"; + break; + case 'quantity': + case 'price': + $rules[$field] = "required|numeric"; + break; + default: + break; + } } return $rules; } - //Entity값 가져오기 - public function getEntity($uid) - { - throw new \Exception(__FUNCTION__ . "에서 오류발생: 사용할수없습니다."); - } - public function getEntitys($condition) - { - throw new \Exception(__FUNCTION__ . "에서 오류발생: 사용할수없습니다."); - } - //-------초기선언부 //장바구니에 담기 - public function addCart(string $product_uid, int $quantity, int $price) + public function addCart(array $fieldDatas) { - $product = $this->_product->getEntity($product_uid); - $this->_product->addCart($product, $quantity, $price); - $this->_order->addCart($product, $quantity, $price); + $product = $this->_product->getEntity($fieldDatas['product_uid']); + $this->_product->addCart($product, $fieldDatas['quantity'], $fieldDatas['price']); + $this->_order->addCart($product, $fieldDatas['quantity'], $fieldDatas['price']); } } diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 5dab8e4..695b125 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -129,7 +129,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->group('ecommerce', static function ($routes) { $routes->get('', 'EcommerceController::index'); $routes->post('addcart', 'EcommerceController::addCart'); - $routes->get('view/(:uuid)', 'EcommerceController::viewCart/$1'); }); }); $routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($routes) { diff --git a/app/Controllers/Admin/EcommerceController.php b/app/Controllers/Admin/EcommerceController.php index fa52f73..25e2eb1 100644 --- a/app/Controllers/Admin/EcommerceController.php +++ b/app/Controllers/Admin/EcommerceController.php @@ -16,18 +16,31 @@ class EcommerceController extends AdminController $this->_viewPath .= strtolower($this->_backend->getClassName()); } + protected function addCart_process() + { + //fieldData Rule 검사 + if (!$this->validate($this->_viewDatas['fieldRules'])) { + throw new \Exception("장비구니 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); + } + //fieldData 적용 + $this->_viewDatas['fieldDatas'] = array(); + foreach ($this->_viewDatas['fields'] as $field) { + $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field); + } + } //장바구니에 담기 public function addCart() { $msg = ""; try { - $this->_viewDatas = $this->init(__FUNCTION__); + $this->_viewDatas['fields'] = $this->_backend->getFields(__FUNCTION__); + $this->_viewDatas['fieldRules'] = $this->_backend->getFieldRules($this->_viewDatas['fields'], __FUNCTION__); //Transaction 시작 - $this->_backend->transStart(); - $this->insert_process(); + // $this->_backend->transStart(); + $this->addCart_process(); $this->_backend->addCart($this->_viewDatas['fieldDatas']); //Transaction Commit - $this->_backend->transCommit(); + // $this->_backend->transCommit(); $msg = sprintf( "%s에서 해당 상품 %s개를 장바구니에 담았습니다.", $this->_viewDatas['title'], @@ -35,7 +48,7 @@ class EcommerceController extends AdminController ); } catch (\Exception $e) { //Transaction Rollback - $this->_backend->transRollback(); + // $this->_backend->transRollback(); $msg = sprintf( "%s에서 다음 오류로 인해 장바구니에 담기를 실패하였습니다.\n%s", $this->_viewDatas['title'], @@ -48,40 +61,4 @@ class EcommerceController extends AdminController return redirect()->to($this->_session->getFlashdata(SESSION_NAMES['RETURN_URL'])); } } - - //View관련 - public function viewCart($order_uid) - { - try { - $this->_viewDatas = $this->init(__FUNCTION__); - helper(['form']); - $this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []]; - $this->_viewDatas['order'] = $this->_backend->getOrderBackend()->getEntity($order_uid); - $this->_viewDatas['product'] = $this->_backend->getProductBackend()->getEntity($this->_viewDatas['order']->getProduct_uid()); - $this->_session->keepFlashdata(SESSION_NAMES['RETURN_URL']); - return view($this->_viewPath . '/view', $this->_viewDatas); - } catch (\Exception $e) { - return redirect()->to($this->_session->getFlashdata(SESSION_NAMES['RETURN_URL']))->with('return_message', $e->getMessage()); - } - } - - public function index() - { - try { - $this->_viewDatas = $this->init(__FUNCTION__); - helper(['form']); - $this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []]; - foreach ($this->_viewDatas['fieldFilters'] as $field) { - $this->_viewDatas[$field] = $this->request->getVar($field) ?: DEFAULTS['EMPTY']; - } - //모델 처리 - $this->_viewDatas['entitys'] = $this->_backend->getOrderBackend()->getEntitys(['status' => DEFAULTS['STATUS']]); - // log_message("debug", __METHOD__ . "에서 호출:" . $this->_backend->getLastQuery()); - //setting return_url to session flashdata - $this->_session->setFlashdata(SESSION_NAMES['RETURN_URL'], current_url() . '?' . $this->request->getUri()->getQuery() ?: ""); - return view($this->_viewPath . '/index', $this->_viewDatas); - } catch (\Exception $e) { - return redirect()->back()->with('return_message', $e->getMessage()); - } - } } diff --git a/app/Controllers/Front/EcommerceController.php b/app/Controllers/Front/EcommerceController.php deleted file mode 100644 index 5d4be63..0000000 --- a/app/Controllers/Front/EcommerceController.php +++ /dev/null @@ -1,59 +0,0 @@ -_backend = service('ecommerce'); - parent::initController($request, $response, $logger); - $this->_viewPath .= strtolower($this->_backend->getClassName()); - } - - //장바구니에 담기 - public function addCart() - { - $msg = ""; - try { - $this->_viewDatas = $this->init(__FUNCTION__); - //Transaction 시작 - $this->_backend->transStart(); - $this->insert_process(); - $this->_backend->addCart($this->_viewDatas['fieldDatas']); - //Transaction Commit - $this->_backend->transCommit(); - $msg = sprintf( - "%s에서 해당 상품 %s개를 장바구니에 담았습니다.", - $this->_viewDatas['title'], - $this->_viewDatas['fieldDatas']['quantity'] - ); - } catch (\Exception $e) { - //Transaction Rollback - $this->_backend->transRollback(); - $msg = sprintf( - "%s에서 다음 오류로 인해 장바구니에 담기를 실패하였습니다.\n%s", - $this->_viewDatas['title'], - $e->getMessage() - ); - log_message("error", $e->getMessage()); - log_message("error", var_export($this->_viewDatas['fieldDatas'], true)); - } finally { - $this->_session->setFlashdata("return_message", $msg); - return redirect()->to($this->_session->getFlashdata(SESSION_NAMES['RETURN_URL'])); - } - } - - //View관련 - protected function view_process($entity) - { - $this->_viewDatas['user'] = $this->_backend->getUserModel()->getEntity([$this->_backend->getUserModel()->getPrimaryKey() => $entity->getUser_uid()]); - $this->_viewDatas['product'] = $this->_backend->getProductModel()->getEntity([$this->_backend->getProductModel()->getPrimaryKey() => $entity->getProduct_uid()]); - return parent::view_process($entity); - } -} diff --git a/app/Language/ko/Order.php b/app/Language/ko/Order.php index fd5de59..a53db35 100644 --- a/app/Language/ko/Order.php +++ b/app/Language/ko/Order.php @@ -1,6 +1,6 @@ "장바구니 정보", + 'title' => "주문 정보", 'label' => [ 'uid' => "번호", 'product_uid' => "상품정보", diff --git a/app/Views/admin/product/orderform.php b/app/Views/admin/product/orderform.php index e99cfcc..ae26bdd 100644 --- a/app/Views/admin/product/orderform.php +++ b/app/Views/admin/product/orderform.php @@ -1,4 +1,4 @@ -getPrimaryKey(), ['method' => 'post']) ?> + 'post']) ?> getPrimaryKey()) ?> getPrice() - $entity->getSale()) ?> 구매 수량 :