From 91cc99b2db175a06a5e67d236102d4283af83344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Wed, 26 Mar 2025 19:23:54 +0900 Subject: [PATCH] dbms_primeidc_init...1 --- .gitignore | 58 +---- extdbms/NonPaymentList.php | 209 +++++++++++++++ extdbms/README.md | 3 + extdbms/composer.json | 10 + extdbms/config.php | 3 + extdbms/corp_domain.php | 113 ++++++++ extdbms/coupon.php | 20 ++ extdbms/customer_memo.php | 32 +++ extdbms/customer_memo_up.php | 22 ++ extdbms/deepfinder_list.php | 7 + extdbms/default_alert.php | 240 +++++++++++++++++ extdbms/defense_index.php | 114 ++++++++ extdbms/defense_modify.php | 120 +++++++++ extdbms/defense_new.php | 120 +++++++++ extdbms/depositbillpaper.php | 11 + extdbms/domain_buy_list.php | 133 ++++++++++ extdbms/domain_coupon.php | 120 +++++++++ extdbms/domain_coupon.php.bak | 125 +++++++++ extdbms/domain_coupon_buy.php | 126 +++++++++ extdbms/domain_coupon_use.php | 122 +++++++++ extdbms/dotdefender_list.php | 7 + extdbms/footer.php | 55 ++++ extdbms/function.php | 225 ++++++++++++++++ extdbms/gear_ready.php | 118 +++++++++ extdbms/gear_ready_up.php | 24 ++ extdbms/header.php | 51 ++++ extdbms/index.html | 1 + extdbms/index.php | 16 ++ extdbms/ipsearch.php | 146 +++++++++++ extdbms/jarvis_email.mp3 | Bin 0 -> 21843 bytes extdbms/lib.php | 81 ++++++ extdbms/lib/Controllers/ClientController.php | 23 ++ extdbms/lib/Controllers/CommonController.php | 75 ++++++ extdbms/lib/Controllers/SiteController.php | 66 +++++ extdbms/lib/Core/Constants.php | 49 ++++ extdbms/lib/Core/Controller.php | 35 +++ extdbms/lib/Core/Entity.php | 30 +++ extdbms/lib/Core/Model.php | 182 +++++++++++++ extdbms/lib/Core/Service.php | 17 ++ extdbms/lib/Core/View.php | 40 +++ extdbms/lib/Entities/AddDbEntity.php | 13 + extdbms/lib/Entities/ClientEntity.php | 13 + extdbms/lib/Entities/CommonEntity.php | 11 + extdbms/lib/Entities/ServiceEntity.php | 13 + extdbms/lib/Models/AddDbModel.php | 39 +++ extdbms/lib/Models/ClientModel.php | 42 +++ extdbms/lib/Models/CommonModel.php | 13 + extdbms/lib/Models/ServiceModel.php | 42 +++ extdbms/lib/Services/CommonService.php | 13 + extdbms/lib/Services/ServiceService.php | 134 ++++++++++ extdbms/lib/View/dashboard.php | 101 ++++++++ extdbms/lib/View/depositbillpaper.php | 79 ++++++ extdbms/lib/View/extraservice.php | 34 +++ extdbms/lib/View/total_counting.php | 70 +++++ extdbms/lib/autoload.php | 7 + extdbms/member_memo.php | 207 +++++++++++++++ extdbms/member_memo_sent.php | 190 ++++++++++++++ extdbms/member_memo_up.php | 29 +++ extdbms/mk3.php | 245 ++++++++++++++++++ extdbms/mkwork.php | 109 ++++++++ extdbms/navigation_alert.php | 130 ++++++++++ extdbms/new_server_list.php | 94 +++++++ extdbms/officenet.php | 25 ++ extdbms/payment.php | 174 +++++++++++++ extdbms/server_use.php | 236 +++++++++++++++++ extdbms/server_use_g6.php | 192 ++++++++++++++ extdbms/service_list_coupon.php | 31 +++ extdbms/service_list_cs_count.php | 31 +++ extdbms/total_counting.php | 11 + extdbms/total_counting_customer.php | 146 +++++++++++ extdbms/working_history.php | 42 +++ extdbms/worksheetMK.php | 37 +++ idcproject/lib/activation.jar | Bin 0 -> 51643 bytes idcproject/lib/additionnal.jar | Bin 0 -> 46184 bytes idcproject/lib/commons-beanutils-1.8.3.jar | Bin 0 -> 232019 bytes idcproject/lib/commons-collections-3.2.jar | Bin 0 -> 571259 bytes idcproject/lib/commons-lang-2.6.jar | Bin 0 -> 284220 bytes idcproject/lib/commons-logging-1.1.1.jar | Bin 0 -> 60841 bytes idcproject/lib/cos.jar | Bin 0 -> 57115 bytes idcproject/lib/ezmorph-1.0.6.jar | Bin 0 -> 86487 bytes idcproject/lib/gson-2.2.2-javadoc.jar | Bin 0 -> 249401 bytes idcproject/lib/gson-2.2.2-sources.jar | Bin 0 -> 126470 bytes idcproject/lib/gson-2.2.2.jar | Bin 0 -> 189285 bytes idcproject/lib/javax.mail.jar | Bin 0 -> 440508 bytes .../lib/javax.servlet.jsp.jstl-1.2.1.jar | Bin 0 -> 407178 bytes .../lib/javax.servlet.jsp.jstl-api-1.2.1.jar | Bin 0 -> 32522 bytes idcproject/lib/json-lib-2.4-jdk15.jar | Bin 0 -> 159123 bytes .../lib/mysql-connector-java-5.1.33-bin.jar | Bin 0 -> 959987 bytes 88 files changed, 5451 insertions(+), 51 deletions(-) create mode 100644 extdbms/NonPaymentList.php create mode 100644 extdbms/README.md create mode 100644 extdbms/composer.json create mode 100644 extdbms/config.php create mode 100644 extdbms/corp_domain.php create mode 100644 extdbms/coupon.php create mode 100644 extdbms/customer_memo.php create mode 100644 extdbms/customer_memo_up.php create mode 100644 extdbms/deepfinder_list.php create mode 100644 extdbms/default_alert.php create mode 100644 extdbms/defense_index.php create mode 100644 extdbms/defense_modify.php create mode 100644 extdbms/defense_new.php create mode 100644 extdbms/depositbillpaper.php create mode 100644 extdbms/domain_buy_list.php create mode 100644 extdbms/domain_coupon.php create mode 100644 extdbms/domain_coupon.php.bak create mode 100644 extdbms/domain_coupon_buy.php create mode 100644 extdbms/domain_coupon_use.php create mode 100644 extdbms/dotdefender_list.php create mode 100644 extdbms/footer.php create mode 100644 extdbms/function.php create mode 100644 extdbms/gear_ready.php create mode 100644 extdbms/gear_ready_up.php create mode 100644 extdbms/header.php create mode 100644 extdbms/index.html create mode 100644 extdbms/index.php create mode 100644 extdbms/ipsearch.php create mode 100644 extdbms/jarvis_email.mp3 create mode 100644 extdbms/lib.php create mode 100644 extdbms/lib/Controllers/ClientController.php create mode 100644 extdbms/lib/Controllers/CommonController.php create mode 100644 extdbms/lib/Controllers/SiteController.php create mode 100644 extdbms/lib/Core/Constants.php create mode 100644 extdbms/lib/Core/Controller.php create mode 100644 extdbms/lib/Core/Entity.php create mode 100644 extdbms/lib/Core/Model.php create mode 100644 extdbms/lib/Core/Service.php create mode 100644 extdbms/lib/Core/View.php create mode 100644 extdbms/lib/Entities/AddDbEntity.php create mode 100644 extdbms/lib/Entities/ClientEntity.php create mode 100644 extdbms/lib/Entities/CommonEntity.php create mode 100644 extdbms/lib/Entities/ServiceEntity.php create mode 100644 extdbms/lib/Models/AddDbModel.php create mode 100644 extdbms/lib/Models/ClientModel.php create mode 100644 extdbms/lib/Models/CommonModel.php create mode 100644 extdbms/lib/Models/ServiceModel.php create mode 100644 extdbms/lib/Services/CommonService.php create mode 100644 extdbms/lib/Services/ServiceService.php create mode 100644 extdbms/lib/View/dashboard.php create mode 100644 extdbms/lib/View/depositbillpaper.php create mode 100644 extdbms/lib/View/extraservice.php create mode 100644 extdbms/lib/View/total_counting.php create mode 100644 extdbms/lib/autoload.php create mode 100644 extdbms/member_memo.php create mode 100644 extdbms/member_memo_sent.php create mode 100644 extdbms/member_memo_up.php create mode 100644 extdbms/mk3.php create mode 100644 extdbms/mkwork.php create mode 100644 extdbms/navigation_alert.php create mode 100644 extdbms/new_server_list.php create mode 100644 extdbms/officenet.php create mode 100644 extdbms/payment.php create mode 100644 extdbms/server_use.php create mode 100644 extdbms/server_use_g6.php create mode 100644 extdbms/service_list_coupon.php create mode 100644 extdbms/service_list_cs_count.php create mode 100644 extdbms/total_counting.php create mode 100644 extdbms/total_counting_customer.php create mode 100644 extdbms/working_history.php create mode 100644 extdbms/worksheetMK.php create mode 100644 idcproject/lib/activation.jar create mode 100644 idcproject/lib/additionnal.jar create mode 100644 idcproject/lib/commons-beanutils-1.8.3.jar create mode 100644 idcproject/lib/commons-collections-3.2.jar create mode 100644 idcproject/lib/commons-lang-2.6.jar create mode 100644 idcproject/lib/commons-logging-1.1.1.jar create mode 100644 idcproject/lib/cos.jar create mode 100644 idcproject/lib/ezmorph-1.0.6.jar create mode 100644 idcproject/lib/gson-2.2.2-javadoc.jar create mode 100644 idcproject/lib/gson-2.2.2-sources.jar create mode 100644 idcproject/lib/gson-2.2.2.jar create mode 100644 idcproject/lib/javax.mail.jar create mode 100644 idcproject/lib/javax.servlet.jsp.jstl-1.2.1.jar create mode 100644 idcproject/lib/javax.servlet.jsp.jstl-api-1.2.1.jar create mode 100644 idcproject/lib/json-lib-2.4-jdk15.jar create mode 100644 idcproject/lib/mysql-connector-java-5.1.33-bin.jar diff --git a/.gitignore b/.gitignore index 49f00a3..7a0ea96 100644 --- a/.gitignore +++ b/.gitignore @@ -1,63 +1,19 @@ # ---> Java # Compiled class file -*.class +/classes/*.class # Log file *.log -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* - -#Tomcat Ignore -logs -nbproject -output -# Next line commented out, because test/webapp-virtual-library and -# test/webapp-virtual-webapp use it: -# target -work build.properties mvn.properties -.ant-targets-build.xml -.checkstyle .classpath -.externalToolBuilders -.fbprefs -.idea -.pmd .project -.sdkmanrc .settings .vscode -*.asc -*.iml -*.ipr -*.iws -*.jj -*.tmp -maven-resolver-ant-tasks-*.jar -thumbs.db -Thumbs.db -bin/setenv.* -java/org/apache/catalina/startup/catalina.properties -modules/jdbc-pool/bin -modules/jdbc-pool/includes -modules/openssl-java17/target -modules/openssl-foreign/target -webapps/docs/jdbc-pool.xml + +# ---> PHP +vendor +composer.lock +.env +test.php \ No newline at end of file diff --git a/extdbms/NonPaymentList.php b/extdbms/NonPaymentList.php new file mode 100644 index 0000000..c036e12 --- /dev/null +++ b/extdbms/NonPaymentList.php @@ -0,0 +1,209 @@ + + +
+ >전체 + >당일 + >1일전 + >2일전 + >3일전 + + + +
+ $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); +?> + + 엑셀 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
고객명종류장비명IP결제일서비스 가격과금상태미납과금비고
+
+ 0) { + + $p_start = (($n_page - 1) * $page_scale)+'1'; + $link = ""; + $link .= "<<"; + $link .= ""; + echo $link . " "; +} +$is = ($n_page * $page_scale)+'1'; +for ($i = $is; $i < $is + $page_scale; $i++) { + + if ($i < $total_page+'1') { + if ($i == $page) {$ib = "$i";} else { $ib = $i;} + $link = ""; + $link .= $ib; + $link .= ""; + echo $link . " "; + } +} +if ($n_page < $page3) { + $link = ""; + $link .= ">>"; + $link .= ""; + echo $link; +} +?> +
+ + + + + diff --git a/extdbms/README.md b/extdbms/README.md new file mode 100644 index 0000000..bd3dc44 --- /dev/null +++ b/extdbms/README.md @@ -0,0 +1,3 @@ +# EXTDBMS + +DBMS용 PHP 소스 \ No newline at end of file diff --git a/extdbms/composer.json b/extdbms/composer.json new file mode 100644 index 0000000..9c8152c --- /dev/null +++ b/extdbms/composer.json @@ -0,0 +1,10 @@ +{ + "require": { + "vlucas/phpdotenv": "^5.6" + }, + "autoload": { + "psr-4": { + "lib\\": "lib/" + } + } +} diff --git a/extdbms/config.php b/extdbms/config.php new file mode 100644 index 0000000..5792480 --- /dev/null +++ b/extdbms/config.php @@ -0,0 +1,3 @@ + + + + + + + +
+ / + +
+ + +
  • + - >수정 +
  • + + + + + + + + diff --git a/extdbms/coupon.php b/extdbms/coupon.php new file mode 100644 index 0000000..49e119b --- /dev/null +++ b/extdbms/coupon.php @@ -0,0 +1,20 @@ +execute($lines, $client_field); +echo "Coupon 설정이 완료되었습니다.\n"; diff --git a/extdbms/customer_memo.php b/extdbms/customer_memo.php new file mode 100644 index 0000000..3e233e6 --- /dev/null +++ b/extdbms/customer_memo.php @@ -0,0 +1,32 @@ + + +
    + + + + + + + +
    비    고
    +
    + diff --git a/extdbms/customer_memo_up.php b/extdbms/customer_memo_up.php new file mode 100644 index 0000000..e895443 --- /dev/null +++ b/extdbms/customer_memo_up.php @@ -0,0 +1,22 @@ + + +:6752/serviceDetail.sev?client_code='" /> + diff --git a/extdbms/deepfinder_list.php b/extdbms/deepfinder_list.php new file mode 100644 index 0000000..2780bb5 --- /dev/null +++ b/extdbms/deepfinder_list.php @@ -0,0 +1,7 @@ +execute("딥파인더"); diff --git a/extdbms/default_alert.php b/extdbms/default_alert.php new file mode 100644 index 0000000..1f948be --- /dev/null +++ b/extdbms/default_alert.php @@ -0,0 +1,240 @@ + + +
    + +
    + + + +" +//if (isset($_SERVER['HTTP_REFERER']) && preg_match('@^[^/]+://[^/]+@', $_SERVER['HTTP_REFERER'], $match)) {} +// var_dump($match[0]); + +?> + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    새 쪽지 알림
    +
    +
    +
    + + + +
    +
    + + DATE_ADD(now(), INTERVAL -7 DAY) and service_status = 'o' and service_line not in ('test','substitution')"; +$day7_server = mysql_num_rows(mysql_query($day7_server_query, $db_connect)); +?> + +
    +
    +
    +
    +
    + +
    +
    +
    +
    최근 7일간 신규서버 대수
    +
    +
    +
    + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    +
    0
    +
    요청업무 알림
    +
    +
    +
    + + + +
    +
    + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    금일 기준 미납 서버
    +
    +
    +
    + + + +
    +
    +
    + + + + + + + + + + +
    + + + + +
    + + diff --git a/extdbms/defense_index.php b/extdbms/defense_index.php new file mode 100644 index 0000000..c37a47c --- /dev/null +++ b/extdbms/defense_index.php @@ -0,0 +1,114 @@ + + + + + + + +
    + / + +
    + + +
  • + - >수정 +
  • + + + + + + + + + diff --git a/extdbms/defense_modify.php b/extdbms/defense_modify.php new file mode 100644 index 0000000..1c4e52c --- /dev/null +++ b/extdbms/defense_modify.php @@ -0,0 +1,120 @@ + + + + + + + + + * - - &parents=>등록
    + + + + - >수정
    + + + + + + + + + + + + +MODIFY + + + + \ No newline at end of file diff --git a/extdbms/defense_new.php b/extdbms/defense_new.php new file mode 100644 index 0000000..98463be --- /dev/null +++ b/extdbms/defense_new.php @@ -0,0 +1,120 @@ + + + + + + + + + * - - &parents=>등록
    + + + + - >수정
    + + + + + + + + + + + + +NEW + + + + \ No newline at end of file diff --git a/extdbms/depositbillpaper.php b/extdbms/depositbillpaper.php new file mode 100644 index 0000000..98489fa --- /dev/null +++ b/extdbms/depositbillpaper.php @@ -0,0 +1,11 @@ +getBillingPaper($_GET); +} catch (\Exception $e) { + die($e->getMessage()); +} diff --git a/extdbms/domain_buy_list.php b/extdbms/domain_buy_list.php new file mode 100644 index 0000000..b273ad7 --- /dev/null +++ b/extdbms/domain_buy_list.php @@ -0,0 +1,133 @@ + $total) {$list_no = $total;} +$total_page = ($total != '0') ? ceil($total / $list_no) : '0'; + +$page = $_GET[page]; + +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; + +$result = @mysql_query($query, $db_connect) or die($db_q_error); +?> +
    +2015년 전체구매건수 : +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    고객명서비스코드수량결제금액미납금액신청일비 고담당자
    +
    + + diff --git a/extdbms/domain_coupon.php b/extdbms/domain_coupon.php new file mode 100644 index 0000000..9a25f8e --- /dev/null +++ b/extdbms/domain_coupon.php @@ -0,0 +1,120 @@ + + + $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; + +$query = "select servicedb.service_code, servicedb.client_code,servicedb.service_line,servicedb.server_code,servicedb.service_ip,servicedb.service_open_date,servicedb.coupon,servicedb.coupon_use,clientdb.client_code,clientdb.client_name From servicedb Natural Join clientdb where servicedb.service_line NOT IN ( 'vpn', 'test','soloLine','substitution' ) and Client_Code not in ('C219','C116','C012','C497','C464','C526') and service_ip not like '27.125.204%' order by clientdb.client_name,service_open_date asc limit " . $next_page . "," . $next_no; + +//$query="select servicedb.service_code, servicedb.client_code,servicedb.service_line,servicedb.server_code,servicedb.service_ip,servicedb.service_open_date,servicedb.coupon,clientdb.client_code,clientdb.client_name From servicedb Natural Join clientdb where servicedb.service_line NOT IN ( 'vpn', 'test','soloLine','substitution' ) and Client_Code not in ('C219','C116','C012') order by service_code asc"; + +$coupon_data = @mysql_query($query, $db_connect) or die($db_q_error); +$total_coupon = mysql_query("select sum(coupon),sum(coupon_use) from servicedb", $db_connect) or die($db_q_error); +$total_coupon = mysql_fetch_assoc($total_coupon); +?> +
    전체 남은 수량 : / 전체 사용 수량 :

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No발급쿠폰남은수량사용완료고객명서비스코드장비명서버IP서비스개시일회선종류
    5"; } else { echo "3";}?>
    +
    + +
    + 0) { + + $p_start = (($n_page - 1) * $page_scale)+'1'; + $link = ""; + $link .= "<<"; + $link .= ""; + echo $link . " "; +} +$is = ($n_page * $page_scale)+'1'; +for ($i = $is; $i < $is + $page_scale; $i++) { + + if ($i < $total_page+'1') { + if ($i == $page) {$ib = "$i";} else { $ib = $i;} + $link = ""; + $link .= $ib; + $link .= ""; + echo $link . " "; + } +} +if ($n_page < $page3) { + $link = ""; + $link .= ">>"; + $link .= ""; + echo $link; +} + +?> +
    + diff --git a/extdbms/domain_coupon.php.bak b/extdbms/domain_coupon.php.bak new file mode 100644 index 0000000..85a2de0 --- /dev/null +++ b/extdbms/domain_coupon.php.bak @@ -0,0 +1,125 @@ + + +$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; + +$query="select servicedb.service_code, servicedb.client_code,servicedb.service_line,servicedb.server_code,servicedb.service_ip,servicedb.service_open_date,servicedb.coupon,servicedb.coupon_use,clientdb.client_code,clientdb.client_name From servicedb Natural Join clientdb where servicedb.service_line NOT IN ( 'vpn', 'test','soloLine','substitution' ) and Client_Code not in ('C219','C116','C012','C497','C464','C526') and service_ip not like '27.125.204%' order by clientdb.client_name,service_open_date asc limit ".$next_page.",".$next_no; + +//$query="select servicedb.service_code, servicedb.client_code,servicedb.service_line,servicedb.server_code,servicedb.service_ip,servicedb.service_open_date,servicedb.coupon,clientdb.client_code,clientdb.client_name From servicedb Natural Join clientdb where servicedb.service_line NOT IN ( 'vpn', 'test','soloLine','substitution' ) and Client_Code not in ('C219','C116','C012') order by service_code asc"; + + +$coupon_data = @mysql_query($query , $db_connect) or die($db_q_error); +$total_coupon=mysql_query("select sum(coupon),sum(coupon_use) from servicedb" , $db_connect) or die($db_q_error); +$total_coupon=mysql_fetch_assoc($total_coupon); +?> +
    전체 남은 수량 : / 전체 사용 수량 :

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No발급쿠폰남은수량사용완료고객명서비스코드장비명서버IP서비스개시일회선종류
    5"; } else { echo "3";}?>
    +
    + +
    + 0){ + + $p_start = (($n_page-1)*$page_scale)+'1'; + $link = ""; + $link .= "<<"; + $link .= ""; + echo $link." "; +} +$is = ($n_page*$page_scale)+'1'; +for($i=$is; $i < $is+$page_scale; $i++){ + + + if($i < $total_page+'1'){ + if($i==$page){$ib="$i";}else{$ib=$i;} + $link = ""; + $link .= $ib; + $link .= ""; + echo $link." "; + } +} +if($n_page < $page3){ + $link = ""; + $link .= ">>"; + $link .= ""; + echo $link; +} + +?> +
    + diff --git a/extdbms/domain_coupon_buy.php b/extdbms/domain_coupon_buy.php new file mode 100644 index 0000000..3094457 --- /dev/null +++ b/extdbms/domain_coupon_buy.php @@ -0,0 +1,126 @@ +"; + //echo $onetime_query; + //echo "
    "; + //echo $history_query; + +//echo $_GET[client_code].$_GET[service_code].$_GET[client_name].$_GET[server_code].$_GET[coupon].$_GET[mkworker].$_GET[mkid]; + echo " + +"; +} else { + //$sql = sprintf("select * from servicedb where service_code='%s'", $_GET['service_code']); + //$stmt = @mysql_query($sql, $db_connect) or die($db_q_error); + //$service = mysql_fetch_assoc($stmt); +?> +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    고객코드
    서비스코드
    고객명
    장비번호
    + + 도메인 구매 수량 + + (개별 서버에 할당된 남은 쿠폰 수량 : ) + +
    서비스 금액 + 도메인 쿠폰 사용 + + +
    도메인 신청일 + + 쿠폰 사용일 + +
    도메인 리스트 +
    (공백을 허용하지 않습니다. 예제처럼 붙여쓰기 하세요 / 예제 : test.com/123.com/idcjp.jp) +
    + + +
    +
    +
    + + diff --git a/extdbms/domain_coupon_use.php b/extdbms/domain_coupon_use.php new file mode 100644 index 0000000..b89de3d --- /dev/null +++ b/extdbms/domain_coupon_use.php @@ -0,0 +1,122 @@ + + + $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; + +$query = "select servicedb.service_code, servicedb.client_code,servicedb.service_line,servicedb.server_code,servicedb.service_ip,servicedb.service_open_date,coupon,coupon_use,clientdb.client_code,clientdb.client_name From servicedb Natural Join clientdb where servicedb.service_line NOT IN ( 'vpn', 'test','soloLine','substitution' ) and servicedb.client_code = '$client_code' and service_ip not like '27.125.204%' order by service_open_date asc limit " . $next_page . "," . $next_no; +$coupon_data = @mysql_query($query, $db_connect) or die($db_q_error); +?> +

    고객명 : / 쿠폰발급대상 : 대 / 전체 남은 수량 :

    +
    + + + + + + + + + + + + + + + + + + +";} else { $coupon_color = "";} + ?> + + + + + + + + + + + + + + + + + +
    No발급쿠폰남은수량사용완료서비스코드장비명서버IP서비스개시일회선종류사용
    &client_name=&client_code=&server_code=&coupon=&mode=&mkworker=&mkid=>사용하기
    +
    + +
    + 0) { + + $p_start = (($n_page - 1) * $page_scale)+'1'; + $link = ""; + $link .= "<<"; + $link .= ""; + echo $link . " "; +} +$is = ($n_page * $page_scale)+'1'; +for ($i = $is; $i < $is + $page_scale; $i++) { + + if ($i < $total_page+'1') { + if ($i == $page) {$ib = "$i";} else { $ib = $i;} + $link = ""; + $link .= $ib; + $link .= ""; + echo $link . " "; + } +} +if ($n_page < $page3) { + $link = ""; + $link .= ">>"; + $link .= ""; + echo $link; +} + +?> +
    + diff --git a/extdbms/dotdefender_list.php b/extdbms/dotdefender_list.php new file mode 100644 index 0000000..0068fad --- /dev/null +++ b/extdbms/dotdefender_list.php @@ -0,0 +1,7 @@ +execute("닷 디펜더"); diff --git a/extdbms/footer.php b/extdbms/footer.php new file mode 100644 index 0000000..5edb20d --- /dev/null +++ b/extdbms/footer.php @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + diff --git a/extdbms/function.php b/extdbms/function.php new file mode 100644 index 0000000..34a4a17 --- /dev/null +++ b/extdbms/function.php @@ -0,0 +1,225 @@ += $s_len) {$cnt = ($s_len - $i) % 4; + break;} else { + $i += 3; + } + + } else if (($oc & 0xF0) == 0xE0) // 3byte + { + if ($i + 3 >= $s_len) {$cnt = ($s_len - $i) % 3; + break;} else { + $i += 2; + } + + } else if (($oc & 0xE0) == 0xC0) // 2byte + { + if ($i + 2 >= $s_len) {$cnt = ($s_len - $i) % 2; + break;} else { + $i++; + } + + } else // 1byte + { + $cnt = 0; + } + + } + if ($cnt) { + $s = substr($s, 0, $s_len - $cnt); + } + + if (strlen($s) >= strlen($str)) { + $suffix = ""; + } + + return $s . $suffix; +} + +//문자열 처리 trim,htmlspecialchars,addslashes +function mk_trim() +{ + $nums = func_num_args(); + $row = func_get_args(); + for ($i = 0; $i < $nums; $i++) { + $row[$i] = addslashes($row[$i]); + $row[$i] = htmlspecialchars($row[$i]); + $row[$i] = trim($row[$i]); + return $row[$i]; + } +} + +//DB 테이블 생성 확인 +function exist_table($table_name) +{ + $result = mysql_query("show tables like '" . $table_name . "'"); + $row = mysql_fetch_array($result, MYSQL_NUM); + if ($row == false) { + return false; + } + + return true; +} + +// 실행시간 체크 +function getmicrotime() +{ + list($usec, $sec) = explode(' ', microtime()); + return ((float) $usec + (float) $sec); +} + +//패스워드 암호화 +function sha_256($user_passwd) +{ + $return = hash('sha256', $user_passwd); + return $return; +} + +//get response +function get_response($host, $request) +{ + $fp = fsockopen($host, 80); + if (!$fp) {flush(); + } else { + fputs($fp, $request); + flush(); + $response = ""; + while (!feof($fp)) {$response .= fgets($fp, 1024);} + } + fclose($fp); + return $response; +} + +//용량계산 +function size($size) +{ + $unit = array(" Byte", " KB", " MB", " GB"); + if (!$size) { + return "0" . $unit[0]; + } + + if ($size < 1024) // 바이트 + { + return $size . $unit[0]; + } + + if ($size > 1024 && $size < 1024 * 1024) // 킬로바이트 + { + return sprintf("%0.1f " . $unit[1], $size / 1024); + } + + if ($size > 1024 * 1024 && $size < 1024 * 1024 * 1024) // 메가바이트 + { + return sprintf("%0.1f " . $unit[2], $size / (1024 * 1024)); + } + + if ($size > 1024 * 1024 * 1000 && $size < 1024 * 1024 * 1024 * 1024) // 기가바이트 + { + return sprintf("%0.1f " . $unit[3], $size / (1024 * 1024 * 1000)); + } + +} + +//프록시 서버 체크-실제 아이피 가져오기 +function use_ip() +{ + $reverse = 0; + $e = 0; + $hostip = getenv("HTTP_X_FORWARDED_FOR"); + $hostip = $hostip ? $hostip : getenv("REMOTE_ADDR"); + $check = $reverse ? @gethostbyaddr($hostip) : ""; + $hostip = $check ? $check : $hostip; + $gateway_ip = getenv("REMOTE_ADDR"); + return $hostip; +} + +//GMT 시간 표시 +function GMT($time_zone) +{ + switch ($time_zone) { + case 'Kwajalein':$gmt = "-12"; + break; + case 'Pacific/Midway':$gmt = "-11"; + break; + case 'Pacific/Honolulu':$gmt = "-10"; + break; + case 'America/Anchorage':$gmt = "-9"; + break; + case 'America/Los_Angeles':$gmt = "-8"; + break; + case 'America/Denver':$gmt = "-7"; + break; + case 'America/Tegucigalpa':$gmt = "-6"; + break; + case 'America/New_York':$gmt = "-5"; + break; + case 'America/Caracas':$gmt = "-4.30"; + break; + case 'America/Halifax':$gmt = "-4"; + break; + case 'America/St_Johns':$gmt = "-3.30"; + break; + case 'America/Argentina/Buenos_Aires':$gmt = "-3"; + break; + case 'America/Sao_Paulo':$gmt = "-3"; + break; + case 'Atlantic/South_Georgia':$gmt = "-2"; + break; + case 'Atlantic/Azores':$gmt = "-1"; + break; + case 'Europe/Dublin':$gmt = "0"; + break; + case 'Europe/Belgrade':$gmt = "+1"; + break; + case 'Europe/Minsk':$gmt = "+2"; + break; + case 'Asia/Kuwait':$gmt = "+3"; + break; + case 'Asia/Tehran':$gmt = "+3.30"; + break; + case 'Asia/Muscat':$gmt = "+4"; + break; + case 'Asia/Yekaterinburg':$gmt = "+5"; + break; + case 'Asia/Kolkata':$gmt = "+5.30"; + break; + case 'Asia/Katmandu':$gmt = "+5.45"; + break; + case 'Asia/Dhaka':$gmt = "+6"; + break; + case 'Asia/Rangoon':$gmt = "+6.30"; + break; + case 'Asia/Krasnoyarsk':$gmt = "+7"; + break; + case 'Asia/Brunei':$gmt = "+8"; + break; + case 'Asia/Seoul':$gmt = "+9"; + break; + case 'Australia/Darwin':$gmt = "+9.30"; + break; + case 'Australia/Canberra':$gmt = "+10"; + break; + case 'Asia/Magadan':$gmt = "+11"; + break; + case 'Pacific/Fiji':$gmt = "+12"; + break; + case 'Pacific/Tongatapu':$gmt = "+13"; + break; + } + return $gmt; +} diff --git a/extdbms/gear_ready.php b/extdbms/gear_ready.php new file mode 100644 index 0000000..994a29c --- /dev/null +++ b/extdbms/gear_ready.php @@ -0,0 +1,118 @@ + + + +[ 돌아가기 ] + + + + + + + + + + + + + + + +
    CPUHDDOS수량
    +
    +장비번호 : + +OS : +작업자 : + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    가용장비번호CPURAMHDDBRAND포맷보류recieverelease비고DISUSE현재이전READYREADYREADY
    + + + + + +
    + + + diff --git a/extdbms/gear_ready_up.php b/extdbms/gear_ready_up.php new file mode 100644 index 0000000..8c0efe0 --- /dev/null +++ b/extdbms/gear_ready_up.php @@ -0,0 +1,24 @@ + + + + diff --git a/extdbms/header.php b/extdbms/header.php new file mode 100644 index 0000000..3f6658a --- /dev/null +++ b/extdbms/header.php @@ -0,0 +1,51 @@ + + + + + +<?=$site_title?> + + + + + + + + +/style.css' type='text/css' /> + + + + + diff --git a/extdbms/index.html b/extdbms/index.html new file mode 100644 index 0000000..699efb7 --- /dev/null +++ b/extdbms/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extdbms/index.php b/extdbms/index.php new file mode 100644 index 0000000..ff99753 --- /dev/null +++ b/extdbms/index.php @@ -0,0 +1,16 @@ +load(); + $control = new SiteController(); + return $control->dashboard(); +} catch (\Exception $e) { + echo $e->getMessage(); +} diff --git a/extdbms/ipsearch.php b/extdbms/ipsearch.php new file mode 100644 index 0000000..b774d99 --- /dev/null +++ b/extdbms/ipsearch.php @@ -0,0 +1,146 @@ + + + +
    +[ 돌아가기 ] + +
    +IP 입력 : + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CODENAMESERVERIPSWNOTETELMAIL
    + + + diff --git a/extdbms/jarvis_email.mp3 b/extdbms/jarvis_email.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2b2fa6305549f23ae63b7f59e74c83d085bcbfee GIT binary patch literal 21843 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 literal 0 HcmV?d00001 diff --git a/extdbms/lib.php b/extdbms/lib.php new file mode 100644 index 0000000..fae4a87 --- /dev/null +++ b/extdbms/lib.php @@ -0,0 +1,81 @@ +view->siteinfo = $this->getSiteInfo(); + $this->getClientModel()->where(["Client_Code" => $datas['client_code']]); + $entity = $this->getClientModel()->getEntity(); + if (!$entity) { + throw new \Exception($datas['client_code'] . "에 해당하는 고객이 존재하지 않습니다."); + } + $this->view->client = $entity; + return $this->render('depositbillpaper'); + } +} diff --git a/extdbms/lib/Controllers/CommonController.php b/extdbms/lib/Controllers/CommonController.php new file mode 100644 index 0000000..77757b8 --- /dev/null +++ b/extdbms/lib/Controllers/CommonController.php @@ -0,0 +1,75 @@ +_clientModel === null) { + $this->_clientModel = new ClientModel(); + } + return $this->_clientModel; + } + final protected function getServiceModel(): ServiceModel + { + if ($this->_serviceModel === null) { + $this->_serviceModel = new ServiceModel(); + } + return $this->_serviceModel; + } + + final public function getSiteInfo(): array + { + $domain = array_key_exists("HTTP_HOST", $_SERVER) ? $_SERVER["HTTP_HOST"] : false; + switch ($domain) { + case 'dbms.prime-idc.jp': + $datas = [ + "id" => "PRIMEIDC", + "domain" => "dbms.prime-idc.jp", + "name" => "PrimeIDC", + "email" => "primeidc.jp@gmail.com", + "banks" => [ + ["id" => "331301-04-217387", "name" => '국민은행', "owner" => "주)듀나미스"] + ], + ]; + break; + case "dbms.itsolution-idc.jp": + $datas = [ + "id" => "ITSOLUTION", + "domain" => "dbms.itsolution-idc.jp", + "name" => "Itsolution", + "email" => "support@itsoution-idc.jp", + "banks" => [ + ["id" => "9002-1932-1654-1", "name" => '새마을금고', "owner" => "주식회사 르호봇"], + ["id" => "351-0995-6751-73", "name" => '농협', "owner" => "주식회사 르호봇"], + ], + ]; + break; + case 'dbms.gdidc.jp': + $datas = [ + "id" => "GDIDC", + "domain" => "dbms.gdidc.jp", + "name" => "GDIDC", + "email" => "support@gdidc.jp", + "banks" => [ + ["id" => "1005-204-100758", "name" => '우리은행', "owner" => " (주)브엘라해로이"], + ], + ]; + break; + default: + $datas = []; + break; + } + return $datas; + } +} //Class diff --git a/extdbms/lib/Controllers/SiteController.php b/extdbms/lib/Controllers/SiteController.php new file mode 100644 index 0000000..30aa6ed --- /dev/null +++ b/extdbms/lib/Controllers/SiteController.php @@ -0,0 +1,66 @@ +_service === null) { + $this->_service = new ServiceService(); + } + return $this->_service; + } + + public function dashboard() + { + // 최근7일 신규서버수 + //예외,service_line = "test","substitution" + $excepts = ["test", "substitution"]; + $this->day = intval(getenv("SITE_DASHBOARD_DAY") ?? 7); + $this->newServers = $this->getService()->getNewServerCount($this->day, $excepts); + // 금일기준 미납서버수 + //예외,service_line = "test","substitution",C012:게임윙,C116:WinIDC,C219:IDC-JP + $excepts = ["test", "substitution", 'C116', 'C012', 'C219']; + $this->unPayments = $this->getService()->getUnPaymentCount($excepts); + return $this->render(__FUNCTION__); + } + + //서비스카운팅 , total_counting.php + public function totalcount(string $sitekey): string + { + $this->siteInfo = DBMS_SITEINFOS[$sitekey]; + $this->totalcount = $this->getService()->getTotalCount($this->siteInfo); + // echo $sitekey; + // dd($this->siteInfo); + $summary = array(); + foreach ($this->siteInfo['totalcount_types'] as $type) { + $summary[$type] = array("Tokyo" => 0, "Chiba" => 0); + } + foreach ($this->totalcount as $company => $service) { + $summary[$company] = array("Tokyo" => 0, "Chiba" => 0); + foreach ($service as $name => $location) { + $summary[$company]['Tokyo'] += $location['Tokyo']; + $summary[$name]['Tokyo'] += $location['Tokyo']; + $summary[$company]['Chiba'] += $location['Chiba']; + $summary[$name]['Chiba'] += $location['Chiba']; + } + } + $total = array("Tokyo" => 0, "Chiba" => 0); + foreach ($this->siteInfo['totalcount_types'] as $type) { + $total['Tokyo'] += $summary[$type]['Tokyo']; + $total['Chiba'] += $summary[$type]['Chiba']; + } + $this->summary = $summary; + $this->total = $total; + return $this->render(__FUNCTION__); + } +} //Class diff --git a/extdbms/lib/Core/Constants.php b/extdbms/lib/Core/Constants.php new file mode 100644 index 0000000..e07f751 --- /dev/null +++ b/extdbms/lib/Core/Constants.php @@ -0,0 +1,49 @@ + [ + "id" => "PRIMEIDC", + "domain" => "dbms.prime-idc.jp", + "name" => "PrimeIDC", + "email" => "primeidc.jp@gmail.com", + "totalcount_types" => ["normal", "defence", "solo", "substitution", "test"], + "totalcount_customers" => [ + "idcjp" => "Client_Code NOT IN ('C116','C012','C636')", + "winidc" => "Client_Code='C116'", + "gamewing" => "Client_Code='C012'", + "GDIDC" => "Client_Code='C636'", + ], + "banks" => [ + ["id" => "331301-04-217387", "name" => '국민은행', "owner" => "주)듀나미스"] + ] + ], + 'dbms.itsolution-idc.jp' => [ + "id" => "ITSOLUTION", + "domain" => "dbms.itsolution-idc.jp", + "name" => "Itsolution", + "email" => "support@itsoution-idc.jp", + "totalcount_types" => ["normal", "defence", "solo", "substitution", "test"], + "totalcount_customers" => [ + "winidc" => "Client_Code NOT IN ('C237')", + "bosch" => "Client_Code='C237'", + ], + "banks" => [ + ["id" => "9002-1932-1654-1", "name" => '새마을금고', "owner" => "주식회사 르호봇"], + ["id" => "351-0995-6751-73", "name" => '농협', "owner" => "주식회사 르호봇"], + ], + ], + 'dbms.gdidc.jp' => [ + "id" => "GDIDC", + "domain" => "dbms.gdidc.jp", + "name" => "GDIDC", + "email" => "support@gdidc.jp", + "totalcount_types" => ["normal", "defence", "solo", "substitution", "test"], + "totalcount_customers" => [ + "gdidc" => "", + ], + "banks" => [ + ["id" => "1005-204-100758", "name" => '우리은행', "owner" => " (주)브엘라해로이"], + ], + ] +]); diff --git a/extdbms/lib/Core/Controller.php b/extdbms/lib/Core/Controller.php new file mode 100644 index 0000000..658d487 --- /dev/null +++ b/extdbms/lib/Core/Controller.php @@ -0,0 +1,35 @@ +view = new View(); + } // + final public function setDebug($debug) + { + $this->_debug = $debug; + } + final public function getDebug() + { + return $this->_debug; + } + final public function __get($name) + { + return $this->view->$name; + } + final public function __set($name, $value) + { + $this->view->$name = $value; + } + public function render($file) + { + return $this->view->render($file); + } +} //Class diff --git a/extdbms/lib/Core/Entity.php b/extdbms/lib/Core/Entity.php new file mode 100644 index 0000000..39bfc3a --- /dev/null +++ b/extdbms/lib/Core/Entity.php @@ -0,0 +1,30 @@ +values = $datas; + } // + final public function setDebug($debug) + { + $this->_debug = $debug; + } + final public function getDebug() + { + return $this->_debug; + } + + final public function __get($name) + { + return $this->_values[$name]; + } + final public function __set($name, $value) + { + $this->_values[$name] = $value; + } +} //Class diff --git a/extdbms/lib/Core/Model.php b/extdbms/lib/Core/Model.php new file mode 100644 index 0000000..a6f0d5a --- /dev/null +++ b/extdbms/lib/Core/Model.php @@ -0,0 +1,182 @@ + "SELECT *", "JOIN" => "", "ORDERBY" => "", "LIMIT" => ""]; + private $_wheres = []; + private $_lastQuery = ""; + protected function __construct() {} // + + abstract public function getTable(): string; + abstract public function getPKField(): string; + abstract public function getTitleField(): string; + abstract public function getEntity(): Entity; + abstract public function getEntitys(): mixed; + final public function getConnect(): PDO + { + if ($this->_db === null) { + // $dsn = sprintf("%s:host=%s;dbname=%s;charset=%s", getenv('DATABASE_DRIVER'), getenv('DATABASE_HOST'), getenv('DATABASE_DB'), getenv('DATABASE_CHARSET')); + // $this->_db = new PDO($dsn, getenv('DATABASE_ID'), getenv('DATABASE_PASSWORD')); + $driver = $_ENV['DATABASE_DRIVER'] ?? $_SERVER['DATABASE_DRIVER'] ?? 'mysql'; + $host = $_ENV['DATABASE_HOST'] ?? $_SERVER['DATABASE_HOST'] ?? 'localhost'; + $dbname = $_ENV['DATABASE_DB'] ?? $_SERVER['DATABASE_DB'] ?? 'test'; + $charset = $_ENV['DATABASE_CHARSET'] ?? $_SERVER['DATABASE_CHARSET'] ?? 'utf8'; + $user = $_ENV['DATABASE_ID'] ?? $_SERVER['DATABASE_ID'] ?? 'root'; + $pass = $_ENV['DATABASE_PASSWORD'] ?? $_SERVER['DATABASE_PASSWORD'] ?? ''; + $dsn = sprintf("%s:host=%s;dbname=%s;charset=%s", $driver, $host, $dbname, $charset); + try { + $this->_db = new PDO($dsn, $user, $pass); + $this->_db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + $this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $e) { + throw new \Exception("❌ DB 연결 실패: " . $e->getMessage()); + } + } + return $this->_db; + } + final public function setDebug($debug) + { + $this->_debug = $debug; + } + final public function getDebug() + { + return $this->_debug; + } + final public function getLastQuery(): string + { + return $this->_lastQuery; + } + private function getValue(mixed $values): string|null + { + if ($values === null) { + return $values; + } + $temps = []; + if (is_array($values)) { + foreach ($values as $value) { + $temps[] = is_string($value) ? "'{$value}'" : $value; + } + } else { + $temps[] = is_string($values) ? "'{$values}'" : $values; + } + return implode(",", $temps); + } + final public function getData(mixed $columns, mixed $values = null, $delimeter = ","): string + { + $temps = []; + if (is_array($columns)) { + foreach ($columns as $column => $value) { + $value = $this->getValue($value); + $temps[] = $column . $value === null ? "" : $value; + } + } else { + $value = $this->getValue($values); + $temps[] = $columns . $value === null ? "" : $value; + } + throw new \Exception("DATA:" . $columns . $value === null ? "NULL" : $value); + var_export($temps); + return implode($delimeter, $temps); + } + final public function where(mixed $columns, mixed $values = null, string $delimeter = "AND"): void + { + $this->_wheres[] = $this->getData($columns, $values, $delimeter); + } + final public function orWhere(mixed $columns, mixed $values = null, string $delimeter = "OR"): void + { + $this->where($columns, $values, $delimeter); + } + final public function whereIn(string $column, array $values, string $delimeter = "AND", $range = "IN") + { + $this->_wheres[] = "{$delimeter} {$column} {$range} (" . $this->getValue($values) . ")"; + } + final public function whereNotIn(string $column, array $values, string $delimeter = "AND", $range = "NOT IN") + { + $this->whereIn($column, $values, $delimeter, $range); + } + final public function getWhere(): string + { + return count($this->_wheres) ? "WHERE " . implode(" ", $this->_wheres) : ""; + } + + final public function execute(string $query): bool|PDOStatement + { + if ($this->_debug) { + echo "\nQuery:" . $query . "\n"; + } + $this->_lastQuery = $query; + $stmt = $this->getConnect()->prepare($query); + $stmt->execute(); + if ($this->_reset) { + $this->_wheres = []; + $this->_querys = ["SELECT" => "SELECT *", "JOIN" => "", "ORDERBY" => "", "LIMIT" => ""]; + } + return $stmt; + } + + //CURD문 + final protected function create_process(mixed $columns, mixed $values = null): bool|PDOStatement + { + $query = sprintf("INSERT INTO %s VALUES(%s) %s", $this->getTable(), $this->getData($columns, $values), $this->getWhere()); + return $this->execute($query); + } // + final protected function modify_process(mixed $columns, mixed $values = null): bool|PDOStatement + { + $query = sprintf("UPDATE %s SET %s %s", $this->getTable(), $this->getData($columns, $values), $this->getWhere()); + return $this->execute($query); + } // + final protected function delete_process(): bool|PDOStatement + { + $query = sprintf("DELETE FROM %s %s", $this->getTable(), $this->getWhere()); + return $this->execute($query); + } // + public function select(mixed $columns = "*"): void + { + $this->_querys["SELECT"] = "SELECT " . is_array($columns) ? implode(",", $columns) : $columns . " FROM {$this->getTable()} WHERE {$this->getWhere()}"; + } + final public function join(string $table, mixed $match = null, $type = ""): void + { + $this->_querys["JOIN"] = " {$type} JOIN {$table} ON {$match}"; + } + final public function orderBy(mixed $columns, mixed $direction = null): void + { + $this->_querys["ORDERBY"] = " ORDERBY " . $this->getData($columns, $direction, " "); + } + final public function limit(int $start, mixed $end = "", bool $offset = false): void + { + $this->_querys["LIMIT"] = " LIMIT {$start} " . $offset ? "OFFSET " : "," . $end; + } + + //Result + protected function getResult($mode = PDO::FETCH_ASSOC): mixed + { + $query = "{$this->_querys['SELECT']} FROM {$this->getTable()} {$this->getWhere()} {$this->_querys['JOIN']} {$this->_querys['ORDERBY']}"; + $stmt = $this->execute($query); + return $stmt->fetch($mode); + } + protected function getResults($mode = PDO::FETCH_ASSOC): mixed + { + $query = "{$this->_querys["SELECT"]} FROM {$this->getTable()} {$this->getWhere()} {$this->_querys['JOIN']} {$this->_querys['ORDERBY']}"; + $query = "{$this->_querys['SELECT']} {$this->_querys['JOIN']} {$this->_querys['ORDERBY']}"; + $stmt = $this->execute($query); + return $stmt->fetchAll($mode); + } + final public function countAllResults(string $column = "*", $reset = true): int + { + $this->_reset = $reset; + $query = "SELECT COUNT({$column}) FROM {$this->getTable()} {$this->getWhere()} {$this->_querys['JOIN']} {$this->_querys['ORDERBY']}"; + $stmt = $this->execute($query); + $count = $stmt->fetchColumn(0); + $this->_reset = true; + return $count; + } +} //Class \ No newline at end of file diff --git a/extdbms/lib/Core/Service.php b/extdbms/lib/Core/Service.php new file mode 100644 index 0000000..4d49872 --- /dev/null +++ b/extdbms/lib/Core/Service.php @@ -0,0 +1,17 @@ +_debug = $debug; + } + final public function getDebug() + { + return $this->_debug; + } +} //Class diff --git a/extdbms/lib/Core/View.php b/extdbms/lib/Core/View.php new file mode 100644 index 0000000..1ac0cb2 --- /dev/null +++ b/extdbms/lib/Core/View.php @@ -0,0 +1,40 @@ +_debug = $debug; + } + final public function getDebug() + { + return $this->_debug; + } + + final public function __get($name) + { + return $this->_values[$name]; + } + final public function __set($name, $value) + { + $this->_values[$name] = $value; + } + + public function render($file) + { + $viewFileName = sprintf("lib/View/%s", $file); + $fullPathFile = "./" . $viewFileName . '.php'; + if (!file_exists($fullPathFile)) { + throw new \Exception(sprintf("%s 파일이 존재하지 않습니다.", $fullPathFile)); + } + ob_start(); + include $fullPathFile; + return ob_end_flush(); + } +} //Class diff --git a/extdbms/lib/Entities/AddDbEntity.php b/extdbms/lib/Entities/AddDbEntity.php new file mode 100644 index 0000000..07e7b06 --- /dev/null +++ b/extdbms/lib/Entities/AddDbEntity.php @@ -0,0 +1,13 @@ +getResult()); + } // + final public function getEntitys(): array + { + $entitys = []; + foreach ($this->getResults() as $row) { + $entitys[] = new Entity($row); + } + return $entitys; + } // +} //Class diff --git a/extdbms/lib/Models/ClientModel.php b/extdbms/lib/Models/ClientModel.php new file mode 100644 index 0000000..eede908 --- /dev/null +++ b/extdbms/lib/Models/ClientModel.php @@ -0,0 +1,42 @@ +getResult()); + } // + final public function getEntitys(): array + { + $entitys = []; + foreach ($this->getResults() as $result) { + $entitys[] = new Entity($result); + } + return $entitys; + } // +} //Class diff --git a/extdbms/lib/Models/CommonModel.php b/extdbms/lib/Models/CommonModel.php new file mode 100644 index 0000000..6b17cfb --- /dev/null +++ b/extdbms/lib/Models/CommonModel.php @@ -0,0 +1,13 @@ +getResult()); + } // + final public function getEntitys(): array + { + $entitys = []; + foreach ($this->getResults() as $result) { + $entitys[] = new Entity($result); + } + return $entitys; + } // +} //Class diff --git a/extdbms/lib/Services/CommonService.php b/extdbms/lib/Services/CommonService.php new file mode 100644 index 0000000..e4d8abc --- /dev/null +++ b/extdbms/lib/Services/CommonService.php @@ -0,0 +1,13 @@ +getClassName(); + } + public function getModel(): ServiceModel + { + if ($this->_model === null) { + $this->_model = new ServiceModel(); + $this->_model->setDebug(true); + } + return $this->_model; + } + final public function getClientModel(): ClientModel + { + if ($this->_clientModel === null) { + $this->_clientModel = new ClientModel(); + } + return $this->_clientModel; + } + public function getAdddbModel(): AdddbModel + { + if ($this->_adddbModel === null) { + $this->_adddbModel = new AdddbModel(); + } + return $this->_adddbModel; + } + + public function getNewServerCount(int $day, array $excepts): int|string + { + $this->getModel()->where("service_open_date > DATE_ADD(now(), INTERVAL -{$day} DAY)"); + $this->getModel()->where("service_status", 'o'); + $this->getModel()->whereNotIn("service_line", $excepts); + $count = $this->getModel()->countAllResults(); + throw new \Exception("TEST"); + // echo "
    " . $this->getModel()->getLastQuery(); + return $count; + } + public function getUnPaymentCount(array $excepts): int|string + { + $this->getModel()->where("service_payment_date > now()"); + $this->getModel()->where("service_status", 'o'); + $this->getModel()->whereNotIn("service_line", $excepts); + $count = $this->getModel()->countAllResults(); + // throw new \Exception($this->getModel()->getLastQuery()); + return $count; + } + + private function getTotalCountByDistriction(string $where, string $type, string $switch_code1, string $switch_code2): int + { + $this->getModel()->where($where); + $this->getModel()->where(["service_line" => $type, "service_status" => 'o']); + $this->getModel()->where("service_sw BETWEEN '{$switch_code1}' AND '{$switch_code2}'"); + $count = $this->getModel()->countAllResults(); + // echo "
    " . $this->getModel()->getLastQuery(); + return $count; + } + final public function getTotalCount(array $siteinfo): array + { + $temps = array(); + foreach ($siteinfo['totalcount_customers'] as $customer => $where) { + $temps[$customer] = []; + foreach ($siteinfo['totalcount_types'] as $type) { + $temps[$customer][$type]['Chiba'] = $this->getTotalCountByDistriction($where, $type, 'C00%', 'C64%'); + $temps[$customer][$type]['Tokyo'] = $this->getTotalCountByDistriction($where, $type, 'C80%', 'C99%'); + } //foreach + // echo var_dump($temps); + } //foreach + return $temps; + } + final public function getExtras(string $addDB_code): mixed + { + $this->getAdddbModel()->select('DISTINCT(service_code) AS service_code'); + $this->getAdddbModel()->where('addDB_code', $addDB_code); + $service_codes = []; + foreach ($this->getAdddbModel()->getEntitys() as $entity) { + $service_codes = $entity->getServiceCode(); + } + // 공백 값 제거 + $service_codes = array_filter($service_codes, function ($value) { + return !empty(trim($value)); // 공백 제거 후 비어있지 않은 값만 필터링 + }); + // 배열 키를 다시 정렬 (선택 사항) + $service_codes = array_values($service_codes); + // echo "
    " . $this->getAdddbModel()->getLastQuery(); + // dd($service_codes); + if (!count($service_codes)) { + // echo $this->getAdddbModel()->getLastQuery(); + return []; + } + $this->getModel()->select("clientdb.Client_Name,{$this->getModel()->getTable()}.server_code,{$this->getModel()->getTable()}.service_ip,{$this->getModel()->getTable()}.service_os,{$this->getModel()->getTable()}.service_sw"); + $this->getModel()->join('clientdb', "{$this->getModel()->getTable()}.client_code=clientdb.Client_Code"); + $this->getModel()->whereIn('service_code', $service_codes); + // $sql = sprintf("SELECT C.Client_Name,S.server_code,S.service_ip,S.service_os,S.service_sw + // FROM servicedb AS S JOIN clientdb AS C ON S.client_code = C.Client_Code + // WHERE S.service_code IN (SELECT service_code FROM adddb WHERE addDB_code ='%s')", $code); + // return $this->getRows($sql); + return $this->getModel()->getEntitys(); + } + + public function getNews(int $limit = 5): array + { + $this->getModel()->orderBy($this->getModel()->getPKField(), direction: 'DESC'); + $this->getModel()->limit($limit); + return $this->getModel()->getEntitys(); + } + + public function getServiceByServiceCode(string $service_code): ServiceEntity|null + { + $this->getModel()->where("service_code", $service_code); + return $this->getModel()->getEntity(); + } +} diff --git a/extdbms/lib/View/dashboard.php b/extdbms/lib/View/dashboard.php new file mode 100644 index 0000000..9715d0e --- /dev/null +++ b/extdbms/lib/View/dashboard.php @@ -0,0 +1,101 @@ + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    0
    +
    새 쪽지 알림
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    newServers ?>
    +
    최근 day ?>일간 신규서버 대수
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    0
    +
    요청업무 알림
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    unPayments ?>
    +
    금일 기준 미납 서버
    +
    +
    +
    + + + +
    +
    +
    +
    + + + + +
    + \ No newline at end of file diff --git a/extdbms/lib/View/depositbillpaper.php b/extdbms/lib/View/depositbillpaper.php new file mode 100644 index 0000000..0b80a3d --- /dev/null +++ b/extdbms/lib/View/depositbillpaper.php @@ -0,0 +1,79 @@ +
    +

    ※ 청구서를 받으셨던 서버인 경우에도 발행하는 시점까지 미납인 경우 재 발행됩니다. 입금을 하신 경우에는 연락 부탁드립니다.

    +

    입금 하실 계좌 번호 입니다.

    + accounts as $account) { ?> +
    + 은행명 :
    + 계좌번호 :
    + 예금주: +
    + +

    고객명과 입금자명이 상이한 경우 반드시 확인 연락이 필요합니다.
    + 입금 시 당 청구서에 기재되어 있는 고객명으로 입금해주시면 별도의 입금 확인 전화가 필요없습니다.

    +
    +

    ※ 할인안내
    + - 서버비 입금시 3개월 이상 선납하는 고객분들께 드리는 할인혜택 (중도 해약하시더라도 환불은 되지 않습니다.)
    + 3개월 - 10%, 6개월 - 15%, 12개월 -20% 의 비율로 결제금액을 할인 해 드리고 있습니다.
    + - 장기사용하시는 고객분들께 드리는 할인혜택
    + 1년 이상 10%, 2년 이상 15% 3년 이상 20%, 4년 이상 25%, 최대 5년 이상 30%의 비율로 결제금액을 할인해 드리고 있습니다.
    + 단, 중도 해지 후 신규 가입시 할인혜택은 없습니다.
    +

    +
    + ※ 기타 서비스 요금 안내
    + - 도메인 구매 대행 서비스 : 도메인 1개당 3만원 (1회성 비용으로 구매를 요청하신 달에만 요금이 청구 됩니다)
    + - IP 추가 : 일반회선 10만원 / 보안회선 10만원(추가 하신 날로 부터 사용을 중지 하시는 달까지 매월 요금이 청구 됩니다.)
    + - IP 변경
    + - 단순 IP 변경의 경우(오래 사용하여 변경, 정기적인 변경, 관리자 변경 등)에는 무료로 변경 해 드리고 있습니다.
    + - IP에 문제(KCSC로 연결, 접근(원격접속) 차단, 공격을 받아 다른 IP로 변경 등)가 있어 변경 하실 경우에는 요금이 청구 됩니다.
    + * 청구비용 10만원 (1회성 비용으로 구매를 요청하신 달에만 요금이 청구 됩니다)
    + - 위 서비스는 선입금으로 제공 해 드리고 있습니다.
    + - VPN 결제일의 자정까지 결제처리가 안될시 자동차단처리가 되게됩니다.
    + 이점 양해 부탁드리겠습니다.
    + ※ 이용 해지시에는 사용하셨던 IP에 연결 되어 있는 도메인들은 꼭 연결 해제를 해 주시기 바랍니다. +

    + 보장 트래픽 : 기본 트래픽 사용량은 IN 10Mbps / OUT 10Mbps 입니다
    + 보장 트래픽 이상을 사용할 경우 트래픽 과금이 발생할 수 있습니다
    +

    ※ 알림(필히 숙지 하여 주시기 바랍니다.)
    +
    + 1. site['Title'] ?>에 등록 하신 고객명 / 전화번호 / 메일 주소는 차후 고객님 확인을 위해 사용 되니 고객님께서도 필히 알고 계셔야 합니다.
    + 또한 전화번호와 메일주소 또는 메신져는 site['Title'] ?>에서 고객님에게 연락을 취해야 할 경우 사용됩니다.변동사항이 있을 경우에는
    + 반드시 site['Title'] ?>에 연락을 하여 변경해 주시기 바랍니다. +

    +

    변동사항을 site['Title'] ?>에게 알려 주시지 않거나, site['Title'] ?>에 등록된 연락처로 연락을 해도 연결이 안되어 발생하는 피해에 대해서는
    + 저희 site['Title'] ?>에서 책임을 지지 않습니다.

    +

    2. 결제는 납부기한내에 해 주셔야 합니다.
    + 혹시라도 납부기한내에 결제를 하지 못하실 경우는 미리 연락을 주시면 납부기한 후 최대 3일간은 서버 접속이 유지됩니다.
    + 하지만 납부기한까지 연락을 안주시거나 연락을 하셨더라도 납부기한을 3일 초과하시면 서버 접속이 차단되고 차단후에도
    + 3일동안 연락이 없을 경우 자동 해지 처리 되고 데이터는 삭제처리 되오니 주의 하시기 바랍니다.

    +

    3. 환불정책
    + 월단위 계약(계산)이므로 중도 환불(일할계산)은 안됩니다.
    + 단, 셋팅에 문제가 있거나 기타 문제가 있을 경우 서버를 인계 받으시고 3일 안으로는 환불 요청을 하실 수 있습니다. +

    +

    4. 서버 운영중 해킹으로 발생한 피해는 저희 site['Title'] ?>에서 책임을 지지 않습니다.
    + 서버운영에 있어서 보안에 각별히 주의 부탁드리겠습니다.
    + <해킹 대비 및 보안조치사항>
    + - 주기적인 window 보안 업데이트
    + - linux ,mysql , php, jsp 보안권고
    + - 서버 원격 접속 패스워드 및 mssql 패스워드 변경
    + * 영문,숫자,특수문자 8자리 이상 조합하여 사용 권고
    + * 매월 주기적으로 패스워드 변경
    + * 패스워드 노출 시 즉각 변경
    + - 서버내 방화벽에서 특정IP만 서버에 접속할 수 있도록 방화벽 설정
    + - 원격접속 포트 기본포트에서 변경 설정 (기본 포트 window : 3389 / linux : 22 )
    + + + * 무료 설치 : Microsoft Security Essential 설치
    + + - 웹서비스 보안을 위한 웹방화벽 설치 대행서비스(유료) +

    +

    # 원격포트 변경 및 원격접속 제한 설정은 site['Title'] ?>홈페이지에 등록되어 있습니다.
    + 자세한 사항은 센터로 문의주시기 바랍니다.

    +

    5. 서버 운영중 장비부품 문제(예:하드디스크의 고장 등)로 발생한 피해는 저희 site['Title'] ?>에서 책임을 지지 않습니다.
    + (요청하시면 백업을 위해 무료로 추가 하드를 제공해 드리고 있지만, 추가가 불가능한 경우도 있습니다.
    + 번거로우시더라도 주기적인 데이터백업을 부탁드리겠습니다.)

    +
    \ No newline at end of file diff --git a/extdbms/lib/View/extraservice.php b/extdbms/lib/View/extraservice.php new file mode 100644 index 0000000..3ac39c4 --- /dev/null +++ b/extdbms/lib/View/extraservice.php @@ -0,0 +1,34 @@ + + + + + + + + + + + + + results as $result) {?> + + + + + + + + + +
    고객명장비명IP사용OS위치
    Client_Name ?>server_code ?>service_ip ?>service_os ?>service_sw ?>
    \ No newline at end of file diff --git a/extdbms/lib/View/total_counting.php b/extdbms/lib/View/total_counting.php new file mode 100644 index 0000000..31a16b0 --- /dev/null +++ b/extdbms/lib/View/total_counting.php @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + results as $company => $service) {?> + + + $location) {?> + + + + + + + + + + + + + + _values['types'] as $type) {?> + + + + + + + + + +
    고객명일반방어전용대체테스트합계
    도쿄치바도쿄치바도쿄치바도쿄치바도쿄치바합계도쿄치바합계
    summary[$company]['Tokyo'] - $service['test']['Tokyo']; ?>summary[$company]['Chiba'] - $service['test']['Chiba']; ?>summary[$company]['Tokyo'] - $service['test']['Tokyo'] + $this->summary[$company]['Chiba'] - $service['test']['Chiba']; ?>
    총합계summary[$type]['Tokyo']; ?>summary[$type]['Chiba']; ?>summary['test']['Tokyo'] + $this->summary['test']['Chiba']; ?>total['Tokyo'] - $this->summary['test']['Tokyo']; ?>total['Chiba'] - $this->summary['test']['Chiba']; ?>total['Tokyo'] - $this->summary['test']['Tokyo'] + $this->total['Chiba'] - $this->summary['test']['Chiba']; ?>
    \ No newline at end of file diff --git a/extdbms/lib/autoload.php b/extdbms/lib/autoload.php new file mode 100644 index 0000000..f095ee4 --- /dev/null +++ b/extdbms/lib/autoload.php @@ -0,0 +1,7 @@ +loading. class path : %s
    \n", $class); + //exit(); + require_once $class; +}); diff --git a/extdbms/member_memo.php b/extdbms/member_memo.php new file mode 100644 index 0000000..8a1844e --- /dev/null +++ b/extdbms/member_memo.php @@ -0,0 +1,207 @@ + + $total) {$list_no = $total;} +$total_page = ($total != '0') ? ceil($total / $list_no) : '0'; + +$page = $_GET[page]; + +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; + +$result = @mysql_query($query, $db_connect) or die($db_q_error); +?> + + +
    + + + + + + + + + + + + + + + + +긴급'; + break; + case '2':$data[comment_case] = '지시'; + break; + case '3':$data[comment_case] = '전달'; + break; + case '4':$data[comment_case] = '기타'; + break; + default:$data[comment_case] = '일반'; + break; + } + $content = nl2br($data[content]); + if ($_GET[page] == 'default') {$content = cut_str($content, 180, " ... more");} else {} + ?> + + + + + + + + + + + +
    구분보낸사람내용보낸날짜보낸시간받는사람확인
    $data[receiver]";}?> +확인완료"; + } else { + + if ($data[receiver] == '전체' or $data[receiver] == '팀장' or $data[receiver] == '영업' or $data[receiver] == '1팀' or $data[receiver] == '2팀' or $data[receiver] == '시스템' or $data[receiver] == '네트워크' or $data[receiver] == '알바') { + $msg = "
    + + + + + + +
    "; + } else { + $msg = "
    "; + } + } + ?> + +
    + + + + diff --git a/extdbms/member_memo_sent.php b/extdbms/member_memo_sent.php new file mode 100644 index 0000000..5c151bf --- /dev/null +++ b/extdbms/member_memo_sent.php @@ -0,0 +1,190 @@ + + $total) {$list_no = $total;} +$total_page = ($total != '0') ? ceil($total / $list_no) : '0'; + +$page = $_GET[page]; + +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; + +$result = @mysql_query($query, $db_connect) or die($db_q_error); +?> + + +
    + + + + + + + + + + + + + + + +긴급'; + break; + case '2':$data[comment_case] = '지시'; + break; + case '3':$data[comment_case] = '전달'; + break; + case '4':$data[comment_case] = '기타'; + break; + default:$data[comment_case] = '일반'; + break; + } + ?> + + + + + + + + + + +
    구분내용보낸날짜보낸시간받는사람확인
    $data[receiver]";}?> + + +
    + + + + + + diff --git a/extdbms/member_memo_up.php b/extdbms/member_memo_up.php new file mode 100644 index 0000000..f5c6d09 --- /dev/null +++ b/extdbms/member_memo_up.php @@ -0,0 +1,29 @@ +"; +} else { + echo ""; +} diff --git a/extdbms/mk3.php b/extdbms/mk3.php new file mode 100644 index 0000000..7faf6d1 --- /dev/null +++ b/extdbms/mk3.php @@ -0,0 +1,245 @@ + + +
    + + + + +
    + + + +
    + >전체
    + >당일
    + >1일전
    + >2일전
    + >3일전
    + >커스텀(수정중)
    + + +
    + + $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); +?> +
    +미납 서버 대수 : +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    고객명종류장비명결제일서비스 가격과금상태미납과금청구서 발행 대상비고
    ()
    +
    + 0) { + + $p_start = (($n_page - 1) * $page_scale)+'1'; + $link = ""; + $link .= "<<"; + $link .= ""; + echo $link . " "; +} +$is = ($n_page * $page_scale)+'1'; +for ($i = $is; $i < $is + $page_scale; $i++) { + + if ($i < $total_page+'1') { + if ($i == $page) {$ib = "$i";} else { $ib = $i;} + $link = ""; + $link .= $ib; + $link .= ""; + echo $link . " "; + } +} +if ($n_page < $page3) { + $link = ""; + $link .= ">>"; + $link .= ""; + echo $link; +} +?> +
    + + + +
    + + + + +
    + + + diff --git a/extdbms/mkwork.php b/extdbms/mkwork.php new file mode 100644 index 0000000..afac756 --- /dev/null +++ b/extdbms/mkwork.php @@ -0,0 +1,109 @@ + + / / + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    업체명회선장비번호장비사양스위치OS기본IP정상가할인금액서비스가
    + + +
      + +
    • + +
    • + +
    + + + +echo .$mk_q1_data[service_line].$mk_q1_data[server_code].$mk_q1_data[service_sw].$mk_q1_data[service_os].$mk_q1_data[service_ip]; +echo "/"; +echo $mk_default; +echo "/"; +echo $mk_discount; +echo "/"; +echo $mk_service; +echo "
    "; +*/ +?> diff --git a/extdbms/navigation_alert.php b/extdbms/navigation_alert.php new file mode 100644 index 0000000..2f38332 --- /dev/null +++ b/extdbms/navigation_alert.php @@ -0,0 +1,130 @@ + + + + +"; +$result = @mysql_query($query, $db_connect) or die($db_q_error); + +?> +