dbms_primeidc_init...1

This commit is contained in:
최준흠 2025-04-09 15:03:02 +09:00
parent 41a8ae40d9
commit 7f0e63b299
3 changed files with 78 additions and 190 deletions

View File

@ -2,6 +2,8 @@
namespace lib\Controllers\DBMS\Client;
use lib\Models\AddDbModel;
use lib\Models\ClientModel;
use lib\Utils\Pagination;
class PaymentController extends ClientController
@ -44,42 +46,53 @@ class PaymentController extends ClientController
//WEB 접속방법 : http://localhostsite/client/payment/unpaid
public function nonpayment(array $params): string
{
//사이트 정보 가져오기
if (!array_key_exists('sitekey', $params)) {
throw new \Exception("sitekey 값이 정의되지 않았습니다.");
}
$sitekey = $params['sitekey'];
$this->siteInfo = DBMS_SITEINFOS[$sitekey];
if (!array_key_exists($sitekey, DBMS_SITEINFOS)) {
throw new \Exception("[{$sitekey}]에 해당하는 사이트정보가 없습니다.");
}
//사용자정보가져오기
$client_code = $params['client_code'];
if (!array_key_exists('client_code', $params)) {
throw new \Exception("client_code 값이 정의되지 않았습니다.");
}
$client = $this->getClientService()->getEntityByCode($client_code);
if (!$client) {
throw new \Exception("[{$client_code}]에 해당하는 사이트정보가 없습니다.");
}
$this->client = $client;
//Client_Code = ["C219"=>WinIDC,"C116"=>IDC-JP"] -> 미지급금계산 제외 Client_Code
$exclude_clients = ['C116', 'C219'];
//mode 당일,1일전,2일전,3일전,custom
$nonpaymentDay = 'all';
$today = date("Y-m-d");
switch ($params['mode']) {
case 'today':
$this->getServiceService()->getModel()->where("service_payment_date = CURDATE()");
$this->message = "오늘[{$today}]기준 당일 ";
break;
case '1day':
$nonpaymentDay = 1;
$this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)");
$this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전";
break;
case '2day':
$nonpaymentDay = 2;
$this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)");
$this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전";
break;
case '3day':
$nonpaymentDay = 3;
$this->getServiceService()->getModel()->where("service_payment_date = Date_Add(CURDATE(),INTERVAL {$nonpaymentDay} DAY)");
$this->message = "오늘[{$today}]기준 {$nonpaymentDay}일전";
break;
case 'custom':
break;
case 'all':
default:
$this->message = "오늘[{$today}]기준 전체";
break;
}
$total = count($temps);
$page = $parmas['page'] ?? 1;
$perPage = $parmas['perPage'] ?? 10;
$this->pagination = new Pagination($total, (int)$page, (int)$perPage);
$table = $this->getServiceService()->getModel()->getTable();
$clientTable = ClientModel::TABLE;
$addDbTable = AddDbModel::TABLE;
$this->getServiceService()->getModel()->select("{$clientTable}.Client_Name,{$table}.service_code,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,addDB_case,addDB_nonpayment,addDB_payment,addDB_accountStatus,addDB_ip,addDB_payment_date");
$this->getServiceService()->getModel()->join($clientTable, "{$table}.client_code = {$clientTable}.Client_Code");
$this->getServiceService()->getModel()->join($addDbTable, "{$table}.service_code = {$addDbTable}.service_code");
$this->getServiceService()->getModel()->whereNotIn("{$addDbTable}.client_code", $exclude_clients);
$this->getServiceService()->getModel()->whereNotIn("{$addDbTable}.addDB_accountStatus", ["complete"]);
$this->getServiceService()->getModel()->orderBy("service_payment_date", "DESC");
$this->mode = $params['mode'];
$this->total = $this->getServiceService()->getCount();
$this->entities = $this->getServiceService()->getEntities();
// $total = count($temps);
// $page = $parmas['page'] ?? 1;
// $perPage = $parmas['perPage'] ?? 10;
// $this->pagination = new Pagination($total, (int)$page, (int)$perPage);
// <div align='center'><?= $this->pagination->render("http://{$_SERVER['HTTP_HOST']}:6752/IdcDepositNonPaymentListMK.dep?mode=", ['mode' => "{$this->mode}", 'ea' => "{$this->total}"])></div>
return $this->render(path: __FUNCTION__);
}
} //Class

View File

