dbmsv3 init...1
This commit is contained in:
parent
2d41a7e975
commit
4b64262234
@ -56,6 +56,20 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
|
||||
$routes->group('search', ['namespace' => 'App\Controllers\Admin'], function ($routes) {
|
||||
$routes->get('/', 'SearchController::index');
|
||||
});
|
||||
$routes->group('board', ['namespace' => 'App\Controllers\Admin'], function ($routes) {
|
||||
$routes->get('/', 'BoardController::index');
|
||||
$routes->get('create', 'BoardController::create_form');
|
||||
$routes->post('create', 'BoardController::create');
|
||||
$routes->get('modify/(:num)', 'BoardController::modify_form/$1');
|
||||
$routes->post('modify/(:num)', 'BoardController::modify/$1');
|
||||
$routes->get('view/(:num)', 'BoardController::view/$1');
|
||||
$routes->get('delete/(:num)', 'BoardController::delete/$1');
|
||||
$routes->get('toggle/(:num)/(:any)', 'BoardController::toggle/$1/$2');
|
||||
$routes->post('batchjob', 'BoardController::batchjob');
|
||||
$routes->post('batchjob_delete', 'BoardController::batchjob_delete');
|
||||
$routes->get('download/(:alpha)', 'BoardController::download/$1');
|
||||
$routes->get('latest', 'BoardController::latest');
|
||||
});
|
||||
//Customer 관련
|
||||
$routes->group('customer', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
|
||||
$routes->group('client', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
|
||||
|
||||
47
app/Controllers/Admin/BoardController.php
Normal file
47
app/Controllers/Admin/BoardController.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\Admin;
|
||||
|
||||
use App\Services\BoardService;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class BoardController extends AdminController
|
||||
{
|
||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||
{
|
||||
parent::initController($request, $response, $logger);
|
||||
$this->content_title = lang("{$this->getService()->getClassName()}.title");
|
||||
$this->class_path .= $this->getService()->getClassName();
|
||||
// $this->view_path = '/admin/search';
|
||||
}
|
||||
public function getService(): BoardService
|
||||
{
|
||||
if (!$this->_service) {
|
||||
$this->_service = new BoardService();
|
||||
}
|
||||
return $this->_service;
|
||||
}
|
||||
|
||||
public function latest(): ResponseInterface
|
||||
{
|
||||
$this->getService()->setAction(__FUNCTION__);
|
||||
$this->getService()->setFormFields();
|
||||
//전달값정의
|
||||
$this->getService()->setFormDatas($this->request->getGet());
|
||||
$formDatas = $this->getSErvice()->getFormDatas();
|
||||
$datas = [];
|
||||
foreach (
|
||||
$this->getService()->latest(
|
||||
[
|
||||
'category' => array_key_exists('category', $formDatas) && $formDatas['category'] ? $formDatas['category'] : 'notice'
|
||||
],
|
||||
array_key_exists('limit', $formDatas) ? $formDatas['limit'] : 3
|
||||
) as $entity
|
||||
) {
|
||||
$datas[] = $entity->toArray();
|
||||
}
|
||||
return $this->response->setJSON($datas);
|
||||
}
|
||||
}
|
||||
@ -48,7 +48,8 @@
|
||||
"PdXX5ghGi8ZK89G9OjtnQ",
|
||||
"VN2Issjy8MFts5mr8-_9S",
|
||||
"0SUAXsejoiaHZwmW8msS3",
|
||||
"6lQ2M_5glzZEDHxKHx83G"
|
||||
"6lQ2M_5glzZEDHxKHx83G",
|
||||
"cN9peISo4OoJ1_xErNg5s"
|
||||
],
|
||||
"relationshipIds": [
|
||||
"AH1dyESfueUlhcoiU6KsQ",
|
||||
@ -1094,43 +1095,42 @@
|
||||
"createAt": 1758759637696
|
||||
}
|
||||
},
|
||||
"FfKKPJaDUSq_L0PzVw0qB": {
|
||||
"id": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "osinfo",
|
||||
"comment": "OS정보",
|
||||
"cN9peISo4OoJ1_xErNg5s": {
|
||||
"id": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "boardinfo",
|
||||
"comment": "게시판정보",
|
||||
"columnIds": [
|
||||
"QdsS-0uL_5e3e06QA_j3Q",
|
||||
"DJt6tYEL_T0gaWiKYG3xx",
|
||||
"DSGSteH2BTfk7qHRhLwjO",
|
||||
"PsRm4Fikl-4V0UP4zMDmc",
|
||||
"J3W8i89XtySWfcPJMsDyW",
|
||||
"ZMYQFNu7YhdsurJW_74qc",
|
||||
"i0qqJAwb21-h-qVQwsJCL",
|
||||
"s-UqSelR4i1Nkogv6fWsD"
|
||||
"EUzTz63zrCQEb9T_HCQAf",
|
||||
"Zocwj4zycTnOQ_7EUAe8f",
|
||||
"Cf3iDo9RBYrQ6daeLoRJ1",
|
||||
"yZm3jcTNVaYmF_uQEfcqP",
|
||||
"y8ARb2M7vwx49Nh9AyDe3",
|
||||
"QmTaq8IeGshe6v7YQwogt",
|
||||
"EmCxKPyupmBph6T1YeEeL",
|
||||
"iJ8TkaB0z_KgdaaBQSzXp"
|
||||
],
|
||||
"seqColumnIds": [
|
||||
"QdsS-0uL_5e3e06QA_j3Q",
|
||||
"DJt6tYEL_T0gaWiKYG3xx",
|
||||
"DSGSteH2BTfk7qHRhLwjO",
|
||||
"104uG3QE6lGMgJeJZdLbP",
|
||||
"Si6K8JqHNqw_lz_1sDo6b",
|
||||
"PsRm4Fikl-4V0UP4zMDmc",
|
||||
"J3W8i89XtySWfcPJMsDyW",
|
||||
"ZMYQFNu7YhdsurJW_74qc",
|
||||
"i0qqJAwb21-h-qVQwsJCL",
|
||||
"s-UqSelR4i1Nkogv6fWsD"
|
||||
"EUzTz63zrCQEb9T_HCQAf",
|
||||
"Zocwj4zycTnOQ_7EUAe8f",
|
||||
"Cf3iDo9RBYrQ6daeLoRJ1",
|
||||
"z5pbqehtfFOg2ggspUVdN",
|
||||
"yZm3jcTNVaYmF_uQEfcqP",
|
||||
"y8ARb2M7vwx49Nh9AyDe3",
|
||||
"QmTaq8IeGshe6v7YQwogt",
|
||||
"EmCxKPyupmBph6T1YeEeL",
|
||||
"iJ8TkaB0z_KgdaaBQSzXp"
|
||||
],
|
||||
"ui": {
|
||||
"x": 630.3796,
|
||||
"y": 2570.6169,
|
||||
"zIndex": 5440,
|
||||
"x": 629.1139,
|
||||
"y": 2607.3256,
|
||||
"zIndex": 5388,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthComment": 62,
|
||||
"color": ""
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758849630889,
|
||||
"createAt": 1758760696242
|
||||
"updateAt": 1760931455260,
|
||||
"createAt": 1760931280848
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -9215,186 +9215,6 @@
|
||||
"createAt": 1758759927103
|
||||
}
|
||||
},
|
||||
"QdsS-0uL_5e3e06QA_j3Q": {
|
||||
"id": "QdsS-0uL_5e3e06QA_j3Q",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "uid",
|
||||
"comment": "DISK정보",
|
||||
"dataType": "INT",
|
||||
"default": "",
|
||||
"options": 11,
|
||||
"ui": {
|
||||
"keys": 1,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760725178,
|
||||
"createAt": 1758760723082
|
||||
}
|
||||
},
|
||||
"DJt6tYEL_T0gaWiKYG3xx": {
|
||||
"id": "DJt6tYEL_T0gaWiKYG3xx",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "title",
|
||||
"comment": "",
|
||||
"dataType": "VARCHAR(50)",
|
||||
"default": "",
|
||||
"options": 12,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 75,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723082,
|
||||
"createAt": 1758760723082
|
||||
}
|
||||
},
|
||||
"DSGSteH2BTfk7qHRhLwjO": {
|
||||
"id": "DSGSteH2BTfk7qHRhLwjO",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "price",
|
||||
"comment": "기본금액",
|
||||
"dataType": "INT",
|
||||
"default": "0",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723082,
|
||||
"createAt": 1758760723082
|
||||
}
|
||||
},
|
||||
"104uG3QE6lGMgJeJZdLbP": {
|
||||
"id": "104uG3QE6lGMgJeJZdLbP",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "stock",
|
||||
"comment": "재고",
|
||||
"dataType": "INT",
|
||||
"default": "0",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723082
|
||||
}
|
||||
},
|
||||
"Si6K8JqHNqw_lz_1sDo6b": {
|
||||
"id": "Si6K8JqHNqw_lz_1sDo6b",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "format",
|
||||
"comment": "포맷수",
|
||||
"dataType": "INT",
|
||||
"default": "0",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723083
|
||||
}
|
||||
},
|
||||
"J3W8i89XtySWfcPJMsDyW": {
|
||||
"id": "J3W8i89XtySWfcPJMsDyW",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "status",
|
||||
"comment": "",
|
||||
"dataType": "VARCHAR(20)",
|
||||
"default": "'available'",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 75,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723083
|
||||
}
|
||||
},
|
||||
"ZMYQFNu7YhdsurJW_74qc": {
|
||||
"id": "ZMYQFNu7YhdsurJW_74qc",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "updated_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 62,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723083
|
||||
}
|
||||
},
|
||||
"i0qqJAwb21-h-qVQwsJCL": {
|
||||
"id": "i0qqJAwb21-h-qVQwsJCL",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "created_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "CURRENT_TIMESTAMP",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 122
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723083
|
||||
}
|
||||
},
|
||||
"s-UqSelR4i1Nkogv6fWsD": {
|
||||
"id": "s-UqSelR4i1Nkogv6fWsD",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "deleted_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758760723083,
|
||||
"createAt": 1758760723083
|
||||
}
|
||||
},
|
||||
"0mMuq9X72PA3WvfurTA0d": {
|
||||
"id": "0mMuq9X72PA3WvfurTA0d",
|
||||
"tableId": "6lQ2M_5glzZEDHxKHx83G",
|
||||
@ -9415,26 +9235,6 @@
|
||||
"createAt": 1758762819102
|
||||
}
|
||||
},
|
||||
"PsRm4Fikl-4V0UP4zMDmc": {
|
||||
"id": "PsRm4Fikl-4V0UP4zMDmc",
|
||||
"tableId": "FfKKPJaDUSq_L0PzVw0qB",
|
||||
"name": "stock",
|
||||
"comment": "재고",
|
||||
"dataType": "INT",
|
||||
"default": "0",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1758762826114,
|
||||
"createAt": 1758762826113
|
||||
}
|
||||
},
|
||||
"I8DumSwkLWz-Ve5_vc0uE": {
|
||||
"id": "I8DumSwkLWz-Ve5_vc0uE",
|
||||
"tableId": "B4qGh3KZsXHQ3_4EOgwJZ",
|
||||
@ -9654,6 +9454,186 @@
|
||||
"updateAt": 1760573707223,
|
||||
"createAt": 1760573680816
|
||||
}
|
||||
},
|
||||
"EUzTz63zrCQEb9T_HCQAf": {
|
||||
"id": "EUzTz63zrCQEb9T_HCQAf",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "uid",
|
||||
"comment": "게시판정보",
|
||||
"dataType": "INT",
|
||||
"default": "",
|
||||
"options": 9,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 62,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931321549,
|
||||
"createAt": 1760931303731
|
||||
}
|
||||
},
|
||||
"Cf3iDo9RBYrQ6daeLoRJ1": {
|
||||
"id": "Cf3iDo9RBYrQ6daeLoRJ1",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "title",
|
||||
"comment": "",
|
||||
"dataType": "VARCHAR",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931339249,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"z5pbqehtfFOg2ggspUVdN": {
|
||||
"id": "z5pbqehtfFOg2ggspUVdN",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "price",
|
||||
"comment": "기본금액",
|
||||
"dataType": "INT",
|
||||
"default": "0",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931303732,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"yZm3jcTNVaYmF_uQEfcqP": {
|
||||
"id": "yZm3jcTNVaYmF_uQEfcqP",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "content",
|
||||
"comment": "",
|
||||
"dataType": "TEXT",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 60,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931366120,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"y8ARb2M7vwx49Nh9AyDe3": {
|
||||
"id": "y8ARb2M7vwx49Nh9AyDe3",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "status",
|
||||
"comment": "",
|
||||
"dataType": "VARCHAR(20)",
|
||||
"default": "'normal'",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 75,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931377524,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"QmTaq8IeGshe6v7YQwogt": {
|
||||
"id": "QmTaq8IeGshe6v7YQwogt",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "updated_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 62,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931303732,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"EmCxKPyupmBph6T1YeEeL": {
|
||||
"id": "EmCxKPyupmBph6T1YeEeL",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "created_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "CURRENT_TIMESTAMP",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 122
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931303732,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"iJ8TkaB0z_KgdaaBQSzXp": {
|
||||
"id": "iJ8TkaB0z_KgdaaBQSzXp",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "deleted_at",
|
||||
"comment": "",
|
||||
"dataType": "TIMESTAMP",
|
||||
"default": "",
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 65,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931303732,
|
||||
"createAt": 1760931303732
|
||||
}
|
||||
},
|
||||
"Zocwj4zycTnOQ_7EUAe8f": {
|
||||
"id": "Zocwj4zycTnOQ_7EUAe8f",
|
||||
"tableId": "cN9peISo4OoJ1_xErNg5s",
|
||||
"name": "category",
|
||||
"comment": "",
|
||||
"dataType": "VARCHAR(20)",
|
||||
"default": "'available'",
|
||||
"options": 8,
|
||||
"ui": {
|
||||
"keys": 0,
|
||||
"widthName": 60,
|
||||
"widthComment": 60,
|
||||
"widthDataType": 75,
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1760931405200,
|
||||
"createAt": 1760931386493
|
||||
}
|
||||
}
|
||||
},
|
||||
"relationshipEntities": {
|
||||
|
||||
@ -54,6 +54,36 @@ INSERT INTO `accountinfo` VALUES (1,1,988,0,'dddd',NULL,'www','2025-09-26',60000
|
||||
/*!40000 ALTER TABLE `accountinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `boardinfo`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `boardinfo`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `boardinfo` (
|
||||
`uid` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_uid` int(11) NOT NULL,
|
||||
`category` varchar(20) NOT NULL DEFAULT 'notice',
|
||||
`title` varchar(255) NOT NULL,
|
||||
`content` text DEFAULT NULL,
|
||||
`status` varchar(20) NOT NULL DEFAULT 'available',
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT current_timestamp(),
|
||||
`deleted_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`uid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `boardinfo`
|
||||
--
|
||||
|
||||
LOCK TABLES `boardinfo` WRITE;
|
||||
/*!40000 ALTER TABLE `boardinfo` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `boardinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `clientinfo`
|
||||
--
|
||||
@ -343,7 +373,7 @@ CREATE TABLE `payment` (
|
||||
KEY `FK_serviceinfo_TO_payment` (`serviceinfo_uid`),
|
||||
CONSTRAINT `FK_clientinfo_TO_payment` FOREIGN KEY (`clientinfo_uid`) REFERENCES `clientinfo` (`uid`),
|
||||
CONSTRAINT `FK_serviceinfo_TO_payment` FOREIGN KEY (`serviceinfo_uid`) REFERENCES `serviceinfo` (`uid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8 COMMENT='결제정보';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8 COMMENT='결제정보';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -352,7 +382,7 @@ CREATE TABLE `payment` (
|
||||
|
||||
LOCK TABLES `payment` WRITE;
|
||||
/*!40000 ALTER TABLE `payment` DISABLE KEYS */;
|
||||
INSERT INTO `payment` VALUES (17,1,820,52,'prime_s68d4e145a474d',NULL,950000,'month','2025-09-25','account','paid','2025-10-16 00:57:48','2025-09-25 06:29:25',NULL),(18,1,1161,53,'itsolution_s68d4e1b6',NULL,800000,'month','2025-11-14',NULL,'unpaid','2025-10-16 00:58:10','2025-09-25 06:31:18',NULL),(19,1,820,52,'2G',NULL,40000,'onetime','2025-09-25',NULL,'unpaid','2025-09-25 08:27:17','2025-09-25 08:15:08',NULL),(20,1,1087,54,'gdidc_s68d4ff1b03fab',NULL,1800000,'month','2025-09-25',NULL,'unpaid','2025-10-16 00:58:28','2025-09-25 08:36:43',NULL),(21,1,820,52,'16G',NULL,300000,'onetime','2025-09-26',NULL,'unpaid',NULL,'2025-09-26 07:03:50',NULL),(22,1,820,52,'NVME 512G',NULL,120000,'onetime','2025-09-30','account','paid','2025-10-02 05:07:08','2025-09-30 00:56:19',NULL),(23,1,820,52,'NVME 512G',NULL,240000,'onetime','2025-09-30','account','paid','2025-10-02 05:07:08','2025-09-30 01:02:43',NULL),(24,1,820,52,'NVME 1T',NULL,150000,'onetime','2025-09-30',NULL,'unpaid',NULL,'2025-09-30 01:50:08',NULL),(28,1,820,52,'SSD 256G',NULL,160000,'onetime','2025-09-30',NULL,'unpaid',NULL,'2025-09-30 05:35:30',NULL),(29,1,820,56,'gdidc_s68dc70e2edb68',NULL,1550000,'month','2025-10-01',NULL,'unpaid','2025-10-16 06:45:46','2025-10-01 00:08:02',NULL),(32,1,819,57,'prime_s68dce40dd65df',NULL,650000,'month','2025-10-01',NULL,'unpaid','2025-10-16 01:04:24','2025-10-01 08:19:25',NULL),(33,1,820,52,'NVME 2T',NULL,180000,'onetime','2025-10-02',NULL,'unpaid',NULL,'2025-10-02 00:07:28',NULL),(34,1,711,58,'prime_s68ddf9a191864',NULL,1100000,'month','2025-10-02',NULL,'unpaid','2025-10-16 01:48:27','2025-10-02 04:03:45',NULL),(35,1,1185,59,'itsolution_s68e30467',NULL,900000,'month','2025-10-06','account','unpaid','2025-10-16 01:53:30','2025-10-05 23:51:03',NULL),(36,45,1185,59,'서버비',NULL,600000,'month','2025-11-06',NULL,'paid','2025-10-05 23:54:41','2025-10-05 23:53:43',NULL),(37,45,1185,59,'서버비',NULL,400000,'month','2025-11-06','account','paid','2025-10-05 23:57:23','2025-10-05 23:56:03',NULL),(38,45,1185,59,'도메인','도메인 구매',40000,'onetime','2025-10-06','account','paid','2025-10-05 23:57:23','2025-10-05 23:56:59',NULL),(39,45,1185,59,'서버비',NULL,400000,'month','2025-10-06','account','paid','2025-10-06 00:51:24','2025-10-06 00:48:36',NULL),(40,45,1185,59,'도메인',NULL,1000000,'onetime','2025-10-06','account','paid','2025-10-06 01:02:46','2025-10-06 00:54:59',NULL),(41,1,1186,60,'prime_s68e37906ad1bd',NULL,1100000,'month','2025-10-06','account','unpaid','2025-10-16 01:53:52','2025-10-06 08:08:38',NULL),(42,1,1186,61,'prime_s68e37b9e918a2',NULL,1300000,'month','2025-10-06','account','unpaid','2025-10-16 01:54:10','2025-10-06 08:19:42',NULL),(43,11,1186,60,'SSD 2T',NULL,600000,'onetime','2025-10-06','account','paid','2025-10-06 08:36:38','2025-10-06 08:25:57',NULL),(44,11,1186,60,'SSD 1T',NULL,400000,'onetime','2025-10-06','account','paid','2025-10-06 08:36:38','2025-10-06 08:31:15',NULL),(45,11,1186,61,'8G',NULL,50000,'onetime','2025-10-06','account','paid','2025-10-06 08:38:35','2025-10-06 08:34:46',NULL),(46,1,1186,61,'test.co.kr 도메인','test.co.kr 도메인',50000,'onetime','2025-10-14',NULL,'unpaid',NULL,'2025-10-14 02:24:26',NULL),(50,NULL,1161,53,'itsolution_s68d4e1b6',NULL,800000,'month','2025-10-14',NULL,'unpaid',NULL,'2025-10-14 08:28:35',NULL),(51,1,819,57,'테스트','테스트\r\n테스트\r\n테스트\r\n테스트',100000,'onetime','2025-10-15',NULL,'unpaid',NULL,'2025-10-15 03:35:39',NULL),(52,1,842,62,'prime_s68ef4901c563f',NULL,800000,'month','2025-10-15',NULL,'unpaid','2025-10-16 07:52:10','2025-10-15 07:10:57',NULL),(53,1,842,63,'itsolution_s68ef4cbd',NULL,400000,'month','2025-10-15',NULL,'unpaid','2025-10-16 01:54:36','2025-10-15 07:26:53',NULL),(54,1,820,56,'fffff','ffdgdfgdf',430000,'onetime','2025-10-15',NULL,'unpaid',NULL,'2025-10-15 07:33:28',NULL);
|
||||
INSERT INTO `payment` VALUES (17,1,820,52,'prime_s68d4e145a474d',NULL,950000,'month','2025-09-25','account','paid','2025-10-16 00:57:48','2025-09-25 06:29:25',NULL),(18,1,1161,53,'itsolution_s68d4e1b6',NULL,800000,'month','2025-11-14',NULL,'unpaid','2025-10-16 00:58:10','2025-09-25 06:31:18',NULL),(19,1,820,52,'2G',NULL,40000,'onetime','2025-09-25',NULL,'unpaid','2025-09-25 08:27:17','2025-09-25 08:15:08',NULL),(20,1,1087,54,'gdidc_s68d4ff1b03fab',NULL,1800000,'month','2025-09-25',NULL,'unpaid','2025-10-16 00:58:28','2025-09-25 08:36:43',NULL),(21,1,820,52,'16G',NULL,300000,'onetime','2025-09-26',NULL,'unpaid',NULL,'2025-09-26 07:03:50',NULL),(22,1,820,52,'NVME 512G',NULL,120000,'onetime','2025-09-30','account','paid','2025-10-02 05:07:08','2025-09-30 00:56:19',NULL),(23,1,820,52,'NVME 512G',NULL,240000,'onetime','2025-09-30','account','paid','2025-10-02 05:07:08','2025-09-30 01:02:43',NULL),(24,1,820,52,'NVME 1T',NULL,150000,'onetime','2025-09-30',NULL,'unpaid',NULL,'2025-09-30 01:50:08',NULL),(28,1,820,52,'SSD 256G',NULL,160000,'onetime','2025-09-30',NULL,'unpaid',NULL,'2025-09-30 05:35:30',NULL),(29,1,820,56,'gdidc_s68dc70e2edb68',NULL,1550000,'month','2025-10-01',NULL,'unpaid','2025-10-16 06:45:46','2025-10-01 00:08:02',NULL),(32,1,819,57,'prime_s68dce40dd65df',NULL,650000,'month','2025-10-01',NULL,'unpaid','2025-10-16 01:04:24','2025-10-01 08:19:25',NULL),(33,1,820,52,'NVME 2T',NULL,180000,'onetime','2025-10-02',NULL,'unpaid',NULL,'2025-10-02 00:07:28',NULL),(34,1,711,58,'prime_s68ddf9a191864',NULL,1100000,'month','2025-10-02',NULL,'unpaid','2025-10-16 01:48:27','2025-10-02 04:03:45',NULL),(35,1,1185,59,'itsolution_s68e30467',NULL,900000,'month','2025-10-06','account','unpaid','2025-10-16 01:53:30','2025-10-05 23:51:03',NULL),(36,45,1185,59,'서버비',NULL,600000,'month','2025-11-06',NULL,'paid','2025-10-05 23:54:41','2025-10-05 23:53:43',NULL),(37,45,1185,59,'서버비',NULL,400000,'month','2025-11-06','account','paid','2025-10-05 23:57:23','2025-10-05 23:56:03',NULL),(38,45,1185,59,'도메인','도메인 구매',40000,'onetime','2025-10-06','account','paid','2025-10-05 23:57:23','2025-10-05 23:56:59',NULL),(39,45,1185,59,'서버비',NULL,400000,'month','2025-10-06','account','paid','2025-10-06 00:51:24','2025-10-06 00:48:36',NULL),(40,45,1185,59,'도메인',NULL,1000000,'onetime','2025-10-06','account','paid','2025-10-06 01:02:46','2025-10-06 00:54:59',NULL),(41,1,1186,60,'prime_s68e37906ad1bd',NULL,1100000,'month','2025-10-06','account','unpaid','2025-10-16 01:53:52','2025-10-06 08:08:38',NULL),(42,1,1186,61,'prime_s68e37b9e918a2',NULL,1300000,'month','2025-10-06','account','unpaid','2025-10-16 01:54:10','2025-10-06 08:19:42',NULL),(43,11,1186,60,'SSD 2T',NULL,600000,'onetime','2025-10-06','account','paid','2025-10-06 08:36:38','2025-10-06 08:25:57',NULL),(44,11,1186,60,'SSD 1T',NULL,400000,'onetime','2025-10-06','account','paid','2025-10-06 08:36:38','2025-10-06 08:31:15',NULL),(45,11,1186,61,'8G',NULL,50000,'onetime','2025-10-06','account','paid','2025-10-06 08:38:35','2025-10-06 08:34:46',NULL),(46,1,1186,61,'test.co.kr 도메인','test.co.kr 도메인',50000,'onetime','2025-10-14',NULL,'unpaid',NULL,'2025-10-14 02:24:26',NULL),(50,NULL,1161,53,'itsolution_s68d4e1b6',NULL,800000,'month','2025-10-14',NULL,'unpaid',NULL,'2025-10-14 08:28:35',NULL),(51,1,819,57,'테스트','테스트\r\n테스트\r\n테스트\r\n테스트',100000,'onetime','2025-10-15',NULL,'unpaid',NULL,'2025-10-15 03:35:39',NULL),(52,1,842,62,'prime_s68ef4901c563f',NULL,800000,'month','2025-10-15',NULL,'unpaid','2025-10-16 07:52:10','2025-10-15 07:10:57',NULL),(53,1,842,63,'itsolution_s68ef4cbd',NULL,400000,'month','2025-10-15',NULL,'unpaid','2025-10-16 01:54:36','2025-10-15 07:26:53',NULL),(54,1,820,56,'fffff','ffdgdfgdf',430000,'onetime','2025-10-15',NULL,'unpaid',NULL,'2025-10-15 07:33:28',NULL),(55,1,1155,64,'[2543E-M32/13.220.20.25] 2025년 10월 서비스비용',NULL,900000,'month','2025-10-17',NULL,'unpaid',NULL,'2025-10-17 06:22:15',NULL);
|
||||
/*!40000 ALTER TABLE `payment` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -464,7 +494,7 @@ CREATE TABLE `serverinfo` (
|
||||
|
||||
LOCK TABLES `serverinfo` WRITE;
|
||||
/*!40000 ALTER TABLE `serverinfo` DISABLE KEYS */;
|
||||
INSERT INTO `serverinfo` VALUES (17,1186,61,'2526A-M1','normal','C03PA19','13.220.20.5','UBUNTU24.04','HP DL360 Gen6',1000000,'2025-08-31 15:00:00','2025-10-02 15:00:00','occupied','2025-10-16 01:54:10','2025-09-22 02:19:25',NULL),(18,1161,53,'2537B-M18','normal','C03PA08','13.220.20.28','UBUNTU24.04','HP DL360 Gen7',400000,'2025-09-01 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 00:58:10','2025-09-22 02:21:51',NULL),(19,1087,54,'2528C-M19','normal','C03PA06','13.220.20.10','WINDOWS2008R2','HP DL360 Gen8',800000,'2025-09-02 15:00:00','2025-10-12 15:00:00','occupied','2025-10-16 00:58:28','2025-09-22 02:22:14',NULL),(20,820,52,'2529D-M20','normal','C03PA07','13.220.20.27','CENTOS9','HP DL360 Gen9',600000,'2025-09-03 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 00:57:48','2025-09-22 02:22:39',NULL),(21,1186,60,'2520Z-M21','vpn','C03PA17','13.220.20.30','WINDOWS2016R2','HP DL360 Gen10',700000,'2025-09-04 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 01:53:52','2025-09-22 02:23:08',NULL),(22,820,56,'2530Z-M22','dedicated','C03PA16','23.125.207.27','WINDOWS2019R2','Hitach HA3000',800000,'2025-09-05 15:00:00','2025-09-29 15:00:00','occupied','2025-10-16 06:45:46','2025-09-22 02:23:36',NULL),(23,819,57,'JPN-S23','event','C03PA01','13.220.20.1','CENTOS9','INTEL I5',200000,'2025-10-01 15:00:00',NULL,'occupied','2025-10-16 01:04:24','2025-10-01 08:16:56',NULL),(24,1087,54,'JPN-S24','alternative','C03PA14','13.220.20.122','WINDOWS2008R2','INTEL I7',200000,'2025-10-01 15:00:00','2025-10-12 15:00:00','occupied','2025-10-16 00:58:44','2025-10-01 08:52:19',NULL),(25,NULL,NULL,'2548E-M25','alternative',NULL,'13.220.20.94',NULL,'HP DL360 Gen8',700000,'2025-09-30 15:00:00','2025-10-15 15:00:00','available','2025-10-15 23:21:11','2025-10-02 03:55:46',NULL),(26,NULL,NULL,'2547C-M26','alternative',NULL,NULL,NULL,'HP DL360 Gen7',500000,'2025-09-30 15:00:00','2025-10-02 15:00:00','available','2025-10-03 01:00:57','2025-10-02 03:58:53',NULL),(27,711,58,'2548D-M27','normal','C03PA15','13.220.20.63','WINDOWS11','HP DL360 Gen8',900000,'2025-10-01 15:00:00',NULL,'occupied','2025-10-16 01:48:27','2025-10-02 04:02:16',NULL),(31,1185,59,'2412E-M29','normal','C03PA21','13.220.20.34','DEBIAN10','HP DL360 Gen9',500000,'2025-10-03 15:00:00',NULL,'occupied','2025-10-16 01:53:30','2025-10-03 01:08:32',NULL),(32,NULL,NULL,'2543E-M32','normal','C01PA45','13.220.20.25','UBUNTU22.04','HP DL360 Gen6',500000,'2025-10-03 15:00:00',NULL,'available','2025-10-17 06:12:06','2025-10-03 01:10:09',NULL),(55,NULL,NULL,'KCS-M33','alternative',NULL,'28.23.54.22',NULL,'KCS',150000,'2025-10-01 15:00:00','2025-10-16 15:00:00','available','2025-10-17 02:33:55','2025-10-03 05:32:51',NULL),(63,842,62,'254D9-M56','defence','C02PA09','13.220.20.9','CENTOS9','HP DL360 Gen9',400000,'2025-10-08 15:00:00',NULL,'occupied','2025-10-16 01:54:24','2025-10-15 07:06:56',NULL),(64,842,63,'2549D-M64','normal','C03PA02','13.220.20.7','UBUNTU24.04','HP DL360 Gen9',400000,'2025-10-08 15:00:00',NULL,'occupied','2025-10-16 01:54:36','2025-10-15 07:23:19',NULL);
|
||||
INSERT INTO `serverinfo` VALUES (17,1186,61,'2526A-M1','normal','C03PA19','13.220.20.5','UBUNTU24.04','HP DL360 Gen6',1000000,'2025-08-31 15:00:00','2025-10-02 15:00:00','occupied','2025-10-16 01:54:10','2025-09-22 02:19:25',NULL),(18,1161,53,'2537B-M18','normal','C03PA08','13.220.20.28','UBUNTU24.04','HP DL360 Gen7',400000,'2025-09-01 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 00:58:10','2025-09-22 02:21:51',NULL),(19,1087,54,'2528C-M19','normal','C03PA06','13.220.20.10','WINDOWS2008R2','HP DL360 Gen8',800000,'2025-09-02 15:00:00','2025-10-12 15:00:00','occupied','2025-10-16 00:58:28','2025-09-22 02:22:14',NULL),(20,820,52,'2529D-M20','normal','C03PA07','13.220.20.27','CENTOS9','HP DL360 Gen9',600000,'2025-09-03 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 00:57:48','2025-09-22 02:22:39',NULL),(21,1186,60,'2520Z-M21','vpn','C03PA17','13.220.20.30','WINDOWS2016R2','HP DL360 Gen10',700000,'2025-09-04 15:00:00','2025-10-01 15:00:00','occupied','2025-10-16 01:53:52','2025-09-22 02:23:08',NULL),(22,820,56,'2530Z-M22','dedicated','C03PA16','23.125.207.27','WINDOWS2019R2','Hitach HA3000',800000,'2025-09-05 15:00:00','2025-09-29 15:00:00','occupied','2025-10-16 06:45:46','2025-09-22 02:23:36',NULL),(23,819,57,'JPN-S23','event','C03PA01','13.220.20.1','CENTOS9','INTEL I5',200000,'2025-10-01 15:00:00',NULL,'occupied','2025-10-16 01:04:24','2025-10-01 08:16:56',NULL),(24,1087,54,'JPN-S24','alternative','C03PA14','13.220.20.122','WINDOWS2008R2','INTEL I7',200000,'2025-10-01 15:00:00','2025-10-12 15:00:00','occupied','2025-10-16 00:58:44','2025-10-01 08:52:19',NULL),(25,NULL,NULL,'2548E-M25','alternative',NULL,'13.220.20.94',NULL,'HP DL360 Gen8',700000,'2025-09-30 15:00:00','2025-10-15 15:00:00','available','2025-10-15 23:21:11','2025-10-02 03:55:46',NULL),(26,NULL,NULL,'2547C-M26','alternative',NULL,NULL,NULL,'HP DL360 Gen7',500000,'2025-09-30 15:00:00','2025-10-02 15:00:00','available','2025-10-03 01:00:57','2025-10-02 03:58:53',NULL),(27,711,58,'2548D-M27','normal','C03PA15','13.220.20.63','WINDOWS11','HP DL360 Gen8',900000,'2025-10-01 15:00:00',NULL,'occupied','2025-10-16 01:48:27','2025-10-02 04:02:16',NULL),(31,1185,59,'2412E-M29','normal','C03PA21','13.220.20.34','DEBIAN10','HP DL360 Gen9',500000,'2025-10-03 15:00:00',NULL,'occupied','2025-10-16 01:53:30','2025-10-03 01:08:32',NULL),(32,1155,64,'2543E-M32','normal','C01PA45','13.220.20.25','UBUNTU22.04','HP DL360 Gen6',500000,'2025-10-03 15:00:00',NULL,'occupied','2025-10-17 06:22:15','2025-10-03 01:10:09',NULL),(55,NULL,NULL,'KCS-M33','alternative',NULL,'28.23.54.22',NULL,'KCS',150000,'2025-10-01 15:00:00','2025-10-16 15:00:00','available','2025-10-17 02:33:55','2025-10-03 05:32:51',NULL),(63,842,62,'254D9-M56','defence','C02PA09','13.220.20.9','CENTOS9','HP DL360 Gen9',400000,'2025-10-08 15:00:00',NULL,'occupied','2025-10-16 01:54:24','2025-10-15 07:06:56',NULL),(64,842,63,'2549D-M64','normal','C03PA02','13.220.20.7','UBUNTU24.04','HP DL360 Gen9',400000,'2025-10-08 15:00:00',NULL,'occupied','2025-10-16 01:54:36','2025-10-15 07:23:19',NULL);
|
||||
/*!40000 ALTER TABLE `serverinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -547,7 +577,7 @@ CREATE TABLE `serviceinfo` (
|
||||
CONSTRAINT `FK_clientinfo_TO_serviceinfo` FOREIGN KEY (`clientinfo_uid`) REFERENCES `clientinfo` (`uid`),
|
||||
CONSTRAINT `FK_payment_TO_serviceinfo` FOREIGN KEY (`payment_uid`) REFERENCES `payment` (`uid`),
|
||||
CONSTRAINT `FK_serverinfo_TO_serviceinfo` FOREIGN KEY (`serverinfo_uid`) REFERENCES `serverinfo` (`uid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COMMENT='서비스정보';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8 COMMENT='서비스정보';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -556,7 +586,7 @@ CREATE TABLE `serviceinfo` (
|
||||
|
||||
LOCK TABLES `serviceinfo` WRITE;
|
||||
/*!40000 ALTER TABLE `serviceinfo` DISABLE KEYS */;
|
||||
INSERT INTO `serviceinfo` VALUES (52,1,820,20,17,'prime_s68d4e145a474d','prime','chiba',100000,300000,'2025-09-25',100000,950000,'2025-09-25',NULL,'test1234\r\ntesst2123','available','2025-10-16 00:57:48','2025-09-25 06:29:25',NULL),(53,1,1161,18,18,'itsolution_s68d4e1b6','itsolution','chiba',100000,300000,'2025-11-14',0,800000,'2025-09-25',NULL,NULL,'available','2025-10-16 00:58:10','2025-09-25 06:31:18',NULL),(54,1,1087,19,20,'gdidc_s68d4ff1b03fab','gdidc','chiba',300000,300000,'2025-09-25',100000,1800000,'2025-09-25',NULL,NULL,'available','2025-10-16 00:58:28','2025-09-25 08:36:43',NULL),(56,1,820,22,29,'gdidc_s68dc70e2edb68','gdidc','chiba',100000,300000,'2025-10-01',0,1550000,'2025-10-01',NULL,NULL,'available','2025-10-16 06:45:46','2025-10-01 00:08:02',NULL),(57,1,819,23,32,'prime_s68dce40dd65df','prime','chiba',100000,300000,'2025-10-01',100000,650000,'2025-10-01',NULL,NULL,'available','2025-10-16 01:04:24','2025-10-01 08:19:25',NULL),(58,1,711,27,34,'prime_s68ddf9a191864','prime','chiba',100000,300000,'2025-10-02',200000,1100000,'2025-10-02',NULL,NULL,'available','2025-10-16 01:48:27','2025-10-02 04:03:45',NULL),(59,1,1185,31,35,'itsolution_s68e30467','itsolution','chiba',100000,300000,'2025-10-06',0,900000,'2025-10-06',NULL,NULL,'available','2025-10-16 01:53:30','2025-10-05 23:51:03',NULL),(60,1,1186,21,41,'prime_s68e37906ad1bd','prime','chiba',100000,300000,'2025-10-06',0,1100000,'2025-10-06',NULL,'test / test\r\n','available','2025-10-16 01:53:52','2025-10-06 08:08:38',NULL),(61,1,1186,17,42,'prime_s68e37b9e918a2','prime','chiba',100000,300000,'2025-10-06',100000,1300000,'2025-10-06',NULL,NULL,'available','2025-10-16 01:54:10','2025-10-06 08:19:42',NULL),(62,1,842,63,52,'prime_s68ef4901c563f','prime','chiba',100000,300000,'2025-10-15',0,800000,'2025-10-15',NULL,NULL,'available','2025-10-16 07:52:10','2025-10-15 07:10:57',NULL),(63,1,842,64,53,'itsolution_s68ef4cbd','itsolution','chiba',100000,300000,'2025-10-15',400000,400000,'2025-10-15',NULL,NULL,'available','2025-10-16 01:54:36','2025-10-15 07:26:53',NULL);
|
||||
INSERT INTO `serviceinfo` VALUES (52,1,820,20,17,'prime_s68d4e145a474d','prime','chiba',100000,300000,'2025-09-25',100000,950000,'2025-09-25',NULL,'test1234\r\ntesst2123','available','2025-10-16 00:57:48','2025-09-25 06:29:25',NULL),(53,1,1161,18,18,'itsolution_s68d4e1b6','itsolution','chiba',100000,300000,'2025-11-14',0,800000,'2025-09-25',NULL,NULL,'available','2025-10-16 00:58:10','2025-09-25 06:31:18',NULL),(54,1,1087,19,20,'gdidc_s68d4ff1b03fab','gdidc','chiba',300000,300000,'2025-09-25',100000,1800000,'2025-09-25',NULL,NULL,'available','2025-10-16 00:58:28','2025-09-25 08:36:43',NULL),(56,1,820,22,29,'gdidc_s68dc70e2edb68','gdidc','chiba',100000,300000,'2025-10-01',0,1550000,'2025-10-01',NULL,NULL,'available','2025-10-16 06:45:46','2025-10-01 00:08:02',NULL),(57,1,819,23,32,'prime_s68dce40dd65df','prime','chiba',100000,300000,'2025-10-01',100000,650000,'2025-10-01',NULL,NULL,'available','2025-10-16 01:04:24','2025-10-01 08:19:25',NULL),(58,1,711,27,34,'prime_s68ddf9a191864','prime','chiba',100000,300000,'2025-10-02',200000,1100000,'2025-10-02',NULL,NULL,'available','2025-10-16 01:48:27','2025-10-02 04:03:45',NULL),(59,1,1185,31,35,'itsolution_s68e30467','itsolution','chiba',100000,300000,'2025-10-06',0,900000,'2025-10-06',NULL,NULL,'available','2025-10-16 01:53:30','2025-10-05 23:51:03',NULL),(60,1,1186,21,41,'prime_s68e37906ad1bd','prime','chiba',100000,300000,'2025-10-06',0,1100000,'2025-10-06',NULL,'test / test\r\n','available','2025-10-16 01:53:52','2025-10-06 08:08:38',NULL),(61,1,1186,17,42,'prime_s68e37b9e918a2','prime','chiba',100000,300000,'2025-10-06',100000,1300000,'2025-10-06',NULL,NULL,'available','2025-10-16 01:54:10','2025-10-06 08:19:42',NULL),(62,1,842,63,52,'prime_s68ef4901c563f','prime','chiba',100000,300000,'2025-10-15',0,800000,'2025-10-15',NULL,NULL,'available','2025-10-16 07:52:10','2025-10-15 07:10:57',NULL),(63,1,842,64,53,'itsolution_s68ef4cbd','itsolution','chiba',100000,300000,'2025-10-15',400000,400000,'2025-10-15',NULL,NULL,'available','2025-10-16 01:54:36','2025-10-15 07:26:53',NULL),(64,1,1155,32,NULL,'gdidc_s68f1e0977ed19','gdidc','chiba',100000,300000,'2025-10-17',0,900000,'2025-10-17',NULL,NULL,'available','2025-10-17 06:22:15','2025-10-17 06:22:15',NULL);
|
||||
/*!40000 ALTER TABLE `serviceinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -705,4 +735,4 @@ UNLOCK TABLES;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2025-10-17 15:20:20
|
||||
-- Dump completed on 2025-10-20 13:32:57
|
||||
|
||||
13
app/Entities/BoardEntity.php
Normal file
13
app/Entities/BoardEntity.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entities;
|
||||
|
||||
use App\Entities\CommonEntity;
|
||||
use App\Models\BoardModel as Model;
|
||||
|
||||
class BoardEntity extends CommonEntity
|
||||
{
|
||||
const PK = Model::PK;
|
||||
const TITLE = Model::TITLE;
|
||||
const DEFAULT_STATUS = STATUS['AVAILABLE'];
|
||||
}
|
||||
31
app/Helpers/BoardHelper.php
Normal file
31
app/Helpers/BoardHelper.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Helpers;
|
||||
|
||||
use App\Models\BoardModel;
|
||||
|
||||
class BoardHelper extends CommonHelper
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setTitleField(BoardModel::TITLE);
|
||||
}
|
||||
public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null
|
||||
{
|
||||
switch ($field) {
|
||||
case 'content':
|
||||
if (in_array($viewDatas['control']['action'], ['view', 'index'])) {
|
||||
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$value = parent::getFieldView($field, $value, $viewDatas, $extras);
|
||||
break;
|
||||
}
|
||||
if (is_array($value)) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류: {$field}의 값이 Array형태입니다");
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
@ -308,7 +308,7 @@ class CommonHelper
|
||||
case 'content':
|
||||
case 'detail':
|
||||
case 'history':
|
||||
// $extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' tinymce' : 'tinymce';
|
||||
$extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' tinymce' : 'tinymce';
|
||||
$form = form_textarea($field, $value ?? "", [
|
||||
"class" => "form-control",
|
||||
'style' => 'width:100%;',
|
||||
@ -357,18 +357,6 @@ class CommonHelper
|
||||
case 'deleted_at':
|
||||
$value = $value ? date("Y-m-d", strtotime($value)) : "";
|
||||
break;
|
||||
case 'price':
|
||||
case 'amount':
|
||||
$value = number_format($value) . "원";
|
||||
break;
|
||||
case 'description':
|
||||
case 'content':
|
||||
case 'history':
|
||||
case 'detail':
|
||||
if (in_array($viewDatas['control']['action'], ['view', 'index'])) {
|
||||
$value = nl2br($value);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (in_array($field, $viewDatas['control']['actionFilters'])) {
|
||||
if (str_contains($field, "_uid")) {
|
||||
|
||||
22
app/Language/en/Board.php
Normal file
22
app/Language/en/Board.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
return [
|
||||
'title' => "게시판정보",
|
||||
'label' => [
|
||||
'uid' => "번호",
|
||||
'category' => "구분",
|
||||
'title' => "제목",
|
||||
'content' => "내용",
|
||||
'status' => "상태",
|
||||
'updated_at' => "수정일",
|
||||
'created_at' => "작성일",
|
||||
'deleted_at' => "삭제일",
|
||||
],
|
||||
"CATEGORY" => [
|
||||
"notice" => "공지사항",
|
||||
],
|
||||
"STATUS" => [
|
||||
STATUS['AVAILABLE'] => "사용중",
|
||||
STATUS['PAUSE'] => "일시정지",
|
||||
STATUS['TERMINATED'] => "삭제",
|
||||
],
|
||||
];
|
||||
46
app/Models/BoardModel.php
Normal file
46
app/Models/BoardModel.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Entities\BoardEntity;
|
||||
|
||||
class BoardModel extends CommonModel
|
||||
{
|
||||
const TABLE = "boardinfo";
|
||||
const PK = "uid";
|
||||
const TITLE = "title";
|
||||
protected $table = self::TABLE;
|
||||
protected $primaryKey = self::PK;
|
||||
protected $returnType = BoardEntity::class;
|
||||
protected $allowedFields = [
|
||||
"uid",
|
||||
"category",
|
||||
"title",
|
||||
"content",
|
||||
"status",
|
||||
"updated_at"
|
||||
];
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
public function getFormRule(string $action, string $field): string
|
||||
{
|
||||
if (is_array($field)) {
|
||||
throw new \Exception(__FUNCTION__ . "=> field가 array 입니다.\n" . var_export($field, true));
|
||||
}
|
||||
switch ($field) {
|
||||
case "category":
|
||||
case "title":
|
||||
$rule = "required|trim|string";
|
||||
break;
|
||||
case "content":
|
||||
$rule = "permit_empty|string";
|
||||
break;
|
||||
default:
|
||||
$rule = parent::getFormRule($action, $field);
|
||||
break;
|
||||
}
|
||||
return $rule;
|
||||
}
|
||||
}
|
||||
50
app/Services/BoardService.php
Normal file
50
app/Services/BoardService.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Helpers\BoardHelper;
|
||||
use App\Models\BoardModel;
|
||||
|
||||
class BoardService extends CommonService
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(new BoardModel(), new BoardHelper());
|
||||
$this->addClassName('Board');
|
||||
}
|
||||
public function getFormFields(): array
|
||||
{
|
||||
return [
|
||||
'category',
|
||||
'title',
|
||||
'content',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
public function getFormFilters(): array
|
||||
{
|
||||
return [
|
||||
'category',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
public function getIndexFields(): array
|
||||
{
|
||||
return [
|
||||
'category',
|
||||
'title',
|
||||
'status',
|
||||
'created_at',
|
||||
];
|
||||
}
|
||||
public function getBatchjobFields(): array
|
||||
{
|
||||
return ['category', 'status'];
|
||||
}
|
||||
public function latest(array $where, int $limit = 3): array
|
||||
{
|
||||
$this->getModel()->limit($limit);
|
||||
return $this->getEntities($where);
|
||||
}
|
||||
//기본 기능부분
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/user"><?= ICONS['MEMBER'] ?> 계정 관리</a>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/board"><?= ICONS['CLOUD'] ?> 게시판 관리</a>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/mylog"><?= ICONS['HISTORY'] ?> Log 관리</a>
|
||||
</div>
|
||||
@ -1,4 +1,11 @@
|
||||
<!-- top start -->
|
||||
<style>
|
||||
/* dropdown 크기 및 스크롤 개선 */
|
||||
#noticeList {
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
<nav class="navbar navbar-expand-lg fixed-top" style="background-color:#E7E7E7; border-top:1px solid darkgray; border-bottom:1px solid darkgray;">
|
||||
<div class="container-fluid">
|
||||
<nav class="nav"><a class="navbar-brand" href="/admin">DBMS 관리</a></nav>
|
||||
@ -10,6 +17,20 @@
|
||||
<button type="submit" class="btn btn-default border border-dark"><?= ICONS['SEARCH'] ?></button>
|
||||
<?= form_close(); ?>
|
||||
</li>
|
||||
<li class="nav-item" style="background-color:white; margin-left:20px; font-size:12px;">
|
||||
<!-- 🔔 공지 영역 -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="noticeDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
🔔 공지사항 <span id="notice-count" class="badge bg-danger">0</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="noticeDropdown" id="noticeList">
|
||||
<li class="dropdown-item text-muted">불러오는 중...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 🔔 공지 영역 -->
|
||||
</li>
|
||||
<li class="nav-item" style="background-color:white; margin-left:20px; font-size:12px;">
|
||||
📋:클립보드COPY , 📌:실서비스서버 , ✔️:대체서버->실서비스서버 교체 , 🔄:대체서버등록 , <?= ICONS['MONTH'] ?>:월비용 , <?= ICONS['ONETIME'] ?>:일회성<BR>
|
||||
<?= ICONS['SERVER_ITEM_SWITCH'] ?>:스위치 , <?= ICONS['SERVER_ITEM_IP'] ?>:IP , <?= ICONS['SERVER_ITEM_OS'] ?>:OS , <?= ICONS['SERVER_ITEM_SOFTWARE'] ?>:소프트웨어 , <?= ICONS['SERVER_ITEM_CS'] ?>:CS ,
|
||||
@ -48,17 +69,39 @@
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const params = new URLSearchParams(location.search);
|
||||
const customer_keyword = params.get('customer_keyword');
|
||||
if (keyword)
|
||||
document.querySelector('input[name="customer_keyword"]').value = customer_keyword;
|
||||
});
|
||||
//전체검색용
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const params = new URLSearchParams(location.search);
|
||||
const keyword = params.get('keyword');
|
||||
if (keyword)
|
||||
document.querySelector('input[name="keyword"]').value = keyword;
|
||||
});
|
||||
//공지사항용
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
async function loadNotices() {
|
||||
try {
|
||||
const res = await fetch("/admin/board/latest");
|
||||
const notices = await res.json();
|
||||
const notice_list = document.getElementById("noticeList");
|
||||
const notice_count = document.getElementById("notice-count");
|
||||
notice_list.innerHTML = "";
|
||||
if (notices.length === 0) {
|
||||
notice_list.innerHTML = '<li class="dropdown-item text-muted">공지 없음</li>';
|
||||
return;
|
||||
}
|
||||
notice_count.innerHTML = notices.length;
|
||||
notices.forEach(n => {
|
||||
const item = document.createElement("li");
|
||||
item.classList.add("dropdown-item");
|
||||
item.innerHTML = `<small class="text-muted">[${n.created_at.date.replace(/\.\d+$/, '')}]</small> ${n.title}<br>`;
|
||||
notice_list.appendChild(item);
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("공지 불러오기 실패:", err);
|
||||
}
|
||||
}
|
||||
loadNotices(); // 최초 로드
|
||||
setInterval(loadNotices, 10000); // 10초마다 갱신
|
||||
});
|
||||
</script>
|
||||
<!-- top end -->
|
||||
Loading…
Reference in New Issue
Block a user