shoppingmallv2 init...

This commit is contained in:
최준흠git config git config --helpgit config --global user.name 최준흠 2023-08-12 14:31:20 +09:00
parent 71deae7b31
commit 6934f5ff83
14 changed files with 93 additions and 50 deletions

View File

@ -257,7 +257,6 @@ define('AUDIOS', [
//Default값 정의 //Default값 정의
define('DEFAULTS', [ define('DEFAULTS', [
'ORDER_CATEGORY' => getenv('default.order_category') ?: 11, 'ORDER_CATEGORY' => getenv('default.order_category') ?: 11,
'PAYMENT_CATEGORY' => getenv('default.payment_category') ?: 12,
'USER_CATEGORY' => getenv('default.user_category') ?: 22, 'USER_CATEGORY' => getenv('default.user_category') ?: 22,
'ROLE' => getenv('default.role') ?: "guest", 'ROLE' => getenv('default.role') ?: "guest",
'STATUS' => getenv('default.status') ?: "use", 'STATUS' => getenv('default.status') ?: "use",

View File

@ -42,9 +42,9 @@ $routes->group('ecommerce', ['namespace' => 'App\Controllers\Ecommerce'], functi
$routes->get('cancelCart', 'CartController::delete'); $routes->get('cancelCart', 'CartController::delete');
$routes->group('payment', ['namespace' => 'App\Controllers\Ecommerce\Payment', 'filter' => 'authFilter:user'], function ($routes) { $routes->group('payment', ['namespace' => 'App\Controllers\Ecommerce\Payment', 'filter' => 'authFilter:user'], function ($routes) {
$routes->get('card/(:uuid)', 'CardController::update_form/$1'); $routes->get('card/(:uuid)', 'CardController::update_form/$1');
$routes->post('card(:uuid)', 'CardController::update/$1'); $routes->post('card/(:uuid)', 'CardController::update/$1');
$routes->get('deposit(:uuid)', 'DepositController::update_form/$1'); $routes->get('deposit/(:uuid)', 'DepositController::update_form/$1');
$routes->post('deposit(:uuid)', 'DepositController::update/$1'); $routes->post('deposit/(:uuid)', 'DepositController::update/$1');
}); });
}); });
// authGuard는 App\Config\Filters.php의 $aliases에 선언한 이름이어야 함 // authGuard는 App\Config\Filters.php의 $aliases에 선언한 이름이어야 함

View File

@ -28,7 +28,7 @@ class OrderController extends AdminController
return ["user_uid", "name", "cost", "sale", "quantity", "price", "status", "updated_at", "created_at"]; return ["user_uid", "name", "cost", "sale", "quantity", "price", "status", "updated_at", "created_at"];
break; break;
case "view": case "view":
return ["user_uid", 'product_uid', "name", "cost", "sale", "quantity", "price", "status", "updated_at", "created_at"]; return ["user_uid", 'product_uid', "name", "cost", "sale", "quantity", "price", "status", "updated_at", "created_at", 'response'];
break; break;
default: default:
return []; return [];

View File

@ -313,7 +313,14 @@ abstract class BaseController extends Controller
} }
protected function reply_validate($entity) protected function reply_validate($entity)
{ {
$this->update_validate($entity); if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
} }
protected function reply_process($entity) protected function reply_process($entity)
{ {
@ -342,11 +349,18 @@ abstract class BaseController extends Controller
//Toggle 관련 //Toggle 관련
protected function toggle_validate($entity) protected function toggle_validate($entity)
{ {
$this->update_validate($entity); if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
} }
protected function toggle_process($entity) protected function toggle_process($entity)
{ {
return $this->update_process($entity); return $this->_model->modify($entity, $this->_viewDatas['fieldDatas']);
} }
public function toggle($uid, string $field) public function toggle($uid, string $field)
{ {
@ -369,11 +383,18 @@ abstract class BaseController extends Controller
//Batchjob 관련 //Batchjob 관련
protected function batchjob_validate($entity) protected function batchjob_validate($entity)
{ {
$this->update_validate($entity); if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
} }
protected function batchjob_process($entity) protected function batchjob_process($entity)
{ {
return $this->update_process($entity); return $this->_model->modify($entity, $this->_viewDatas['fieldDatas']);
} }
public function batchjob() public function batchjob()
{ {

View File

@ -21,7 +21,7 @@ class CardController extends PaymentController
public function getFields(string $action = ""): array public function getFields(string $action = ""): array
{ {
switch ($action) { switch ($action) {
case 'insert': case 'update':
return ["card_quota", "card_number", "card_expiration", "email", "mobile"]; return ["card_quota", "card_number", "card_expiration", "email", "mobile"];
break; break;
default: default:
@ -82,21 +82,27 @@ class CardController extends PaymentController
} }
//카드결제처리 //카드결제처리
protected function update_process($entity) private function pg_process(array $responses): array
{ {
//PG사 결제후 정보저장 //PG사 결제후 정보저장
$adapter = new PaymentAdapter(); $adapter = new PaymentAdapter();
$adapter->setDatas($this->_viewDatas['fieldDatas']); $adapter->setDatas($this->_viewDatas['fieldDatas']);
$response = $adapter->execute(); $result = $adapter->execute();
foreach ($result as $key => $value) {
$responses['response'] .= "{$key}:{$value}\n";
}
return $responses;
}
protected function update_process($entity)
{
//결과저장용 //결과저장용
$responses = array("status" => $this->_viewDatas['className']); $responses = array("status" => $this->_viewDatas['className'], "response" => "");
foreach ($response as $key => $value) {
array_push($responses, "{$key}:{$value}");
}
foreach ($this->_viewDatas['fieldDatas'] as $key => $value) { foreach ($this->_viewDatas['fieldDatas'] as $key => $value) {
array_push($responses, "{$key}:{$value}"); $responses['response'] .= "{$key}:{$value}\n";
} }
$this->_viewDatas['fieldDatas'] = $responses; $this->_viewDatas['fieldDatas'] = $this->pg_process($responses);
// echo var_export($this->_viewDatas['fieldDatas']);
// exit;
return parent::update_process($entity); return parent::update_process($entity);
} }
} }

View File

@ -20,7 +20,7 @@ class DepositController extends PaymentController
public function getFields(string $action = ""): array public function getFields(string $action = ""): array
{ {
switch ($action) { switch ($action) {
case 'insert': case 'update':
return ["email", "mobile"]; return ["email", "mobile"];
break; break;
default: default:
@ -59,23 +59,26 @@ class DepositController extends PaymentController
//무통장입금결제Form //무통장입금결제Form
protected function update_form_process($entity) protected function update_form_process($entity)
{ {
parent::update_form_process($entity); $entity = parent::update_form_process($entity);
$this->_viewDatas['bank'] = [ $this->_viewDatas['bank'] = [
"name" => getenv("payment.deposit.bank.name") ?: "은행명", "name" => getenv("payment.deposit.bank.name") ?: "은행명",
"account" => getenv("payment.deposit.bank.account") ?: "계좌번호", "account" => getenv("payment.deposit.bank.account") ?: "계좌번호",
"holder" => getenv("payment.deposit.bank.holder") ?: "예금주" "holder" => getenv("payment.deposit.bank.holder") ?: "예금주"
]; ];
return $entity;
} }
//무통장입금결제처리 //무통장입금결제처리
protected function update_process($entity) protected function update_process($entity)
{ {
//결과저장용 //결과저장용
$responses = array("status" => $this->_viewDatas['className']); $responses = array("status" => $this->_viewDatas['className'], "response" => "");
foreach ($this->_viewDatas['fieldDatas'] as $key => $value) { foreach ($this->_viewDatas['fieldDatas'] as $key => $value) {
array_push($responses, "{$key}:{$value}"); $responses['response'] .= "{$key}:{$value}\n";
} }
$this->_viewDatas['fieldDatas'] = $responses; $this->_viewDatas['fieldDatas'] = $responses;
// echo var_export($this->_viewDatas['fieldDatas']);
// exit;
return parent::update_process($entity); return parent::update_process($entity);
} }
} }

View File

@ -20,7 +20,7 @@ abstract class PaymentController extends EcommerceController
$this->_viewPath .= 'payment/'; $this->_viewPath .= 'payment/';
//Default 회원정보 Category //Default 회원정보 Category
$this->_category = DEFAULTS['PAYMENT_CATEGORY']; $this->_category = DEFAULTS['ORDER_CATEGORY'];
$this->_category ?: throw new \Exception("분류를 지정하지 않으셨습니다."); $this->_category ?: throw new \Exception("분류를 지정하지 않으셨습니다.");
$this->_viewDatas['category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_category]); $this->_viewDatas['category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_category]);
$this->_viewDatas['parent_category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_viewDatas['category']->getHierarchy_ParentUID()]); $this->_viewDatas['parent_category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_viewDatas['category']->getHierarchy_ParentUID()]);
@ -32,7 +32,13 @@ abstract class PaymentController extends EcommerceController
} }
//Update관련 //Update관련
public function update_form($uid) protected function update_form_process($entity)
{
$entity = parent::update_form_process($entity);
$this->_viewDatas['user'] = $this->getUserModel()->getEntity([$this->getUserModel()->getPrimaryKey() => $this->_viewDatas['auth'][AUTH_FIELDS['ID']]]);
return $entity;
}
final public function update_form($uid)
{ {
try { try {
$this->_viewDatas = $this->init(__FUNCTION__); $this->_viewDatas = $this->init(__FUNCTION__);

View File

@ -77,6 +77,9 @@ function getFieldView_OrderHelper($field, $entity, array $viewDatas)
case 'view_cnt': case 'view_cnt':
return number_format(!$value ? 0 : $value); return number_format(!$value ? 0 : $value);
break; break;
case 'response':
return nl2br($value);
break;
case 'content': case 'content':
return html_entity_decode($value); return html_entity_decode($value);
break; break;
@ -134,12 +137,12 @@ function getFieldIndex_Row_OrderHelper($field, $entity, array $viewDatas): strin
return sprintf( return sprintf(
"<td nowrap><div class=\"payment\">%s</div><div class=\"payment\">%s</div></td>", "<td nowrap><div class=\"payment\">%s</div><div class=\"payment\">%s</div></td>",
anchor( anchor(
URLS['paymentCard'] . '?order_uid=' . $entity->getPrimaryKey(), URLS['paymentCard'] . '/' . $entity->getPrimaryKey(),
"카 드 결 제", "카 드 결 제",
["class" => "btn btn-sm btn-primary btn-circle", "style" => "color:white", "target" => "_self"] ["class" => "btn btn-sm btn-primary btn-circle", "style" => "color:white", "target" => "_self"]
), ),
anchor( anchor(
URLS['paymentDeposit'] . '?order_uid=' . $entity->getPrimaryKey(), URLS['paymentDeposit'] . '/' . $entity->getPrimaryKey(),
"무통장입금", "무통장입금",
["class" => "btn btn-sm btn-info btn-circle", "style" => "color:white", "target" => "_self"] ["class" => "btn btn-sm btn-info btn-circle", "style" => "color:white", "target" => "_self"]
) )
@ -156,7 +159,19 @@ function getFieldIndex_Row_OrderHelper($field, $entity, array $viewDatas): strin
//Admin용 //Admin용
function getFieldIndex_Row_OrderHelper_Admin($field, $entity, array $viewDatas): string function getFieldIndex_Row_OrderHelper_Admin($field, $entity, array $viewDatas): string
{ {
$value = $entity->$field ?: DEFAULTS['EMPTY'];
switch ($field) { switch ($field) {
case 'title':
case 'name':
return sprintf(
"<td>%s</td>",
anchor(
current_url() . '/view/' . $entity->getPrimaryKey(),
$value,
["target" => "_self"]
)
);
break;
default: default:
if (in_array($field, $viewDatas['fieldFilters'])) { if (in_array($field, $viewDatas['fieldFilters'])) {
$attributes["onChange"] = sprintf( $attributes["onChange"] = sprintf(

View File

@ -11,6 +11,7 @@ return [
'sale' => "할인", 'sale' => "할인",
'quantity' => "수량", 'quantity' => "수량",
'price' => "결제금액", 'price' => "결제금액",
'response' => "결제처리결과",
'status' => "상태", 'status' => "상태",
'updated_at' => "수정일", 'updated_at' => "수정일",
'created_at' => "작성일" 'created_at' => "작성일"

View File

@ -14,7 +14,7 @@ class OrderModel extends BaseModel
public function __construct() public function __construct()
{ {
parent::__construct('Order'); parent::__construct('Order');
$this->allowedFields = [...$this->allowedFields, 'product_uid', "user_uid", "name", "cost", "sale", "quantity", "price", "status"]; $this->allowedFields = [...$this->allowedFields, 'product_uid', "user_uid", "name", "cost", "sale", "quantity", "price", "response", "status"];
$this->validationRules = [...$this->validationRules, ...$this->getFieldRules($this->allowedFields),]; $this->validationRules = [...$this->validationRules, ...$this->getFieldRules($this->allowedFields),];
} }
final public function getTitleField(): string final public function getTitleField(): string

View File

@ -1,23 +1,23 @@
<?= $this->extend('layouts/front') ?> <?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?> <?= $this->section('content') ?>
<link href="/css/front/content.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/css/front/content.css" media="screen" rel="stylesheet" type="text/css" />
<div id="content">> <div id="content">
<div><?= html_entity_decode($viewDatas['category']->head) ?></div> <div><?= html_entity_decode($viewDatas['category']->head) ?></div>
<?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?> <?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="form table table-bordered table-hover table-striped"> <table class="form table table-bordered table-hover table-striped">
<tr> <tr>
<td class="label">상품명</td> <td class="label">상품명</td>
<td class="column"><?= $viewDatas['order']->getTitle() ?></td> <td class="column"><?= $viewDatas['entity']->getTitle() ?></td>
</tr> </tr>
<tr> <tr>
<td class="label">결제금액</td> <td class="label">결제금액</td>
<td class="column"><?= number_format($viewDatas['order']->price) ?>원</td> <td class="column"><?= number_format($viewDatas['entity']->price) ?>원</td>
</tr> </tr>
<?php foreach ($viewDatas['fields'] as $field) : ?> <?php foreach ($viewDatas['fields'] as $field) : ?>
<tr> <tr>
<td class="label"><?= getFieldLabel_BoardHelper($field, $viewDatas) ?></td> <td class="label"><?= getFieldLabel_CardHelper($field, $viewDatas) ?></td>
<td class="column"> <td class="column">
<?= getFieldForm_BoardHelper($field, old($field, $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']), $viewDatas) ?> <?= getFieldForm_CardHelper($field, old($field, $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']), $viewDatas) ?>
<?= validation_show_error($field); ?> <?= validation_show_error($field); ?>
</td> </td>
</tr> </tr>

View File

@ -7,11 +7,11 @@
<table class="form table table-bordered table-hover table-striped"> <table class="form table table-bordered table-hover table-striped">
<tr> <tr>
<td class="label">상품명</td> <td class="label">상품명</td>
<td class="column"><?= $viewDatas['order']->getTitle() ?></td> <td class="column"><?= $viewDatas['entity']->getTitle() ?></td>
</tr> </tr>
<tr> <tr>
<td class="label">결제금액</td> <td class="label">결제금액</td>
<td class="column"><?= number_format($viewDatas['order']->price) ?>원</td> <td class="column"><?= number_format($viewDatas['entity']->price) ?>원</td>
</tr> </tr>
<tr> <tr>
<td class="label">은행명</td> <td class="label">은행명</td>
@ -29,25 +29,16 @@
<tr> <tr>
<td class="label"><?= getFieldLabel_DepositHelper($field, $viewDatas) ?></td> <td class="label"><?= getFieldLabel_DepositHelper($field, $viewDatas) ?></td>
<td class="column"> <td class="column">
<?= getFieldForm_DepositHelper($field, old($field, DEFAULTS['EMPTY']), $viewDatas) ?> <?= getFieldForm_DepositHelper($field, old($field, $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']), $viewDatas) ?>
<?= validation_show_error($field); ?> <?= validation_show_error($field); ?>
</td> </td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
<tr>
<td colspan="2">
설명문......
설명문......
설명문......
설명문......
</td>
</tr>
<tr> <tr>
<td valign="bottom" colspan="2"><?= form_submit('', '무통장입금', array("class" => "btn btn-outline btn-primary")); ?></td> <td valign="bottom" colspan="2"><?= form_submit('', '무통장입금', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr> </tr>
</table> </table>
<?= form_close(); ?> <?= form_close(); ?>
</table>
<div><?= html_entity_decode($viewDatas['category']->tail) ?></div> <div><?= html_entity_decode($viewDatas['category']->tail) ?></div>
</div> </div>
<?= $this->endSection() ?> <?= $this->endSection() ?>

View File

@ -11,7 +11,7 @@
<tr> <tr>
<th>번호</th> <th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><?= getFieldIndex_Column_OrderHelper($field, $viewDatas) ?><?php endforeach ?> <?php foreach ($viewDatas['fields'] as $field) : ?><?= getFieldIndex_Column_OrderHelper($field, $viewDatas) ?><?php endforeach ?>
<th>취소</th> <th>작업</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -24,7 +24,11 @@
<?php foreach ($viewDatas['fields'] as $field) : ?> <?php foreach ($viewDatas['fields'] as $field) : ?>
<?= getFieldIndex_Row_OrderHelper($field, $entity, $viewDatas) ?> <?= getFieldIndex_Row_OrderHelper($field, $entity, $viewDatas) ?>
<?php endforeach ?> <?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td> <td>
<?php if ($entity->status == DEFAULTS['STATUS']) : ?>
<?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?>
<?php endif ?>
</td>
</tr> </tr>
<?php $cnt++ ?> <?php $cnt++ ?>
<?php endforeach ?> <?php endforeach ?>

View File

@ -9,8 +9,5 @@
<div class="accordion-item"> <div class="accordion-item">
<h2><a href="/admin/order"><?= CLASS_ICONS['ORDER'] ?></i>주문 관리</a></h2> <h2><a href="/admin/order"><?= CLASS_ICONS['ORDER'] ?></i>주문 관리</a></h2>
</div> </div>
<div class="accordion-item">
<h2><a href="/admin/payment"><?= CLASS_ICONS['PAYMENT'] ?></i>결제 관리</a></h2>
</div>
</div> </div>
</div> </div>