From 4b64262234854c11b79ca0d0cd1f5b9868399b24 Mon Sep 17 00:00:00 2001 From: "choi.jh" Date: Mon, 20 Oct 2025 14:30:55 +0900 Subject: [PATCH] dbmsv3 init...1 --- app/Config/Routes.php | 14 + app/Controllers/Admin/BoardController.php | 47 +++ app/Database/dbmsv3.vuerd.json | 438 ++++++++++----------- app/Database/dbmsv3_test1.sql | 42 +- app/Entities/BoardEntity.php | 13 + app/Helpers/BoardHelper.php | 31 ++ app/Helpers/CommonHelper.php | 14 +- app/Language/en/Board.php | 22 ++ app/Models/BoardModel.php | 46 +++ app/Services/BoardService.php | 50 +++ app/Views/layouts/admin/left_menu/base.php | 3 + app/Views/layouts/admin/top.php | 55 ++- 12 files changed, 521 insertions(+), 254 deletions(-) create mode 100644 app/Controllers/Admin/BoardController.php create mode 100644 app/Entities/BoardEntity.php create mode 100644 app/Helpers/BoardHelper.php create mode 100644 app/Language/en/Board.php create mode 100644 app/Models/BoardModel.php create mode 100644 app/Services/BoardService.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 321ec32..ee3e5e3 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -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) { diff --git a/app/Controllers/Admin/BoardController.php b/app/Controllers/Admin/BoardController.php new file mode 100644 index 0000000..7544eb3 --- /dev/null +++ b/app/Controllers/Admin/BoardController.php @@ -0,0 +1,47 @@ +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); + } +} diff --git a/app/Database/dbmsv3.vuerd.json b/app/Database/dbmsv3.vuerd.json index bb39673..9ccd485 100644 --- a/app/Database/dbmsv3.vuerd.json +++ b/app/Database/dbmsv3.vuerd.json @@ -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": { diff --git a/app/Database/dbmsv3_test1.sql b/app/Database/dbmsv3_test1.sql index 56a84bb..c63c29e 100644 --- a/app/Database/dbmsv3_test1.sql +++ b/app/Database/dbmsv3_test1.sql @@ -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 diff --git a/app/Entities/BoardEntity.php b/app/Entities/BoardEntity.php new file mode 100644 index 0000000..a508177 --- /dev/null +++ b/app/Entities/BoardEntity.php @@ -0,0 +1,13 @@ +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; + } +} diff --git a/app/Helpers/CommonHelper.php b/app/Helpers/CommonHelper.php index be5f3fc..bdc0bb3 100644 --- a/app/Helpers/CommonHelper.php +++ b/app/Helpers/CommonHelper.php @@ -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")) { diff --git a/app/Language/en/Board.php b/app/Language/en/Board.php new file mode 100644 index 0000000..ee65889 --- /dev/null +++ b/app/Language/en/Board.php @@ -0,0 +1,22 @@ + "게시판정보", + 'label' => [ + 'uid' => "번호", + 'category' => "구분", + 'title' => "제목", + 'content' => "내용", + 'status' => "상태", + 'updated_at' => "수정일", + 'created_at' => "작성일", + 'deleted_at' => "삭제일", + ], + "CATEGORY" => [ + "notice" => "공지사항", + ], + "STATUS" => [ + STATUS['AVAILABLE'] => "사용중", + STATUS['PAUSE'] => "일시정지", + STATUS['TERMINATED'] => "삭제", + ], +]; diff --git a/app/Models/BoardModel.php b/app/Models/BoardModel.php new file mode 100644 index 0000000..1e7246a --- /dev/null +++ b/app/Models/BoardModel.php @@ -0,0 +1,46 @@ + 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; + } +} diff --git a/app/Services/BoardService.php b/app/Services/BoardService.php new file mode 100644 index 0000000..b75675b --- /dev/null +++ b/app/Services/BoardService.php @@ -0,0 +1,50 @@ +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); + } + //기본 기능부분 +} diff --git a/app/Views/layouts/admin/left_menu/base.php b/app/Views/layouts/admin/left_menu/base.php index fe7170e..172ec9c 100644 --- a/app/Views/layouts/admin/left_menu/base.php +++ b/app/Views/layouts/admin/left_menu/base.php @@ -1,6 +1,9 @@
계정 관리
+
+ 게시판 관리 +
Log 관리
\ No newline at end of file diff --git a/app/Views/layouts/admin/top.php b/app/Views/layouts/admin/top.php index 6a1f2e1..a1412ca 100644 --- a/app/Views/layouts/admin/top.php +++ b/app/Views/layouts/admin/top.php @@ -1,4 +1,11 @@ + \ No newline at end of file