shoppingmallv2 init...
This commit is contained in:
parent
8340e07db0
commit
cc4366d6ab
@ -208,6 +208,7 @@ define('ICONS', [
|
||||
'EXCEL' => '<img src="/images/common/excel.png"/>',
|
||||
'HOME' => '<i class="bi bi-house-door-fill"></i>',
|
||||
'PLAY' => '<i class="bi bi-play-fill"></i>',
|
||||
'CART' => '<i class="bi bi-cart4"></i>',
|
||||
'IMAGE_FILE' => '<i class="bi bi-file-earmark-image"></i>',
|
||||
]);
|
||||
define('CLASS_ICONS', [
|
||||
@ -217,8 +218,7 @@ define('CLASS_ICONS', [
|
||||
'SITEPAGE' => '<i class="bi bi-body-text"></i>',
|
||||
'CATEGORY' => '<i class="bi bi-boxes"></i>',
|
||||
'PRODUCT' => '<i class="bi bi-box2"></i>',
|
||||
'CART' => '<i class="bi bi-cart4"></i>',
|
||||
'ORDER' => '<i class="bi bi-clipboard-check"></i>',
|
||||
'ORDER' => '<i class="bi bi-cart4"></i>',
|
||||
'PAYMENT' => '<i class="bi bi-cash-coin"></i>',
|
||||
]);
|
||||
define('AUDIOS', [
|
||||
|
||||
@ -120,6 +120,8 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
|
||||
});
|
||||
$routes->group('order', static function ($routes) {
|
||||
$routes->get('', 'OrderController::index');
|
||||
$routes->get('update/(:uuid)', 'OrderController::update_form/$1');
|
||||
$routes->post('update/(:uuid)', 'OrderController::update/$1');
|
||||
$routes->get('view/(:uuid)', 'OrderController::view/$1');
|
||||
$routes->get('delete/(:uuid)', 'OrderController::delete/$1', ['filter' => 'authFilter:master']);
|
||||
$routes->get('toggle/(:uuid)/(:hash)', 'OrderController::toggle/$1/$2');
|
||||
|
||||
@ -35,10 +35,6 @@ $routes->setAutoRoute(false);
|
||||
$routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}');
|
||||
|
||||
$routes->get('/', 'Home::index');
|
||||
$routes->get('/login', 'AuthController::login');
|
||||
$routes->post('/signup', 'AuthController::signup/local');
|
||||
$routes->get('/signup/(:alpha)', 'AuthController::signup/$1');
|
||||
$routes->get('/logout', 'AuthController::logout');
|
||||
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
|
||||
});
|
||||
$routes->group('ecommerce', ['namespace' => 'App\Controllers'], function ($routes) {
|
||||
@ -124,6 +120,8 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
|
||||
});
|
||||
$routes->group('order', static function ($routes) {
|
||||
$routes->get('', 'OrderController::index');
|
||||
$routes->get('update/(:uuid)', 'OrderController::update_form/$1');
|
||||
$routes->post('update/(:uuid)', 'OrderController::update/$1');
|
||||
$routes->get('view/(:uuid)', 'OrderController::view/$1');
|
||||
$routes->get('delete/(:uuid)', 'OrderController::delete/$1', ['filter' => 'authFilter:master']);
|
||||
$routes->get('toggle/(:uuid)/(:hash)', 'OrderController::toggle/$1/$2');
|
||||
@ -131,10 +129,16 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
|
||||
});
|
||||
});
|
||||
$routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($routes) {
|
||||
$routes->group('user', ['namespace' => 'App\Controllers\Front', 'filter' => 'authFilter:user'], static function ($routes) {
|
||||
$routes->get('update/(:uuid)', 'UserController::update_form/$1');
|
||||
$routes->post('update/(:uuid)', 'UserController::update/R1');
|
||||
$routes->get('view/(:uuid)', 'UserController::view/$1');
|
||||
$routes->group('user', static function ($routes) {
|
||||
$routes->get('', 'UserController::index', ['filter' => 'authFilter:user']);
|
||||
$routes->get('insert', 'UserController::insert_form');
|
||||
$routes->post('insert', 'UserController::insert');
|
||||
$routes->get('update/(:uuid)', 'UserController::update_form/$1', ['filter' => 'authFilter:user']);
|
||||
$routes->post('update/(:uuid)', 'UserController::update/$1', ['filter' => 'authFilter:user']);
|
||||
$routes->get('login', 'UserController::login_form');
|
||||
$routes->post('login', 'UserController::login/local');
|
||||
$routes->get('signup/(:alpha)', 'UserController::login/$1');
|
||||
$routes->get('logout', 'UserController::logout', ['filter' => 'authFilter:user']);
|
||||
});
|
||||
$routes->group('board', static function ($routes) {
|
||||
$routes->get('', 'BoardController::index');
|
||||
|
||||
@ -18,15 +18,17 @@ class OrderController extends AdminController
|
||||
|
||||
final public function getFields(string $action = ""): array
|
||||
{
|
||||
$fields = ["user_uid", 'product_uid', "quantity", "price", "status"];
|
||||
switch ($action) {
|
||||
case 'update':
|
||||
return ['product_uid', "cost", "sale", "quantity", "price", "status"];
|
||||
break;
|
||||
case "index":
|
||||
case "excel":
|
||||
case "view":
|
||||
return ["user_uid", 'product_uid', "name", "quantity", "price", "status", "updated_at", "created_at"];
|
||||
return ["user_uid", 'product_uid', "name", "cost", "sale", "quantity", "price", "status", "updated_at", "created_at"];
|
||||
break;
|
||||
default:
|
||||
return $fields;
|
||||
return throw new \Exception("{$action} 해당기능은 없습니다.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,12 +21,12 @@ class OrderController extends FrontController
|
||||
|
||||
final public function getFields(string $action = ""): array
|
||||
{
|
||||
$fields = ["product_uid", "quantity", "price", "status"];
|
||||
$fields = ["product_uid", "cost", "sale", "quantity", "price", "status"];
|
||||
switch ($action) {
|
||||
case "index":
|
||||
case "excel":
|
||||
case "view":
|
||||
return ['name', "quantity", "price", "status", "updated_at", "created_at"];
|
||||
return ['name', "cost", "sale", "quantity", "price", "status", "updated_at", "created_at"];
|
||||
break;
|
||||
default:
|
||||
return $fields;
|
||||
|
||||
@ -122,8 +122,8 @@ CREATE TABLE shoppingmall.tw_product (
|
||||
name varchar(255) NOT NULL COMMENT '상품명',
|
||||
photo varchar(255) NULL COMMENT '이미지',
|
||||
cost int(10) UNSIGNED NOT NULL COMMENT '원가',
|
||||
price int(10) UNSIGNED NOT NULL COMMENT '판매가',
|
||||
sale int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '할인가',
|
||||
price int(10) UNSIGNED NOT NULL COMMENT '판매가',
|
||||
stock int(5) UNSIGNED DEFAULT 1 NULL COMMENT '재고수량',
|
||||
view_cnt int(4) UNSIGNED DEFAULT 1 NOT NULL DEFAULT 0 COMMENT '조회수',
|
||||
content text NOT NULL COMMENT '상품정보',
|
||||
@ -142,8 +142,10 @@ CREATE TABLE shoppingmall.tw_order (
|
||||
product_uid varchar(36) NULL COMMENT '상품 정보',
|
||||
user_uid varchar(36) NULL COMMENT '사용자 정보',
|
||||
name varchar(255) NOT NULL COMMENT '상품명',
|
||||
cost int(10) UNSIGNED NOT NULL COMMENT '구매원가',
|
||||
sale int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '할인가',
|
||||
price int(10) UNSIGNED NOT NULL COMMENT '결제액',
|
||||
quantity varchar(255) NOT NULL COMMENT '수량',
|
||||
price int(10) UNSIGNED NOT NULL COMMENT '구매가',
|
||||
status varchar(10) NOT NULL DEFAULT 'use' COMMENT 'use: 주문대기, unuse: 사용않함 등등',
|
||||
updated_at timestamp NULL DEFAULT NULL,
|
||||
created_at timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
|
||||
@ -143,7 +143,27 @@ function getFieldIndex_Row_BoardHelper($field, $entity, array $viewDatas): strin
|
||||
//Admin용
|
||||
function getFieldIndex_Row_BoardHelper_Admin($field, $entity, array $viewDatas): string
|
||||
{
|
||||
$value = $entity->$field ?: DEFAULTS['EMPTY'];
|
||||
switch ($field) {
|
||||
case 'title':
|
||||
case 'name':
|
||||
$reply = anchor(
|
||||
current_url() . '/reply/' . $entity->getPrimaryKey(),
|
||||
ICONS['REPLY'],
|
||||
["target" => "_self"]
|
||||
);
|
||||
$view = anchor(
|
||||
current_url() . '/view/' . $entity->getPrimaryKey(),
|
||||
$value,
|
||||
["target" => "_self"]
|
||||
);
|
||||
return sprintf(
|
||||
"<div style=\"text-align:left; padding-left:%spx\">%s %s</div>",
|
||||
$entity->getHierarchy_Depth() * DEFAULTS['HIERARCHY_GRPDEPTH'],
|
||||
$reply,
|
||||
$view
|
||||
);
|
||||
break;
|
||||
default:
|
||||
if (in_array($field, $viewDatas['fieldFilters'])) {
|
||||
$attributes["onChange"] = sprintf(
|
||||
|
||||
@ -128,7 +128,7 @@ function getFieldIndex_Row_ProductHelper($field, $entity, array $viewDatas): str
|
||||
case 'title':
|
||||
case 'name':
|
||||
return anchor(
|
||||
current_url() . '/view/' . $entity->getPrimaryKey(),
|
||||
current_url() . '/view/' . $entity->getPrimaryKey() . '?category=' . $viewDatas['category']->getPrimaryKey(),
|
||||
$value ? str_split($value, 66)[0] . "..." : "",
|
||||
["target" => "_self"]
|
||||
);
|
||||
@ -141,7 +141,16 @@ function getFieldIndex_Row_ProductHelper($field, $entity, array $viewDatas): str
|
||||
//Admin용
|
||||
function getFieldIndex_Row_ProductHelper_Admin($field, $entity, array $viewDatas): string
|
||||
{
|
||||
$value = $entity->$field ?: DEFAULTS['EMPTY'];
|
||||
switch ($field) {
|
||||
case 'title':
|
||||
case 'name':
|
||||
return anchor(
|
||||
current_url() . '/view/' . $entity->getPrimaryKey(),
|
||||
$value ? str_split($value, 66)[0] . "..." : "",
|
||||
["target" => "_self"]
|
||||
);
|
||||
break;
|
||||
default:
|
||||
if (in_array($field, $viewDatas['fieldFilters'])) {
|
||||
$attributes["onChange"] = sprintf(
|
||||
|
||||
@ -7,8 +7,10 @@ return [
|
||||
'sess_id' => "세션ID",
|
||||
'user_uid' => "사용자정보",
|
||||
'name' => "상품명",
|
||||
'cost' => "구매원가",
|
||||
'sale' => "할인가",
|
||||
'quantity' => "수량",
|
||||
'price' => "구매가",
|
||||
'price' => "결제금액",
|
||||
'status' => "상태",
|
||||
'updated_at' => "수정일",
|
||||
'created_at' => "작성일"
|
||||
|
||||
@ -14,7 +14,7 @@ class OrderModel extends BaseModel
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('Order');
|
||||
$this->allowedFields = [...$this->allowedFields, 'product_uid', "user_uid", "name", "quantity", "price", "status"];
|
||||
$this->allowedFields = [...$this->allowedFields, 'product_uid', "user_uid", "name", "cost", "sale", "quantity", "price", "status"];
|
||||
$this->validationRules = [...$this->validationRules, ...$this->getFieldRules($this->allowedFields),];
|
||||
}
|
||||
final public function getTitleField(): string
|
||||
@ -30,10 +30,14 @@ class OrderModel extends BaseModel
|
||||
case $this->getTitleField():
|
||||
$rules[$field] = "required|trim|string";
|
||||
break;
|
||||
case 'cost':
|
||||
case 'quantity':
|
||||
case 'price':
|
||||
$rules[$field] = "required|numeric";
|
||||
break;
|
||||
case 'sale':
|
||||
$rules[$field] = "if_exist|numeric";
|
||||
break;
|
||||
default:
|
||||
$rules = parent::getFieldRule($field, $rules, $action);
|
||||
break;
|
||||
@ -84,7 +88,14 @@ class OrderModel extends BaseModel
|
||||
//장바구니에 넣기
|
||||
public function addCart(array $formDatas): OrderEntity
|
||||
{
|
||||
return $this->create_process(new OrderEntity(), $formDatas);
|
||||
$orderFormDatas = [
|
||||
$formDatas['product_uid'] = $formDatas['product_uid'],
|
||||
$formDatas['cost'] = $formDatas['price'],
|
||||
$formDatas['sale'] = 0,
|
||||
$formDatas['quantity'] = $formDatas['quantity'],
|
||||
$formDatas['price'] = ($formDatas['cost'] - $formDatas['sale']) * $formDatas['quantity'],
|
||||
];
|
||||
return $this->create_process(new OrderEntity(), $orderFormDatas);
|
||||
}
|
||||
//장바구니에 빼기
|
||||
public function cancelCart(OrderEntity $entity)
|
||||
|
||||
@ -45,10 +45,12 @@ class ProductModel extends BaseModel
|
||||
break;
|
||||
case 'cost':
|
||||
case 'price':
|
||||
case 'sale':
|
||||
case 'stock':
|
||||
$rules[$field] = "required|numeric";
|
||||
break;
|
||||
case 'sale':
|
||||
$rules[$field] = "if_exist|numeric";
|
||||
break;
|
||||
case "content":
|
||||
$rules[$field] = "required|string";
|
||||
break;
|
||||
|
||||
21
app/Views/admin/order/update.php
Normal file
21
app/Views/admin/order/update.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?= $this->extend('layouts/admin') ?>
|
||||
<?= $this->section('content') ?>
|
||||
<div class="content">
|
||||
<?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||
<table class="form table table-bordered table-hover table-striped">
|
||||
<?php foreach ($viewDatas['fields'] as $field) : ?>
|
||||
<tr>
|
||||
<td class="label"><?= getFieldLabel_OrderHelper($field, $viewDatas) ?></td>
|
||||
<td class="column">
|
||||
<?= getFieldForm_OrderHelper($field, old($field, $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']), $viewDatas) ?>
|
||||
<?= validation_show_error($field); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr>
|
||||
<td valign="bottom" colspan="2"><?= form_submit('', '수정', array("class" => "btn btn-outline btn-primary")); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?= form_close(); ?>
|
||||
</div>
|
||||
<?= $this->endSection() ?>
|
||||
@ -10,6 +10,9 @@
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav justify-content-end">
|
||||
<li class="cart nav-item">
|
||||
<?= anchor('/front/order', ICONS['CART'], ["target" => "_self"]); ?>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/member_link'); ?>
|
||||
</li>
|
||||
|
||||
@ -4,12 +4,22 @@
|
||||
background-color:#eeeeee
|
||||
}
|
||||
|
||||
#top_navigator div.navigator_center span{
|
||||
#top_navigator ul.justify-content-center div.navigator_center span{
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
}
|
||||
#top_navigator div.navigator_center span strong{
|
||||
#top_navigator ul.justify-content-center div.navigator_center span strong{
|
||||
color:#26417D;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#top_navigator ul.justify-content-center div.navigator_center span strong{
|
||||
color:#26417D;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#top_navigator ul.justify-content-end li.cart a{
|
||||
font-size:18px;
|
||||
font-weight: 500;
|
||||
color:black;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user