dbmsv2 init...1

This commit is contained in:
choi.jh 2025-09-09 18:45:39 +09:00
parent 8541947caf
commit 49a050ca68
7 changed files with 265 additions and 6 deletions

View File

@ -121,6 +121,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob', 'ServiceController::batchjob');
$routes->post('batchjob_delete', 'ServiceController::batchjob_delete');
$routes->get('download/(:alpha)', 'ServiceController::download/$1');
$routes->get('detail', 'ServiceController::detail');
});
$routes->group('serviceitem', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
$routes->get('/', 'ServiceItemController::index');

View File

@ -51,6 +51,7 @@ class ServiceController extends CustomerController
switch ($this->getAction()) {
// case 'create_form':
// case 'modify_form':
case 'detail':
case 'view':
case 'index':
$this->control = $this->getControlDatas();
@ -91,4 +92,45 @@ class ServiceController extends CustomerController
//부모함수처리
return parent::index_process($entities);
}
public function detail(): RedirectResponse|string
{
try {
$this->setAction(__FUNCTION__);
$this->setFormFields();
$this->setFormFilters();
$this->setFormRules();
//기본값정의
$this->setFormDatas($this->request->getGet());
$this->setFormOptions();
//일괄작업용 Fields정의
$this->setControlDatas('batchjob_fields', $this->getService()->getBatchjobFields());
//일괄작업용 버튼정의
$this->setControlDatas('batchjob_buttions', $this->getService()->getBatchjobButtons());
helper(['form']);
//Return Url정의
$this->getMyAuth()->pushCurrentUrl($this->request->getUri()->getPath() . ($this->request->getUri()->getQuery() ? "?" . $this->request->getUri()->getQuery() : ""));
//조건절 처리
$this->index_condition_process();
//TotalCount (SoftDelete적용이 되려면 countAllResults를 사용해야함)
$this->total_count = $this->getService()->getTotalCount();
//Pagination 처리
$this->pagination = $this->index_pagenation_process();
//줄수 처리용
$this->page_options = $this->index_pageOptions_process();
//조건절 처리
//OrcerBy , Limit 처리
$this->order_field = $this->request->getVar('order_field');
$this->order_value = $this->request->getVar('order_value');
$this->getService()->setOrderBy($this->order_field, $this->order_value);
$this->getService()->setLimit($this->per_page);
$this->getService()->setOffset(($this->page - 1) * $this->per_page);
$this->index_condition_process();
$this->entities = $this->index_process();
return $this->getResultSuccess();
} catch (\Exception $e) {
return $e->getMessage();
// return $this->getResultFail($e->getMessage());
}
}
}

View File

