dbms_init...1
This commit is contained in:
parent
7296c0a82d
commit
626dcd5ccd
@ -50,4 +50,19 @@ class ClientController extends CustomerController
|
|||||||
return $validation;
|
return $validation;
|
||||||
}
|
}
|
||||||
//Index,FieldForm관련.
|
//Index,FieldForm관련.
|
||||||
|
protected function setFilterConditionForList(): void
|
||||||
|
{
|
||||||
|
foreach ($this->getFilterFields() as $field) {
|
||||||
|
$this->$field = $this->request->getVar($field);
|
||||||
|
if ($this->$field !== null && $this->$field !== '') {
|
||||||
|
if ($field === 'role') {
|
||||||
|
$where = "FIND_IN_SET(" . $this->getService()->getModel()->escape($this->$field) . ", {$this->getService()->getModel()->getTable()}.{$field}) > 0";
|
||||||
|
//FIND_IN_SET()은 MySQL 함수이므로 CodeIgniter가 이를 일반 컬럼명으로 착각하고 escape하게 되면 오류가 발생합니다. 따라서 ->where($sql, null, false)로 명시하여 escape를 꺼줘야 정상 작동
|
||||||
|
$this->getService()->getModel()->where($where, null, false);
|
||||||
|
} else {
|
||||||
|
$this->getService()->getModel()->where("{$this->getService()->getModel()->getTable()}.{$field}", $this->$field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -97,6 +97,18 @@ class ServiceController extends CustomerController
|
|||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function setWordConditionForList(): void
|
||||||
|
{
|
||||||
|
$this->word = $this->request->getVar('word');
|
||||||
|
if ($this->word !== null && $this->word !== '') {
|
||||||
|
if ($this->getHelper()->isIPAddress($this->word, 'ipv4')) {
|
||||||
|
$this->getService()->setSearchIp($this->word);
|
||||||
|
} else {
|
||||||
|
$this->getService()->getModel()->setList_WordFilter($this->word);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
//Index,FieldForm관련
|
//Index,FieldForm관련
|
||||||
protected function index_process(): array
|
protected function index_process(): array
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,6 +48,12 @@ class ServiceItemController extends CustomerController
|
|||||||
}
|
}
|
||||||
return $this->_serviceService;
|
return $this->_serviceService;
|
||||||
}
|
}
|
||||||
|
protected function initAction(string $action): void
|
||||||
|
{
|
||||||
|
//$item_type(CPU,RAM,STORAGE등)에 따라 선언된 getFormFieldOption용 사용됨 (initAction보다 먼저 호출해야 됨)
|
||||||
|
$this->initServiceItemOptions();
|
||||||
|
parent::initAction($action);
|
||||||
|
}
|
||||||
protected function getFormFieldOption(string $field, array $options = []): array
|
protected function getFormFieldOption(string $field, array $options = []): array
|
||||||
{
|
{
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
|
|||||||
@ -54,4 +54,19 @@ class UserController extends AdminController
|
|||||||
return $validation;
|
return $validation;
|
||||||
}
|
}
|
||||||
//Index,FieldForm관련.
|
//Index,FieldForm관련.
|
||||||
|
protected function setFilterConditionForList(): void
|
||||||
|
{
|
||||||
|
foreach ($this->getFilterFields() as $field) {
|
||||||
|
$this->$field = $this->request->getVar($field);
|
||||||
|
if ($this->$field !== null && $this->$field !== '') {
|
||||||
|
if ($field === 'role') {
|
||||||
|
$where = "FIND_IN_SET(" . $this->getService()->getModel()->escape($this->$field) . ", {$this->getService()->getModel()->getTable()}.{$field}) > 0";
|
||||||
|
//FIND_IN_SET()은 MySQL 함수이므로 CodeIgniter가 이를 일반 컬럼명으로 착각하고 escape하게 되면 오류가 발생합니다. 따라서 ->where($sql, null, false)로 명시하여 escape를 꺼줘야 정상 작동
|
||||||
|
$this->getService()->getModel()->where($where, null, false);
|
||||||
|
} else {
|
||||||
|
$this->getService()->getModel()->where("{$this->getService()->getModel()->getTable()}.{$field}", $this->$field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -575,28 +575,27 @@ abstract class CommonController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
//리스트
|
//리스트
|
||||||
//List 조건절 처리
|
//Filter 조건절 처리
|
||||||
final protected function setConditionForList(): void
|
protected function setFilterConditionForList(): void
|
||||||
{
|
{
|
||||||
//조건절 처리
|
|
||||||
foreach ($this->getFilterFields() as $field) {
|
foreach ($this->getFilterFields() as $field) {
|
||||||
$this->$field = $this->request->getVar($field);
|
$this->$field = $this->request->getVar($field);
|
||||||
if ($this->$field !== null && $this->$field !== '') {
|
if ($this->$field !== null && $this->$field !== '') {
|
||||||
if ($field === 'role') {
|
$this->getService()->getModel()->where("{$this->getService()->getModel()->getTable()}.{$field}", $this->$field);
|
||||||
$where = "FIND_IN_SET(" . $this->getService()->getModel()->escape($this->$field) . ", {$this->getService()->getModel()->getTable()}.{$field}) > 0";
|
|
||||||
//FIND_IN_SET()은 MySQL 함수이므로 CodeIgniter가 이를 일반 컬럼명으로 착각하고 escape하게 되면 오류가 발생합니다. 따라서 ->where($sql, null, false)로 명시하여 escape를 꺼줘야 정상 작동
|
|
||||||
$this->getService()->getModel()->where($where, null, false);
|
|
||||||
} else {
|
|
||||||
$this->getService()->getModel()->where("{$this->getService()->getModel()->getTable()}.{$field}", $this->$field);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//검색어 처리
|
}
|
||||||
|
//검색어 조건절 처리
|
||||||
|
protected function setWordConditionForList(): void
|
||||||
|
{
|
||||||
$this->word = $this->request->getVar('word');
|
$this->word = $this->request->getVar('word');
|
||||||
if ($this->word !== null && $this->word !== '') {
|
if ($this->word !== null && $this->word !== '') {
|
||||||
$this->getService()->getModel()->setList_WordFilter($this->word);
|
$this->getService()->getModel()->setList_WordFilter($this->word);
|
||||||
}
|
}
|
||||||
//검색일 처리
|
}
|
||||||
|
//검색일 조건절 처리
|
||||||
|
protected function setDateConditionForList(): void
|
||||||
|
{
|
||||||
$this->start = $this->request->getVar('start');
|
$this->start = $this->request->getVar('start');
|
||||||
if ($this->start !== null && $this->start !== '') {
|
if ($this->start !== null && $this->start !== '') {
|
||||||
$this->getService()->getModel()->where(sprintf("%s.created_at >= '%s 00:00:00'", $this->getService()->getModel()->getTable(), $this->start));
|
$this->getService()->getModel()->where(sprintf("%s.created_at >= '%s 00:00:00'", $this->getService()->getModel()->getTable(), $this->start));
|
||||||
@ -606,9 +605,9 @@ abstract class CommonController extends BaseController
|
|||||||
$this->getService()->getModel()->where(sprintf("%s.created_at <= '%s 23:59:59'", $this->getService()->getModel()->getTable(), $this->end));
|
$this->getService()->getModel()->where(sprintf("%s.created_at <= '%s 23:59:59'", $this->getService()->getModel()->getTable(), $this->end));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//OrderBy 처리
|
||||||
protected function setOrderByForList()
|
protected function setOrderByForList()
|
||||||
{
|
{
|
||||||
//OrderBy 처리
|
|
||||||
$this->order_field = $this->request->getVar('order_field');
|
$this->order_field = $this->request->getVar('order_field');
|
||||||
$this->order_value = $this->request->getVar('order_value');
|
$this->order_value = $this->request->getVar('order_value');
|
||||||
if ($this->order_field !== null && $this->order_field !== '') {
|
if ($this->order_field !== null && $this->order_field !== '') {
|
||||||
@ -617,8 +616,15 @@ abstract class CommonController extends BaseController
|
|||||||
$this->getService()->getModel()->orderBy(sprintf("%s.%s %s", $this->getService()->getModel()->getTable(), $this->getService()->getModel()->getPKField(), "DESC"));
|
$this->getService()->getModel()->orderBy(sprintf("%s.%s %s", $this->getService()->getModel()->getTable(), $this->getService()->getModel()->getPKField(), "DESC"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//조건절 처리
|
||||||
|
protected function setConditionForList(): void
|
||||||
|
{
|
||||||
|
$this->setFilterConditionForList();
|
||||||
|
$this->setWordConditionForList();
|
||||||
|
$this->setDateConditionForList();
|
||||||
|
}
|
||||||
//PageNation 처리
|
//PageNation 처리
|
||||||
final protected function getPageOptionsByPaginationForList(): array
|
protected function getPageOptiosForList(): array
|
||||||
{
|
{
|
||||||
$page_options = ["" => "줄수선택"];
|
$page_options = ["" => "줄수선택"];
|
||||||
for ($i = $this->per_page; $i <= $this->total_count; $i += $this->per_page) {
|
for ($i = $this->per_page; $i <= $this->total_count; $i += $this->per_page) {
|
||||||
@ -627,13 +633,11 @@ abstract class CommonController extends BaseController
|
|||||||
$page_options[$this->total_count] = $this->total_count;
|
$page_options[$this->total_count] = $this->total_count;
|
||||||
return $page_options;
|
return $page_options;
|
||||||
}
|
}
|
||||||
final protected function getPaginationForList($pager_group = 'default', int $segment = 0, $template = 'bootstrap_full')
|
protected function getPaginationForList($pager_group = 'default', int $segment = 0, $template = 'bootstrap_full')
|
||||||
{
|
{
|
||||||
//Page, Per_page필요부분
|
//Page, Per_page필요부분
|
||||||
$this->page = (int) $this->request->getVar('page') ?: 1;
|
$this->page = (int) $this->request->getVar('page') ?: 1;
|
||||||
$this->per_page = (int) $this->request->getVar('per_page') ?: intval(DEFAULT_LIST_PERPAGE ?? 20);
|
$this->per_page = (int) $this->request->getVar('per_page') ?: intval(DEFAULT_LIST_PERPAGE ?? 20);
|
||||||
//줄수 처리용
|
|
||||||
$this->page_options = $this->getPageOptionsByPaginationForList();
|
|
||||||
// 1.Views/Pagers/에 bootstrap_full.php,bootstrap_simple.php 생성
|
// 1.Views/Pagers/에 bootstrap_full.php,bootstrap_simple.php 생성
|
||||||
// 2.app/Config/Pager.php/$templates에 'bootstrap_full => 'Pagers\bootstrap_full',
|
// 2.app/Config/Pager.php/$templates에 'bootstrap_full => 'Pagers\bootstrap_full',
|
||||||
// 'bootstrap_simple' => 'Pagers\bootstrap_simple', 추가
|
// 'bootstrap_simple' => 'Pagers\bootstrap_simple', 추가
|
||||||
@ -652,6 +656,8 @@ abstract class CommonController extends BaseController
|
|||||||
$this->total_count = intval($this->getService()->getModel()->selectCount('*', 'cnt')->get()->getRow()->cnt);
|
$this->total_count = intval($this->getService()->getModel()->selectCount('*', 'cnt')->get()->getRow()->cnt);
|
||||||
//Pagination 처리
|
//Pagination 처리
|
||||||
$this->pagination = $this->getPaginationForList();
|
$this->pagination = $this->getPaginationForList();
|
||||||
|
//줄수 처리용
|
||||||
|
$this->page_options = $this->getPageOptiosForList();
|
||||||
//조건절 , OrcerBy , Limit 처리
|
//조건절 , OrcerBy , Limit 처리
|
||||||
$this->setConditionForList();
|
$this->setConditionForList();
|
||||||
$this->setOrderByForList();
|
$this->setOrderByForList();
|
||||||
|
|||||||
@ -58,7 +58,10 @@ class ServiceHelper extends CustomerHelper
|
|||||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $field) . " 선택</option>";
|
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $field) . " 선택</option>";
|
||||||
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $label) {
|
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $label) {
|
||||||
$disabled = in_array($key, $viewDatas['occupied_codes']) ? 'disabled="disabled"' : '';
|
$disabled = "";
|
||||||
|
if (!array_key_exists('index_content_top_filter', $extras)) {
|
||||||
|
$disabled = in_array($key, $viewDatas['occupied_codes']) ? 'disabled="disabled"' : '';
|
||||||
|
}
|
||||||
$selected = ($value === $key) ? 'selected="selected"' : '';
|
$selected = ($value === $key) ? 'selected="selected"' : '';
|
||||||
$form_temps[] = "<option value=\"{$key}\"{$selected} {$disabled}>{$label}</option>";
|
$form_temps[] = "<option value=\"{$key}\"{$selected} {$disabled}>{$label}</option>";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,24 @@ class MyLogHelper extends CommonHelper
|
|||||||
parent::__construct($request);
|
parent::__construct($request);
|
||||||
$this->setTitleField(MyLogModel::TITLE);
|
$this->setTitleField(MyLogModel::TITLE);
|
||||||
}
|
}
|
||||||
|
public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null
|
||||||
|
{
|
||||||
|
switch ($field) {
|
||||||
|
case 'status':
|
||||||
|
$value = parent::getFieldView($field, $value, $viewDatas, $extras);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (in_array($field, $viewDatas['control']['filter_fields'])) {
|
||||||
|
$value = $viewDatas['control']['filter_optons'][$field][$value];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (is_array($value)) {
|
||||||
|
echo __METHOD__ . "에서 오류: {$field}의 값이 Array형태입니다";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
public function getListButton(string $action, array $viewDatas, array $extras = []): string
|
public function getListButton(string $action, array $viewDatas, array $extras = []): string
|
||||||
{
|
{
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
|
|||||||
@ -71,13 +71,17 @@ abstract class CommonService
|
|||||||
}
|
}
|
||||||
return $this->setRelatedEntity($entity);
|
return $this->setRelatedEntity($entity);
|
||||||
}
|
}
|
||||||
|
public function findAllDatas(array $columns = ['*']): mixed
|
||||||
|
{
|
||||||
|
return $this->getModel()->select(implode(',', $columns))->findAll();
|
||||||
|
}
|
||||||
public function getEntities(mixed $where = null, array $columns = ['*']): array
|
public function getEntities(mixed $where = null, array $columns = ['*']): array
|
||||||
{
|
{
|
||||||
if ($where) {
|
if ($where) {
|
||||||
$this->getModel()->where($where);
|
$this->getModel()->where($where);
|
||||||
}
|
}
|
||||||
$entities = [];
|
$entities = [];
|
||||||
foreach ($this->getModel()->select(implode(',', $columns))->findAll() as $entity) {
|
foreach ($this->findAllDatas($columns) as $entity) {
|
||||||
$entities[$entity->getPK()] = $this->setRelatedEntity($entity);
|
$entities[$entity->getPK()] = $this->setRelatedEntity($entity);
|
||||||
}
|
}
|
||||||
if (env('app.debug.index')) {
|
if (env('app.debug.index')) {
|
||||||
|
|||||||
@ -26,16 +26,8 @@ class ServiceItemLinkIpService extends ServiceItemLinkService
|
|||||||
|
|
||||||
public function getFormFieldOption(string $field, array $options = []): array
|
public function getFormFieldOption(string $field, array $options = []): array
|
||||||
{
|
{
|
||||||
switch ($field) {
|
foreach ($this->getIpService()->getEntities() as $entity) {
|
||||||
case 'clientinfo_uid':
|
$options[$entity->getPK()] = $entity->getTitle();
|
||||||
case 'ownerinfo_uid':
|
|
||||||
foreach ($this->getClientService()->getEntities() as $entity) {
|
|
||||||
$options[$entity->getPK()] = $entity->getTitle();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$options = parent::getFormFieldOption($field, $options);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return $options;
|
return $options;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,16 +3,17 @@
|
|||||||
namespace App\Services\Customer;
|
namespace App\Services\Customer;
|
||||||
|
|
||||||
use App\Entities\Customer\ServiceEntity;
|
use App\Entities\Customer\ServiceEntity;
|
||||||
use App\Models\Customer\ServiceModel;
|
|
||||||
use CodeIgniter\HTTP\IncomingRequest;
|
|
||||||
|
|
||||||
use App\Entities\Equipment\CodeEntity;
|
use App\Entities\Equipment\CodeEntity;
|
||||||
|
use App\Models\Customer\ServiceModel;
|
||||||
|
|
||||||
use App\Services\Equipment\CodeService;
|
use App\Services\Equipment\CodeService;
|
||||||
|
use CodeIgniter\HTTP\IncomingRequest;
|
||||||
|
|
||||||
class ServiceService extends CustomerService
|
class ServiceService extends CustomerService
|
||||||
{
|
{
|
||||||
protected ?IncomingRequest $request = null;
|
protected ?IncomingRequest $request = null;
|
||||||
private ?CodeService $_codeService = null;
|
private ?CodeService $_codeService = null;
|
||||||
|
private ?string $_searchIP = null;
|
||||||
public function __construct(?IncomingRequest $request = null)
|
public function __construct(?IncomingRequest $request = null)
|
||||||
{
|
{
|
||||||
parent::__construct($request);
|
parent::__construct($request);
|
||||||
@ -69,6 +70,26 @@ class ServiceService extends CustomerService
|
|||||||
$entity->setOwner($this->getClient($entity->getOwnerUID()));
|
$entity->setOwner($this->getClient($entity->getOwnerUID()));
|
||||||
return parent::setRelatedEntity($entity);
|
return parent::setRelatedEntity($entity);
|
||||||
}
|
}
|
||||||
|
public function setSearchIp(string $ip): void
|
||||||
|
{
|
||||||
|
$this->_searchIP = $ip;
|
||||||
|
}
|
||||||
|
public function getSearchIp(): string|null
|
||||||
|
{
|
||||||
|
return $this->_searchIP;
|
||||||
|
}
|
||||||
|
public function findAllDatas(array $columns = ['*']): mixed
|
||||||
|
{
|
||||||
|
$ip = $this->getSearchIp();
|
||||||
|
if ($ip) {
|
||||||
|
$sql = "SELECT serviceinfo.* FROM serviceinfo
|
||||||
|
LEFT JOIN serviceinfo_items ON serviceinfo.uid = serviceinfo_items.serviceinfo_uid
|
||||||
|
WHERE serviceinfo_items.item_type='IP'
|
||||||
|
AND serviceinfo_items.item_uid IN (SELECT uid FROM ipinfo WHERE ip='{$ip}')";
|
||||||
|
return $this->getModel()->query($sql)->getResult(ServiceEntity::class);
|
||||||
|
}
|
||||||
|
return parent::findAllDatas($columns);
|
||||||
|
}
|
||||||
//기본 기능부분
|
//기본 기능부분
|
||||||
|
|
||||||
//다음 달로 결제일을 연장합니다.
|
//다음 달로 결제일을 연장합니다.
|
||||||
|
|||||||
@ -4,48 +4,56 @@
|
|||||||
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
||||||
<div class="action_form" style="width:600px;">
|
<div class="action_form" style="width:600px;">
|
||||||
<!-- 청구서 정보 -->
|
<!-- 청구서 정보 -->
|
||||||
<table class=" table table-bordered">
|
<table class=" table table-bordered text-center">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th>메일 제목</th>
|
<th class="p-0">메일 제목</th>
|
||||||
<td colspan="3">서비스 요금 청구서 </td>
|
<td colspan="3">서비스 요금 청구서 </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>발신자</th>
|
<th class="p-0">발신자</th>
|
||||||
<td>support@priem-idc.jp</td>
|
<td class="p-0">support@priem-idc.jp</td>
|
||||||
<th>발행일</th>
|
<th class="p-0">발행일</th>
|
||||||
<td><?= date("Y-m-d") ?></td>
|
<td class="p-0"><?= date("Y-m-d") ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<!-- 서비스 테이블 -->
|
<!-- 서비스 테이블 -->
|
||||||
<?php foreach ($viewDatas['entities'] as $entity): ?>
|
<?php foreach ($viewDatas['entities'] as $entity): ?>
|
||||||
<table class="table table-bordered text-center">
|
<table class="table table-sm table-bordered text-center">
|
||||||
<tr>
|
<tr>
|
||||||
<th>관리자명</th>
|
<th class="p-0">관리자명</th>
|
||||||
<th>총 결제 금액</th>
|
<th class="p-0">총 결제 금액</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?= $entity['name'] ?></td>
|
<td class="p-0"><?= $entity['name'] ?></td>
|
||||||
<td><?= number_format($entity['total_amount']) ?>원</td>
|
<td class="p-0"><?= number_format($entity['total_amount']) ?>원</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<table class="table table-bordered text-center">
|
<table class="table table-sm table-bordered">
|
||||||
|
<tr>
|
||||||
|
<th class="p-0">코드</th>
|
||||||
|
<th class="p-0">항목</th>
|
||||||
|
<th class="p-0">지급기한</th>
|
||||||
|
</tr>
|
||||||
<?php foreach ($entity['services'] as $service): ?>
|
<?php foreach ($entity['services'] as $service): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<th>서비스: <?= $service['code'] ?></th>
|
<td class="p-0"><?= $service['code'] ?></td>
|
||||||
<th class="text-end">지급기한: <?= $service['billing_at'] ?></th>
|
<td class="p-0">
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>항목</td>
|
|
||||||
<td>
|
|
||||||
<ol>
|
<ol>
|
||||||
<?php foreach ($service['items'] as $item): ?>
|
<?php foreach ($service['items'] as $item): ?>
|
||||||
<li class="text-start"><?= $item['item_type'] ?> :<?= $item['item_uid'] ?> [<?= number_format($item['amount']) ?>원]</li>
|
<li class="m-0 p-0">
|
||||||
|
<div class="row align-items-start p-0">
|
||||||
|
<div class="col text-start"><?= $item['item_type'] ?></div>
|
||||||
|
<div class="col text-nowrap"><?= $item['item_uid'] ?></div>
|
||||||
|
<div class="col text-end"><?= number_format($item['amount']) ?>원</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</ol>
|
</ol>
|
||||||
</td>
|
</td>
|
||||||
|
<td class="p-0"><?= $service['billing_at'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
@ -53,6 +61,80 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
<pre class="border border-1 text-start">
|
||||||
|
※ 청구서를 받으셨던 서버인 경우에도 발행하는 시점까지 미납인 경우 재 발행됩니다.
|
||||||
|
입금을 하신 경우에는 연락 부탁드립니다. 입금 하실 계좌 번호 입니다.
|
||||||
|
<div class="text-danger">
|
||||||
|
은행명 : 국민은행
|
||||||
|
계좌번호 : 331301-04-217387
|
||||||
|
예금주 : 주)듀나미스
|
||||||
|
</div>
|
||||||
|
고객명과 입금자명이 상이한 경우 반드시 확인 연락이 필요합니다.
|
||||||
|
입금 시 당 청구서에 기재되어 있는 고객명으로 입금해주시면 별도의 입금 확인
|
||||||
|
전화가 필요없습니다.
|
||||||
|
|
||||||
|
※ 기타 서비스 요금 안내
|
||||||
|
- 도메인 구매 대행 서비스 : 도메인 1개당 3만원 (1회성 비용으로 구매를
|
||||||
|
<span class="text-danger">요청하신 달에만 요금이 청구</span>됩니다)
|
||||||
|
- IP 추가 : 일반회선 10만원 / 보안회선 10만원(추가 하신 날로 부터 사용을 중지
|
||||||
|
하시는 달까지 <span class="text-danger">매월 요금이 청구</span> 됩니다.)
|
||||||
|
- IP 변경
|
||||||
|
- 단순 IP 변경의 경우(오래 사용하여 변경, 정기적인 변경, 관리자 변경 등)에는
|
||||||
|
무료로 변경 해 드리고 있습니다.
|
||||||
|
- IP에 문제(<span class="text-danger">KCSC로 연결, 접근(원격접속) 차단, 공격을 받아 다른 IP로 변경 등</span>)가
|
||||||
|
있어 변경 하실 경우에는 요금이 청구 됩니다.
|
||||||
|
* 청구비용 10만원 (1회성 비용으로 구매를 요청하신 달에만 요금이 청구 됩니다)
|
||||||
|
- 위 서비스는 선입금으로 제공 해 드리고 있습니다.
|
||||||
|
- VPN 결제일의 자정까지 결제처리가 안될시 자동차단처리가 되게됩니다.
|
||||||
|
이점 양해 부탁드리겠습니다.
|
||||||
|
<span class="text-danger">※ 이용 해지시에는 사용하셨던 IP에 연결 되어 있는 도메인들은 꼭 연결 해제를 해
|
||||||
|
주시기 바랍니다.</span>
|
||||||
|
보장 트래픽 : 기본 트래픽 사용량은 IN 10Mbps / OUT 10Mbps 입니다
|
||||||
|
보장 트래픽 이상을 사용할 경우 트래픽 과금이 발생할 수 있습니다
|
||||||
|
※ 알림(필히 숙지 하여 주시기 바랍니다.)
|
||||||
|
|
||||||
|
1. 에 등록 하신 고객명 / 전화번호 / 메일 주소는 차후 고객님 확인을 위해
|
||||||
|
사용되오니고객님께서도 필히 알고 계셔야 합니다.
|
||||||
|
또한 전화번호와 메일주소 또는 메신저는 고객님에게 연락을 취해야 할 경우
|
||||||
|
사용됩니다.변동사항이 있을 경우에는 반드시 연락을 하여 변경해 주시기 바랍니다.
|
||||||
|
|
||||||
|
변동사항을 에게 알려 주시지 않거나, 에 등록된 연락처로 연락을 해도 연결이 안되어
|
||||||
|
발생하는 피해에 대해서는 책임을 지지 않습니다.
|
||||||
|
|
||||||
|
2. 결제는 납부기한내에 해 주셔야 합니다.
|
||||||
|
혹시라도 납부기한내에 결제를 하지 못하실 경우는 미리 연락을 주시면 납부기한 후
|
||||||
|
최대 3일간은 서버 접속이 유지됩니다.
|
||||||
|
하지만 납부기한까지 연락을 안주시거나 연락을 하셨더라도 납부기한을
|
||||||
|
3일 초과하시면 서버 접속이 차단되고 차단후에도 3일동안 연락이 없을 경우
|
||||||
|
자동 해지 처리 되고 데이터는 삭제처리 되오니 주의 하시기 바랍니다.
|
||||||
|
|
||||||
|
3. 환불정책
|
||||||
|
월단위 계약(계산)이므로 중도 <span class="text-danger">환불(일할계산)은 안됩니다.</span>
|
||||||
|
단, 셋팅에 문제가 있거나 기타 문제가 있을 경우 서버를 인계 받으시고 <span class="text-danger">3일 안으로는
|
||||||
|
환불 요청을 하실 수 있습니다.</span>
|
||||||
|
|
||||||
|
4. 서버 운영중 해킹으로 발생한 피해는 저희 에서 책임을 지지 않습니다.
|
||||||
|
서버운영에 있어서 보안에 각별히 주의 부탁드리겠습니다.
|
||||||
|
<해킹 대비 및 보안조치사항>
|
||||||
|
- 주기적인 window 보안 업데이트
|
||||||
|
- linux ,mysql , php, jsp 보안권고
|
||||||
|
- 서버 원격 접속 패스워드 및 mssql 패스워드 변경
|
||||||
|
* 영문,숫자,특수문자 8자리 이상 조합하여 사용 권고
|
||||||
|
* 매월 주기적으로 패스워드 변경
|
||||||
|
* 패스워드 노출 시 즉각 변경
|
||||||
|
- 서버내 방화벽에서 특정IP만 서버에 접속할 수 있도록 방화벽 설정
|
||||||
|
- 원격접속 포트 기본포트에서 변경 설정 (기본 포트 window : 3389 / linux : 22 )
|
||||||
|
* 무료 설치 : Microsoft Security Essential 설치
|
||||||
|
- 웹서비스 보안을 위한 웹방화벽 설치 대행서비스(유료)
|
||||||
|
|
||||||
|
# 원격포트 변경 및 원격접속 제한 설정은 홈페이지에 등록되어 있습니다.
|
||||||
|
자세한 사항은 센터로 문의주시기 바랍니다.
|
||||||
|
|
||||||
|
5. 서버 운영중 장비부품 문제(예:하드디스크의 고장 등)로 발생한 피해는
|
||||||
|
책임을 지지 않습니다.
|
||||||
|
(요청하시면 백업을 위해 무료로 추가 하드를 제공해 드리고 있지만, 추가가 불가능한
|
||||||
|
경우도 있습니다. 번거로우시더라도 주기적인 데이터백업을 부탁드리겠습니다.)
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -4,7 +4,7 @@
|
|||||||
<nav class="condition nav">
|
<nav class="condition nav">
|
||||||
조건:
|
조건:
|
||||||
<?php foreach ($viewDatas['control']['filter_fields'] as $field): ?>
|
<?php foreach ($viewDatas['control']['filter_fields'] as $field): ?>
|
||||||
<?= $viewDatas['helper']->getFieldForm($field, $viewDatas[$field] ?? old($field), $viewDatas) ?>
|
<?= $viewDatas['helper']->getFieldForm($field, $viewDatas[$field] ?? old($field), $viewDatas, ['index_content_top_filter' => 'true']) ?>
|
||||||
<?php endforeach ?>
|
<?php endforeach ?>
|
||||||
</nav>
|
</nav>
|
||||||
<nav class="search nav justify-content-center">
|
<nav class="search nav justify-content-center">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user