@ -3,6 +3,7 @@
namespace lib\Database;
use PDO;
use PDOStatement;
class QueryBuilder
{
@ -36,9 +37,10 @@ class QueryBuilder
return $this;
}
protected function buildSelectSql(): string
protected function buildSelectSql(?string $select = null): string
{
$sql = "SELECT " . implode(', ', $this->select) . " FROM {$this->table}";
$select = $select ?? implode(', ', $this->select);
$sql = "SELECT {$select} FROM {$this->table}";
// ⬇️ Join 처리 추가
if (!empty($this->joins)) {
$sql .= ' ' . implode(' ', $this->joins);
@ -237,9 +239,9 @@ class QueryBuilder
//Result부분
//binding까지 완료한 SQL문을 return함
final public function toRawSql(): string
final public function toRawSql(?string $select = null): string
{
$raw = $this->buildSelectSql();
$raw = $this->buildSelectSql($select);
foreach ($this->bindings as $key => $value) {
$escaped = is_numeric($value) ? $value : $this->pdo->quote($value);
// 명명된 바인딩
@ -252,35 +254,38 @@ class QueryBuilder
}
return $raw;
}
final public function get(): array
private function execute(?string $select = null): PDOStatement
{
if ($this->_debug) {
echo php_sapi_name() === 'cli'
? "\nSQL DEBUG: " . $this->toRawSql() . "\n"
: "<pre>SQL DEBUG: " . $this->toRawSql() . "</pre>";
? "\nSQL DEBUG: " . $this->toRawSql($select) . "\n"
: "<pre>SQL DEBUG: " . $this->toRawSql($select) . "</pre>";
}
$this->latestQuery = $this->toRawSql();
$stmt = $this->pdo->prepare($this->buildSelectSql());
$stmt = $this->pdo->prepare($this->buildSelectSql($select));
foreach ($this->bindings as $key => $value) {
$stmt->bindValue($key, $value);
}
$stmt->execute();
return $stmt;
}
final public function get(): array
{
$stmt = $this->execute();
$this->where = [];
$this->bindings = [];
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
final public function first(): ?array
{
$this->limit = 1;
$results = $this->get();
return $results[0] ?? null;
}
final public function count(string $select = "COUNT(*) as cnt"): int
{
$this->select = [$select];
$results = $this->get();
$stmt = $this->execute($select);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
return (int)($results[0]['cnt'] ?? 0);
}

View File

@ -1,128 +1,13 @@
<?
// 기본 설정 로딩
require_once 'config.php';
require_once 'function.php';
require_once 'lib.php';
//HTML 시작
switch ($_GET[mode]) {
case "today":
//당일
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC";
$msg = "당일 미납리스트";
$checkall2 = "checked";
break;
case "1day":
//1일전
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC ";
$date = str_replace('-', '/', $date);
$date = date('Y-m-d', strtotime($date . "+1 days"));
$msg = "1일전 미납리스트($date)";
$checkall3 = "checked";
break;
case "2day":
//2일전
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 2 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC ";
$date = str_replace('-', '/', $date);
$date = date('Y-m-d', strtotime($date . "+2 days"));
$msg = "2일전 미납리스트($date)";
$checkall4 = "checked";
break;
case "3day":
//3일전
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 3 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC ";
$date = str_replace('-', '/', $date);
$date = date('Y-m-d', strtotime($date . "+3 days"));
$msg = "3일전 미납리스트($date)";
$checkall5 = "checked";
break;
case "custom":
//커스텀
//$count = "SELECT count(servicedb.server_code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC";
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC";
$msg = "커스텀 미납리스트($date)+1일";
$checkall6 = "checked";
break;
default:
//전체
$count = "SELECT count(clientdb.Client_Code) FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC ";
$msg = "전체 미납리스트";
$checkall1 = "checked";
break;
}
?>
<form method="get" action="#">
<input type="radio" name="mode" value="all" <?= $checkall1 ?>>전체
<input type="radio" name="mode" value="today" <?= $checkall2 ?>>당일
<input type="radio" name="mode" value="1day" <?= $checkall3 ?>>1일전
<input type="radio" name="mode" value="2day" <?= $checkall4 ?>>2일전
<input type="radio" name="mode" value="3day" <?= $checkall5 ?>>3일전
<!-- <input type="radio" name="mode" value="custom" <?= $checkall6 ?>>커스텀(수정중)<br>-->
<input type="hidden" name="ea" value="<?= $_GET[ea] ?>">
<input type="radio" name="mode" value="all" <?= $this->mode == "all" ? "checked" : "" ?>>전체
<input type="radio" name="mode" value="today" <?= $this->mode == "today" ? "checked" : "" ?>>당일
<input type="radio" name="mode" value="1day" <?= $this->mode == "1day" ? "checked" : "" ?>>1일전
<input type="radio" name="mode" value="2day" <?= $this->mode == "2day" ? "checked" : "" ?>>2일전
<input type="radio" name="mode" value="3day" <?= $this->mode == "3day" ? "checked" : "" ?>>3일전
<input type="submit" value="확인">
</form>
<?
$list_no = (!$_GET[ea]) ? '50' : $_GET[ea];
$total_num = mysql_fetch_array(mysql_query($count, $db_connect));
$total = $total_num[0];
if ($list_no > $total) {
$list_no = $total;
}
$total_page = ($total != '0') ? ceil($total / $list_no) : '0';
$page = $_GET[curPage];
if (!$page) {
$page = 1;
} elseif ($page >= $total_page) {
$page = $total_page;
} else {
$page = $page;
}
$next_page = ($page - '1') * $list_no;
$next_no = $next_page + $list_no;
switch ($_GET[mode]) {
case "today":
//당일
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
case "1day":
//1일전
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
case "2day":
//2일전
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 2 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
case "3day":
//3일전
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 3 DAY) ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
case "custom":
//커스텀
//$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = CURDATE() Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit ".$next_page.",".$next_no;
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') AND service_payment_date = Date_Add(curdate(),INTERVAL 1 DAY) Group By server_code ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
default:
//전체
$query = "SELECT clientdb.Client_Code,Client_Name,service_line,server_code,service_ip,service_payment_date,service_amount,service_nonpayment,service_note,adddb_case,adddb.client_code,adddb.service_code,adddb_nonpayment,adddb_payment,adddb_accountStatus,addDB_ip,addDB_payment_date FROM clientdb INNER JOIN servicedb ON clientdb.client_code = servicedb.client_code INNER JOIN adddb ON servicedb.service_code = adddb.service_code WHERE servicedb.service_code = adddb.service_code AND adddb.client_code not in ('C116','C219') AND adddb.adddb_accountStatus not in ('complete') ORDER BY service_payment_date,Client_Name,adddb_accountStatus ASC limit " . $next_page . "," . $next_no;
break;
}
$result = @mysql_query($query, $db_connect) or die($db_q_error);
?>
<!--미납 서버 대수 : <?= $total ?>-->
<?= $msg ?> <a class="btn btn-outline btn-default" href="IdcDepositNonPaymentListExcel.dep">엑셀</a>
<!--미납 서버 대수 : <?= $this->total ?>-->
<?= $this->message ?> 미납리스트 <a class="btn btn-outline btn-default" href="IdcDepositNonPaymentListExcel.dep">엑셀</a>
<div class="table-responsive" id="table">
<table class="table table-bordered table-hover table-striped">
<thead>
@ -140,39 +25,24 @@ $result = @mysql_query($query, $db_connect) or die($db_q_error);
</tr>
</thead>
<tbody>
<?
for ($i = $next_page; $i < $next_no; $i++) {
$data = mysql_fetch_assoc($result);
$num = ($total) - $i;
$reg_date = date("Y/m/d H:i", $data['reg_date']);
?>
<?php foreach ($this->entities as $entity) { ?>
<tr>
<!-- <td><input type="radio"></td>
<td><?= $data[Client_Code] ?></td>
-->
<td style="text-align:center;"><a href="/IdcDepositNonPaymentList.dep?searchContent=<?= $data[Client_Name] ?>"><?= $data[Client_Name] ?></a></td>
<td style="text-align:center;"><?= $data[adddb_case] ?></td>
<td style="text-align:center;"><?= $data[server_code] ?></td>
<td style="text-align:center;"><?= $data[service_ip] ?></td>
<!--<td><?= $data[service_code] ?></td>-->
<td style="text-align:center;"><a href="/IdcDepositNonPaymentList.dep?searchContent=<?= $entity->Client_Name ?>"><?= $entity->Client_Name ?></a></td>
<td style="text-align:center;"><?= $entity->addDB_case ?></td>
<td style="text-align:center;"><?= $entity->server_code ?></td>
<td style="text-align:center;"><?= $entity->service_ip ?></td>
<!--<td><?= $entity->service_code ?></td>-->
<td style="text-align:center;"><?= $data[service_payment_date] ?></td>
<td style="text-align:center;"><?= $data[service_amount] ?></td>
<!--<td><?= $data[adddb_payment] ?></td>-->
<td style="text-align:center;"><?= $data[adddb_accountStatus] ?></td>
<td style="text-align:center;"><?= $data[adddb_nonpayment] ?></td>
<!--<td><?= $data[adddb_accountStatus] ?></td>-->
<td style="text-align:center;"><?= $entity->service_payment_date ?></td>
<td style="text-align:center;"><?= $entity->service_amount ?></td>
<!--<td><?= $entity->addDB_payment ?></td>-->
<td style="text-align:center;"><?= $entity->addDB_accountStatus ?></td>
<td style="text-align:center;"><?= $entity->addDB_nonpayment ?></td>
<!--<td><?= $entity->addDB_accountStatus ?></td>-->
<!--<td></td>-->
<td><?= $data[service_note] ?></td>
<td><?= $entity->service_note ?></td>
</td>
</tr>
<? } ?>
<?php } ?>
</tbody>
<tfoot></tfoot>
</table>
<div align='center'>
<?= $this->pagination->render("http://{$_SERVER['HTTP_HOST']}:6752/IdcDepositNonPaymentListMK.dep?mode=", ['mode' => "{$this->mode}", 'ea' => "{$this->ea}"]) ?>
</div>
</table>