@ -62,7 +62,7 @@ abstract class CommonController extends BaseController
}
return array_key_exists($key, $this->_control) ? $this->_control[$key] : null;
}
private function setControlDatas(string $key, mixed $values): void
final protected function setControlDatas(string $key, mixed $values): void
{
if (!array_key_exists($key, $this->_control)) {
$this->_control[$key] = [];

View File

@ -391,7 +391,7 @@ CREATE TABLE `serverinfo` (
LOCK TABLES `serverinfo` WRITE;
/*!40000 ALTER TABLE `serverinfo` DISABLE KEYS */;
INSERT INTO `serverinfo` VALUES (3,585,5,'250904-M1','hp','HP DL360 Gen6',300000,'2025-08-31 15:00:00','2025-09-29 15:00:00','occupied','2025-09-05 08:50:32','2025-09-04 08:09:50',NULL),(4,223,8,'250905-M4','hp','Hitach HA3000',200000,'2025-09-02 15:00:00','2025-09-28 15:00:00','occupied','2025-09-08 07:28:50','2025-09-05 00:04:09',NULL),(5,NULL,NULL,'250905-M5','del','HP DL360 Gen9',100000,'2025-09-03 15:00:00','2025-09-26 15:00:00','available',NULL,'2025-09-05 00:05:26',NULL),(6,NULL,NULL,'250905-M6','etc','HP DL360 Gen10',300000,'2025-09-03 15:00:00','2025-09-27 15:00:00','available',NULL,'2025-09-05 07:36:21',NULL),(10,NULL,NULL,'250908-M7','hp','HP DL360 Gen9',500000,'2025-09-02 15:00:00','2025-09-27 15:00:00','available',NULL,'2025-09-08 07:14:10',NULL),(11,69,9,'250908-M11','etc','HP DL360 Gen10',500000,'2025-09-04 15:00:00','2025-09-26 15:00:00','occupied','2025-09-09 03:40:56','2025-09-08 07:25:24',NULL);
INSERT INTO `serverinfo` VALUES (3,585,5,'250904-M1','hp','HP DL360 Gen6',300000,'2025-08-31 15:00:00','2025-09-29 15:00:00','occupied','2025-09-05 08:50:32','2025-09-04 08:09:50',NULL),(4,223,8,'250905-M4','hp','Hitach HA3000',200000,'2025-09-02 15:00:00','2025-09-28 15:00:00','occupied','2025-09-08 07:28:50','2025-09-05 00:04:09',NULL),(5,260,10,'250905-M5','del','HP DL360 Gen7',100000,'2025-09-03 15:00:00','2025-09-26 15:00:00','occupied','2025-09-09 06:22:00','2025-09-05 00:05:26',NULL),(6,NULL,NULL,'250905-M6','etc','HP DL360 Gen8',300000,'2025-09-03 15:00:00','2025-09-27 15:00:00','available','2025-09-09 06:09:35','2025-09-05 07:36:21',NULL),(10,NULL,NULL,'250908-M7','hp','HP DL360 Gen9',500000,'2025-09-02 15:00:00','2025-09-27 15:00:00','available',NULL,'2025-09-08 07:14:10',NULL),(11,69,9,'250908-M11','etc','HP DL360 Gen10',500000,'2025-09-04 15:00:00','2025-09-26 15:00:00','occupied','2025-09-09 03:40:56','2025-09-08 07:25:24',NULL);
/*!40000 ALTER TABLE `serverinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -463,7 +463,7 @@ CREATE TABLE `serviceinfo` (
KEY `FK_clientinfo_TO_serviceinfo` (`clientinfo_uid`),
CONSTRAINT `FK_clientinfo_TO_serviceinfo` FOREIGN KEY (`clientinfo_uid`) REFERENCES `clientinfo` (`uid`),
CONSTRAINT `FK_user_TO_serviceinfo` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='서비스정보';
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='서비스정보';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@ -472,7 +472,7 @@ CREATE TABLE `serviceinfo` (
LOCK TABLES `serviceinfo` WRITE;
/*!40000 ALTER TABLE `serviceinfo` DISABLE KEYS */;
INSERT INTO `serviceinfo` VALUES (5,1,585,'s1757062232','prime','normal','chiba','2025-09-05',400000,'2025-09-05',NULL,NULL,'available','2025-09-05 09:12:29','2025-09-05 08:50:32',NULL),(8,1,223,'s1757316530','itsolution','VPN','tokyo','2025-09-23',500000,'2025-09-08',NULL,NULL,'available','2025-09-09 04:19:07','2025-09-08 07:28:50',NULL),(9,1,69,'s1757389256','gdidc','dedicated','3center','2025-09-27',500000,'2025-09-10',NULL,NULL,'available',NULL,'2025-09-09 03:40:56',NULL);
INSERT INTO `serviceinfo` VALUES (5,1,585,'s1757062232','prime','normal','chiba','2025-09-05',400000,'2025-09-05',NULL,NULL,'available','2025-09-05 09:12:29','2025-09-05 08:50:32',NULL),(8,1,223,'s1757316530','itsolution','VPN','tokyo','2025-09-23',500000,'2025-09-08',NULL,NULL,'available','2025-09-09 04:19:07','2025-09-08 07:28:50',NULL),(9,1,69,'s1757389256','gdidc','dedicated','3center','2025-09-27',500000,'2025-09-10',NULL,NULL,'available',NULL,'2025-09-09 03:40:56',NULL),(10,1,260,'s1757398920','prime','alternative','3center','2025-09-25',500000,'2025-09-03',NULL,NULL,'available',NULL,'2025-09-09 06:22:00',NULL);
/*!40000 ALTER TABLE `serviceinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -590,4 +590,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-09-09 14:27:17
-- Dump completed on 2025-09-09 15:38:53

View File

@ -36,8 +36,11 @@ class ServiceHelper extends CustomerHelper
public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null
{
switch ($field) {
case 'clientinfo_uid':
$value = "<a href=\"/admin/customer/service/detail?clientinfo_uid={$value}\">" . $viewDatas['control']['field_optons'][$field][$value]->getTitle() . "</a>";
break;
case 'serverinfo_uid':
$value = $viewDatas['entity']->getServerEntity()->getCustomTitle();
$value = array_key_exists('entity', $viewDatas) ? $viewDatas['entity']->getServerEntity()->getCustomTitle() : "지정된서버없음";
break;
case 'billing_at':
if (array_key_exists('unPaids', $viewDatas)) {

View File

@ -0,0 +1,180 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
<tr>
<td class="layout_left">
<!-- Layout Left Start -->
<?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?>
<!-- Layout Left End -->
</td>
<td class="layout_right">
<!-- Layout Right Start -->
<div class="layout_header"><?= $this->include("templates/{$viewDatas['layout']}/index_header"); ?></div>
<div id="container" class="layout_content">
<link href="/css/<?= $viewDatas['layout'] ?>/index.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/admin/service/detail.css" media="screen" rel="stylesheet" type="text/css" />
<div class="index_body p-5">
<!-- index_body -->
<div class="row align-items-start rounded border border-gray pt-2 pe-2 pb-0">
<div class="col-1 text-center p-3">
<div>gobetsoft</div>
<div><a href="#">[청구서발행]</a></div>
</div>
<div class="col-8">
<!-- Dashboard -->
<div class="row">
<div class="col summary-box">
<div class="bg-label">도코</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">서버</div>
<div class="fw-bold">1</div>
</div>
<div class="col summary-box">
<div class="bg-label">VPN</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">일반</div>
<div class="fw-bold">1</div>
</div>
<div class="col summary-box">
<div class="bg-label">방어</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">전용</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">이벤트</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">테스트</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">대체</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">장기할인</div>
<div class="fw-bold">30%</div>
</div>
<div class="col summary-box">
<div class="bg-label">쿠폰</div>
<div class="fw-bold">0</div>
</div>
</div>
</div>
<div class="col-3">
<div class="row text-center">
<div class="col summary-box">
<div class="bg-label amount-highlight">예치금</div>
<div class="amount-highlight">30,000</div>
</div>
<div class="col summary-box">
<div class="bg-label amount-positive">전체요금</div>
<div class="amount-positive">567,000</div>
</div>
<div class="col summary-box">
<div class="bg-label amount-negative">전체미납금</div>
<div class="amount-negative">567,000</div>
</div>
</div>
</div>
</div>
<div class="row align-items-center rounded border border-gray p-2 mt-3">
<div class="col-1">
<div class="text-center fw-bold">비고</div>
</div>
<div class="col-10">
<textarea class="form-control note-box">
24 11 7 도메인 비용 안내 금지 X / 비용 변동 있을 경우 안내
23 6 14 전서버 해지하였으나, 23 11/20 재입고
기존 업체명 : KY->gobetsoft 변경
평구소프트 소개
25/08/16 도메인 1 구매 4만원 결제처리 / 예치금 3만원 -신민수-
</textarea>
</div>
<div class="col-1">
<button class="btn btn-primary">저장</button>
</div>
</div>
<div class="row align-items-end rounded border border-gray p-2 mt-3">
<div class="col-1 text-center">
<div><a href="#">[상세정보]</a></div>
<div>1836B-M404</div>
<div>S10243329344</div>
</div>
<div class="col-11">
<div class="row">
<div class="col summary-box">
<div class="bg-label">사이트</div>
<div class="fw-bold">Prime</div>
</div>
<div class="col summary-box">
<div class="bg-label">위치</div>
<div class="fw-bold">도쿄</div>
</div>
<div class="col summary-box">
<div class="bg-label">형식</div>
<div class="fw-bold">대체</div>
</div>
<div class="col summary-box">
<div class="bg-label">CPU/메모리/저장장치</div>
<div class="fw-bold">XEON*2/2G*2/SSD 128G*2</div>
</div>
<div class="col summary-box">
<div class="bg-label">SOFTWARE</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">OS</div>
<div class="fw-bold">Windows</div>
</div>
<div class="row">
<div class="col summary-box">
<div class="bg-label">IP주소</div>
<div class="fw-bold">10.20.20.20</div>
</div>
<div class="col summary-box">
<div class="bg-label">CS</div>
<div class="fw-bold">20.1.2.3</div>
</div>
<div class="col summary-box">
<div class="bg-label">메모</div>
<div class="fw-bold">asdfsdfsdfsdf</div>
</div>
<div class="col summary-box">
<div class="bg-label">부가서비스</div>
<div class="fw-bold">부가</div>
</div>
<div class="col summary-box">
<div class="bg-label">결제처리</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">결제처리</div>
<div class="fw-bold">0</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- index_body -->
</div>
<div class="layout_footer"><?= $this->include("templates/{$viewDatas['layout']}/index_footer"); ?></div>
<!-- Layout Right End -->
</td>
</tr>
</table>
<!-- Layout Middle End -->
<div class="layout_bottom"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?></div>
<?= $this->endSection() ?>

View File

@ -0,0 +1,33 @@
table.layout_middle td.layout_right div#container * {
font-size:12px;
}
.summary-box {
margin:0px;
padding:0px;
}
.summary-box div{
text-align: center;
padding: 5px;
border: 1px solid rgb(204, 203, 203);
}
.summary-box div.bg-label {
background-color:rgb(224, 223, 223)
}
.note-box {
height: 150px;
resize: none;
}
.amount-positive {
color: green;
}
.amount-negative {
color: red;
}
.amount-highlight {
color: blue;
}