diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php
index f4d2354..122d614 100644
--- a/app/Controllers/BaseController.php
+++ b/app/Controllers/BaseController.php
@@ -519,7 +519,7 @@ abstract class BaseController extends Controller
$this->_viewDatas['word'] = $this->request->getVar('word') ?: '';
$this->_viewDatas['start'] = $this->request->getVar('start') ?: '';
$this->_viewDatas['end'] = $this->request->getVar('end') ?: '';
- $this->_viewDatas['order_field'] = $this->request->getVar('order_field') ?: 'uid';
+ $this->_viewDatas['order_field'] = $this->request->getVar('order_field') ?: 'created_at';
$this->_viewDatas['order_value'] = $this->request->getVar('order_value') ?: 'DESC';
$this->_model->setCondition(
$filterFields,
diff --git a/app/Controllers/Front/Order/CartController.php b/app/Controllers/Front/Order/CartController.php
index ddf7822..6104fbe 100644
--- a/app/Controllers/Front/Order/CartController.php
+++ b/app/Controllers/Front/Order/CartController.php
@@ -29,7 +29,7 @@ class CartController extends OrderController
public function getFields(string $action = ""): array
{
switch ($action) {
- case 'update':
+ case 'insert':
return ["product_uid", "quantity", "price"];
break;
default:
@@ -40,10 +40,12 @@ class CartController extends OrderController
protected function getFieldRule(string $field, array $rules, string $action = ""): array
{
switch ($field) {
- case "product_uid":
- case "quantity":
- case "price":
- $rules = $this->_model->getFieldRule($field, $rules, $action);
+ 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:
$rules = parent::getFieldRule($field, $rules, $action);
@@ -60,14 +62,28 @@ class CartController extends OrderController
return parent::getFieldBatchFilters();
}
- //주문(장바구니담기)
+ protected function insert_process()
+ {
+ //addCart용 데이터 재처리 작업
+ $orderFormDatas = [];
+ $orderFormDatas[$this->_model->getTitleField()] = $this->_viewDatas['fieldDatas'][$this->_model->getTitleField()];
+ $orderFormDatas['product_uid'] = $this->_viewDatas['fieldDatas']['product_uid'];
+ $orderFormDatas['cost'] = $this->_viewDatas['fieldDatas']['price'];
+ $orderFormDatas['sale'] = 0;
+ $orderFormDatas['quantity'] = $this->_viewDatas['fieldDatas']['quantity'];
+ $orderFormDatas['price'] = $orderFormDatas['cost'] * $orderFormDatas['quantity'];
+ $this->_viewDatas['fieldDatas'] = $orderFormDatas;
+ // echo var_export($this->_viewDatas['fieldDatas']);
+ // exit;
+ return parent::insert_process();
+ }
+
+ //주문(uid->product_uid)
public function insert()
{
$msg = "";
try {
$this->_viewDatas = $this->init(__FUNCTION__);
- //Transaction 시작
- $this->_model->transStart();
//장바구니정보 검증
$this->insert_validate();
//상품정보 가져오기
@@ -81,12 +97,13 @@ class CartController extends OrderController
if ($price != $this->_viewDatas['fieldDatas']['price']) {
throw new \Exception("실 상품금액{$price} 와 구매금액{$this->_viewDatas['fieldDatas']['price']}이 서로 다릅니다.");
}
- // echo var_export($this->_viewDatas['fieldDatas']);
- // exit;
//상품명을 복사해서 구매한 상품명에 넣기
$this->_viewDatas['fieldDatas'][$this->_model->getTitleField()] = $product->getTitle();
+
+ //Transaction 시작
+ $this->_model->transStart();
//주문추가
- $entity = $this->_model->addCart($this->_viewDatas['fieldDatas']);
+ $entity = $this->insert_process();
//상품재고감소
$product = $this->getProductModel()->addCart($product, $this->_viewDatas['fieldDatas']['quantity']);
//주문정보 세션에 넣기
@@ -124,16 +141,12 @@ class CartController extends OrderController
try {
//주문정보 가져오기
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
+ //상품정보 가져오기
+ $product = $this->getProductModel()->getEntity([$this->getProductModel()->getPrimaryKey() => $entity->product_uid]);
//Transaction 시작
$this->_model->transStart();
//주문취소
- if (!$this->_model->cancelCart($entity)) {
- log_message("error", __FUNCTION__ . "에서 호출:" . $this->_model->getLastQuery());
- log_message("error", implode("\n", $this->_model->errors()));
- throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->_model->errors(), true));
- }
- //상품정보 가져오기
- $product = $this->getProductModel()->getEntity([$this->getProductModel()->getPrimaryKey() => $entity->product_uid]);
+ $entity = $this->_model->modify($entity, ['status' => 'unuse']);
//상품반환
$product = $this->getProductModel()->cancelCart($product, $entity->quantity);
//주문정보 세션에서 빼기
diff --git a/app/Helpers/Order_helper.php b/app/Helpers/Order_helper.php
index d3a0b7d..0f3cdb6 100644
--- a/app/Helpers/Order_helper.php
+++ b/app/Helpers/Order_helper.php
@@ -127,27 +127,27 @@ function getFieldIndex_Row_OrderHelper($field, $entity, array $viewDatas): strin
switch ($field) {
case 'title':
case 'name':
- return anchor(
+ $uid = lang("{$viewDatas['className']}.label.uid") . ' : ' . str_split($entity->getPrimaryKey(), 4)[0] . '-xx-' . str_split($entity->getPrimaryKey(), 4)[1];
+ $title = anchor(
current_url() . '/view/' . $entity->getPrimaryKey() . '?category=' . $viewDatas['category']->getPrimaryKey(),
$value,
["target" => "_self"]
);
+ return sprintf("%s
%s", $uid, $title);
break;
case 'status':
if ($value == DEFAULTS['STATUS']) {
- return sprintf(
- "