From 0a2e30b1c2b635ccdfc3c44a2c5da3292ed2fd50 Mon Sep 17 00:00:00 2001 From: kimre Date: Wed, 29 Jun 2022 17:52:26 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=81=AC=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20/=20=EB=B0=9C=EC=86=A1=ED=86=B5=EA=B3=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/assets/css/error.css | 72 ++ frontend/src/assets/css/style.css | 134 +-- .../src/assets/images/error_message_page.png | Bin 0 -> 5989 bytes .../assets/images/error_message_system.png | Bin 0 -> 4393 bytes frontend/src/components/HubWebHeader.vue | 10 +- frontend/src/components/NavBar.vue | 100 +- frontend/src/components/modal/commonModal.vue | 57 +- .../riskMgt/components/InsertIntrcpPop.vue | 52 +- .../riskMgt/components/InsertMsgPop.vue | 42 +- .../riskMgt/components/IntrcpDetailPopup.vue | 37 +- .../riskMgt/components/IntrcpMsgDetail.vue | 50 +- .../components/ValidationConfirmPopup.vue | 288 ++++++ .../src/modules/riskMgt/views/IntrcpList.vue | 16 +- frontend/src/modules/riskMgt/views/Msg.vue | 7 +- frontend/src/modules/riskMgt/views/ZezNum.vue | 3 +- frontend/src/modules/stats/router/index.js | 14 + .../src/modules/stats/service/statsApi.js | 29 + .../src/modules/stats/views/BsnmDayList.vue | 366 ++++++++ .../src/modules/stats/views/BsnmMonthList.vue | 489 ++++++---- frontend/src/modules/stats/views/DayList.vue | 273 ++++++ .../src/modules/stats/views/MonthList.vue | 471 +++++----- frontend/src/views/ErrorPage404.vue | 2 +- frontend/src/views/HubwebLayout.vue | 24 +- .../ez/api/riskMgt/dto/ZezNumIntrcpList.java | 3 +- .../api/sendNumMgt/SendNumMgtController.java | 14 +- .../ez/api/sendNumMgt/SendNumMgtService.java | 283 +++--- .../ez/api/sendNumMgt/dto/DetailNumber.java | 23 +- .../sendNumMgt/dto/DetailNumberReqDto.java | 10 +- .../ez/api/sendNumMgt/dto/SendNumberInfo.java | 2 + .../mapper/mysql/riskMgt/riskMgt-mapper.xml | 2 + .../mysql/sendNumMgt/sendNumMgt-mapper.xml | 97 +- .../mapper/mysql/stats/stats-mapper.xml | 886 +++++++++++++----- 32 files changed, 2864 insertions(+), 992 deletions(-) create mode 100644 frontend/src/assets/css/error.css create mode 100644 frontend/src/assets/images/error_message_page.png create mode 100644 frontend/src/assets/images/error_message_system.png create mode 100644 frontend/src/modules/riskMgt/components/ValidationConfirmPopup.vue create mode 100644 frontend/src/modules/stats/service/statsApi.js create mode 100644 frontend/src/modules/stats/views/BsnmDayList.vue create mode 100644 frontend/src/modules/stats/views/DayList.vue diff --git a/frontend/src/assets/css/error.css b/frontend/src/assets/css/error.css new file mode 100644 index 0000000..2c7b241 --- /dev/null +++ b/frontend/src/assets/css/error.css @@ -0,0 +1,72 @@ +@charset "utf-8"; +/* CSS Document */ + +@font-face { + font-family: 'SpoqaHanSansNeo'; + src: url('../font/SpoqaHanSansNeo-Thin.woff2') format('woff2'); + font-weight: 100; + font-style: normal; +} +@font-face { + font-family: 'SpoqaHanSansNeo'; + src: url('../font/SpoqaHanSansNeo-Light.woff2') format('woff2'); + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: 'SpoqaHanSansNeo'; + src: url('../font/SpoqaHanSansNeo-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'SpoqaHanSansNeo'; + src: url('../font/SpoqaHanSansNeo-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: 'SpoqaHanSansNeo'; + src: url('../font/SpoqaHanSansNeo-Bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; +} + + +.error-wrap {background: #fff; text-align: center; padding:0; margin: 0 auto; font-family: 'SpoqaHanSansNeo'; + width:90vw; height:90vh; position: relative; } +.error-body { width:450px; max-width: 98%; margin: 0 auto; text-align: center; position: absolute; top:50%;transform: translate(0, -50%); left:calc(50% - 225px); } +.error-body > .header { font-weight: 700; font-size: 2.5em; margin: 30px 0 20px 0;} +.error-body > .message { font-weight: 400; font-size:1em; line-height: 150%;} +.error-body > .error-btns { width:100%; display: flex;text-align: center; margin-top: 3em; } +.error-body > .error-btns a:nth-child(1) {background: #eb008b; border:1px solid #eb008b; font-weight: 400; font-size:1em; line-height: 150%; border-radius: 5px; color:#fff; text-decoration:none;padding: 10px 0; width: 50%; } +.error-body > .error-btns a:nth-child(2) { display: inline-block; background: #fff; border:1px solid #282828; font-weight: 400; font-size:1em; line-height: 150%; border-radius: 5px; color:#000; text-decoration:none; padding: 10px 0; width: 50%; margin-left: 10px; } + + + +@media only screen and (max-width: 550px) { + .error-body { max-width: 98%; margin: 0 auto; text-align: center; position: relative; top:3em; left:auto; transform: none;} +} + + + +@media only screen and (max-width: 414px) { + .error-body > img { width:6em;} + .error-body > .header {font-size: 1.6em; letter-spacing: -0.05em; margin: 20px 0 10px 0;} + .error-body > .message {font-size:0.9em; letter-spacing: -0.05em;} +} + + +@media only screen and (max-width: 280px) { + .error-body > img { width:6em;} + .error-body > .header {font-size: 1.35em; letter-spacing: -0.05em; margin: 20px 0 10px 0;} + .error-body > .message {font-size:0.9em; letter-spacing: -0.05em; line-height: 140%;} + .error-body > .error-btns { margin-top: 2em; } +} + + + + + + + diff --git a/frontend/src/assets/css/style.css b/frontend/src/assets/css/style.css index f87ebc2..8b02c2f 100644 --- a/frontend/src/assets/css/style.css +++ b/frontend/src/assets/css/style.css @@ -539,95 +539,62 @@ header .user_wrap .user_info .logout { } /* input cal + search-box*/ -/*.w35{width:35%;}*/ -/*.contents .table.table_form.m50{margin-bottom: 50px;}*/ +.w35{width:35%;} +.contents .table.table_form.m50{margin-bottom: 50px;} -/*.contents .input_box.cal{*/ -/* display: inline-block;*/ -/* width: 27.34%;*/ -/*}*/ - -/*.contents .input_box.cal label {*/ -/* display: block;*/ -/*}*/ - -/*.contents .input_box.cal .txt{*/ -/* display: inline-block;*/ -/*}*/ - -/*.contents .input_box.cal p{*/ -/* display: inline-flex;*/ -/* margin-left: 10px;*/ -/*}*/ - -/*.contents .input_box.cal input {*/ -/* display: inline-block;*/ -/* width: 48%;*/ -/* float: left;*/ -/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/ -/*}*/ - -/*.contents .input_box.cal input {*/ -/* display: inline-block;*/ -/* width: 48%;*/ -/* float: left;*/ -/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/ -/*}*/ - -/*.contents .input_box.cal span {*/ -/* display: inline-block;*/ -/* width: 48%;*/ -/* float: left;*/ -/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/ -/*}*/ - -.custom_input.icon_date input[type="text"] { - width: 52%; - float: left; - background: #fff url(../images/icon-calender.png) no-repeat right 6% center; -} -.custom_input.icon_date input[type="text"]:focus { - border-color: #cccccc; - background-color: #f6f6f6; - color: #898989; +.contents .input_box.cal{ + display: inline-block; + width: 27.34%; } -.contents .input_box.cal span + input{ +.contents .input_box.cal label { + display: block; +} + +.contents .input_box.cal .txt{ + display: inline-block; +} + +.contents .input_box.cal p{ + display: inline-flex; + margin-left: 10px; +} + +.contents .input_box.cal input { + display: inline-block; + width: 48%; + float: left; + background: #fff url(../images/icon-calender.png) no-repeat right 6% center; +} +.contents .input_box.cal input + input{ margin-left: 5%; } - -.vdp-datepicker__calendar header { - display: block; - line-height: 40px; - height: 40px; +.contents .input_box.cal.one{ + width: 13.67%; } -/*.contents .input_box.cal input + input{*/ -/* margin-left: 5%;*/ -/*}*/ +.contents .input_box.cal.one input{ + width: 100%; +} -/*.contents .input_box.cal.one{*/ -/* width: 13.67%;*/ -/*}*/ +.contents .input_box.cal.one + .btn-a{ + margin-right: 10px; +} -/*.contents .input_box.cal.one input{*/ -/* width: 100%;*/ -/*}*/ +.contents .input_box.cal .term{ + display: flex; + justify-content: space-around; + align-items: center; +} -/*.contents .input_box.cal.one + .btn-a{*/ -/* margin-right: 10px;*/ -/*}*/ +.contents .input_box.cal .term input:nth-child(1){ + margin-right: 4%; +} -/*.contents .input_box.cal .term{*/ -/* display: flex;*/ -/* justify-content: space-around;*/ -/* align-items: center;*/ -/*}*/ +.vdp-datepicker__calendar div {margin-top:80px;} -/*.contents .input_box.cal .term input:nth-child(1){*/ -/* margin-right: 4%;*/ -/*}*/ +/*.vdp-datepicker__calendar div*/ .contents .input_box .search-box { background: #fff url(../images/icon-search.png) no-repeat 6% center/14px auto; @@ -904,6 +871,8 @@ header .user_wrap .user_info .logout { /*contents table 추가*/ +/* arrow_box 반려사유 삭제 */ +/* .contents .table table .arrow_box { display: none; background-color: #fff; @@ -946,6 +915,7 @@ header .user_wrap .user_info .logout { width: 0; z-index: 1; } +*/ .contents .table.calculate table td, .contents .table.calculate table th{ border-left: 1px solid #dadae6; @@ -976,10 +946,6 @@ header .user_wrap .user_info .logout { .contents .table table td span {cursor: pointer;} -.contents .table table td .linkstyle {cursor: pointer; text-decoration: underline;} -.contents .table table td .linkstyle:hover {color:#eb008b;} - - .contents .table table td span:hover + p.arrow_box { display: block; } @@ -1593,10 +1559,10 @@ header .user_wrap .user_info .logout { background: url(../images/icon-add-b.png) no-repeat center center; } -/*.popup.popup_form.register .input_add div:nth-child(2){*/ -/* width: 89%;*/ -/* padding-top: 5px;*/ -/*}*/ +.popup.popup_form.register .input_add div:nth-child(2){ + width: 89%; + padding-top: 5px; +} .popup .button.white{ background-color: #fff; diff --git a/frontend/src/assets/images/error_message_page.png b/frontend/src/assets/images/error_message_page.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb87a14d0300c1691096a771939502fbbd05ee2 GIT binary patch literal 5989 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/images/error_message_system.png b/frontend/src/assets/images/error_message_system.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4c74f5088dac5deeb66237b76523144c4fbefb GIT binary patch literal 4393 zcma)Ac|4Tc|DWpWn<}yF#*6Nb1ld_Xg zDx#Zx7nx+QK}7hD?(N>+AHVy1{hrr(o^zh_`Mlrfea`uu*E!DPPm6e64sKQmTSgfKOPE`R0k(ZU1N60E5

G(6p^wjNO^h4 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 + diff --git a/frontend/src/modules/riskMgt/components/InsertMsgPop.vue b/frontend/src/modules/riskMgt/components/InsertMsgPop.vue index 40b757f..8f56a6d 100644 --- a/frontend/src/modules/riskMgt/components/InsertMsgPop.vue +++ b/frontend/src/modules/riskMgt/components/InsertMsgPop.vue @@ -61,10 +61,11 @@

+ @@ -74,6 +75,7 @@ import api from '@/service/api'; import riskMgtApi from '../service/riskMgtApi'; import lodash from "lodash"; import { utils_mixin, chkPattern2 } from '../service/mixins'; +import ValidationConfirmPopup from './ValidationConfirmPopup.vue'; export default { mixins: [utils_mixin, chkPattern2], data(){ @@ -84,7 +86,6 @@ export default { // word:'', // }, msgBlckwordList: [ - { seqNo: '' , word : '도박'}, // { word : '스팸'}, ], rsnType: [], @@ -106,6 +107,9 @@ export default { created(){ this.formReset(); }, + components: { + ValidationConfirmPopup + }, methods :{ ModalOpen(){ @@ -141,22 +145,29 @@ export default { }, async doInsert(){ - if(this.doValidate() && window.confirm('등록 하시겠습니까?')){ + // if(this.doValidate() && window.confirm('등록 하시겠습니까?')){ try { const response = await riskMgtApi.msgIntrcpList(this.row); const result = response.data; if (result != null && result.retCode == "0000") { - alert('저장 하였습니다.'); + this.row.title = '메세지 차단'; + this.row.msg1 = '저장하였습니다.'; + this.$parent.msgAlertModalOpen(this.row); } this.toComplete(); } catch(err) { - alert("실패 하였습니다."); + this.row.title = '메세지 차단'; + this.row.msg1 = '실패하였습니다.'; + this.$parent.msgAlertModalOpen(this.row); } - } + // } }, doValidate(){ - if(this.isNull(this.word)){ + if(this.isNull(this.msgBlckwordList)){ + this.row.title = '메세지 차단'; + this.row.msg1 = '문구를 입력해주세요.'; + this.$parent.msgAlertModalOpen(this.row); this.$refs._word.focus(); return false; } @@ -176,6 +187,13 @@ export default { }, //신규등록 팝업에서 문구 추가 버튼 doAdd: function() { + if(this.isNull(this.word)){ + this.row.title = '메세지 차단'; + this.row.msg1 = '문구를 입력해주세요.'; + this.$parent.msgAlertModalOpen(this.row); + this.$refs._word.focus(); + return false; + } if(this.msgBlckwordList.length < 10){ this.msgBlckwordList.push({ //seqNo: '', @@ -194,11 +212,11 @@ export default { Object.assign(this.$data, this.$options.data()); this.insertType = type; }, - - - - - + regisConfirm(){ + if(this.doValidate()){ + this.$refs.ValidationConfirmPopup.msgConfirmInsertOpen(); + } + }, }, diff --git a/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue b/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue index 6745476..3709e54 100644 --- a/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue +++ b/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue @@ -58,12 +58,12 @@ - + @@ -73,6 +73,7 @@ //import api from '@/service/api'; import riskMgtApi from '../service/riskMgtApi'; import api from '@/service/api'; +import ValidationConfirmPopup from './ValidationConfirmPopup.vue'; export default { data(){ return{ @@ -88,6 +89,9 @@ export default { meno: '', } }, + components: { + ValidationConfirmPopup + }, methods :{ // 모달 띄우기 async IntrcpDetailModalOpen(props){ @@ -134,12 +138,14 @@ export default { //삭제버튼 async IntrcpDeleteModal(){ this.setCodeDate(); - if(window.confirm('삭제 하시겠습니까?')){ + // if(window.confirm('삭제 하시겠습니까?')){ try { const response = await riskMgtApi.deleteIntrcp(this.row); const result = response.data; if (result != null && result.retCode == "0000") { - alert('삭제 하였습니다.'); + this.row.title = '발신번호 차단'; + this.row.msg1 = '삭제하였습니다.'; + this.$parent.alertInsert(this.row); // grid.reloadData(); // this.$refs.table.reloadData(); this.toComplete(); @@ -147,22 +153,24 @@ export default { } catch(err) { alert("실패 하였습니다."); } - } + // } }, //수정버튼 async IntrcpUpdateModal(){ - if(this.doValidate() && window.confirm('수정 하시겠습니까?')){ + // if(this.doValidate() && window.confirm('수정 하시겠습니까?')){ try { const response = await riskMgtApi.updateIntrcp(this.row); const result = response.data; if (result != null && result.retCode == "0000") { - alert('수정 하였습니다.'); + this.row.title = '발신번호 차단'; + this.row.msg1 = '수정 하였습니다.'; + this.$parent.alertInsert(this.row); this.toComplete(); } } catch(err) { alert("실패 하였습니다."); } - } + // } }, // 모달 끄기 ModalClose(){ @@ -191,6 +199,17 @@ export default { this.row.meno=this.meno; return true; }, + UpdateConfirm(){ + if(this.doValidate()){ + this.$refs.ValidationConfirmPopup.confirmUpdateOpen(); + } + }, + DeleteConfirm(){ + if(this.doValidate()){ + this.$refs.ValidationConfirmPopup.confirmDeleteOpen(); + } + }, + diff --git a/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue b/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue index 76a2e63..b6bb60c 100644 --- a/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue +++ b/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue @@ -40,7 +40,7 @@ 차단사유 -
+
+
- +
- +
@@ -42,215 +72,298 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
날짜고객사명사업자번호전체SMSLMSMMS알림톡
발송건수성공건수/(%)발송건수성공건수/(%)발송건수성공건수/(%)발송건수성공건수/(%)발송건수성공건수/(%)
2022-04유플러스229-81-3993884,000,00084,000,000
(100%)
21,000,00021,000,000
(100%)
21,000,00021,000,000
(100%)
21,000,00021,000,000
(100%)
21,000,00021,000,000
(100%)
2022-03유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2022-02유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2022-01유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-12유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-11유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-10유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-09유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-08유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
2021-07유플러스229-81-3993840,000,00040,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
10,000,00010,000,000
(100%)
-
+
+ \ No newline at end of file diff --git a/frontend/src/modules/stats/views/MonthList.vue b/frontend/src/modules/stats/views/MonthList.vue index d9e428e..dddcb86 100644 --- a/frontend/src/modules/stats/views/MonthList.vue +++ b/frontend/src/modules/stats/views/MonthList.vue @@ -1,234 +1,285 @@ \ No newline at end of file + + \ No newline at end of file diff --git a/frontend/src/views/ErrorPage404.vue b/frontend/src/views/ErrorPage404.vue index 8e3d41d..0e28904 100644 --- a/frontend/src/views/ErrorPage404.vue +++ b/frontend/src/views/ErrorPage404.vue @@ -1,6 +1,6 @@ @@ -29,7 +29,7 @@ export default { NavBar, // vuejsDatepicker, HubWebHeader, - HubWebFooter, + HubWebFooter, }, data(){ return{ @@ -38,12 +38,12 @@ export default { isAuthChk: false, } }, - created() { + created() { this.getLogin; this.getAuthChk; }, mounted() { - + } ,computed: { ...mapGetters({ @@ -55,10 +55,10 @@ export default { watch: { getLogin(data) { if (data != null && data != '' && data == true) { - this.isLogin = true; + this.isLogin = true; } else { - this.isLogin = false; - } + this.isLogin = false; + } }, getErrorPage(data) { if (data != null && data != '' && data == true) { @@ -67,12 +67,12 @@ export default { this.isErrPage = false; } }, - getAuthChk(data) { + getAuthChk(data) { if (data != null && data != '' && data == true) { - this.isAuthChk = true; + this.isAuthChk = true; } else { - this.isAuthChk = false; - } + this.isAuthChk = false; + } }, } }; diff --git a/src/main/java/kr/co/uplus/ez/api/riskMgt/dto/ZezNumIntrcpList.java b/src/main/java/kr/co/uplus/ez/api/riskMgt/dto/ZezNumIntrcpList.java index ce92704..f158c91 100644 --- a/src/main/java/kr/co/uplus/ez/api/riskMgt/dto/ZezNumIntrcpList.java +++ b/src/main/java/kr/co/uplus/ez/api/riskMgt/dto/ZezNumIntrcpList.java @@ -23,5 +23,6 @@ public class ZezNumIntrcpList implements Serializable { private String regDt; @ApiModelProperty(example = "등록구분", name = "등록구분", dataType = "String") private String regTpCd; - + @ApiModelProperty(hidden = true) + private String userId; } \ No newline at end of file diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtController.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtController.java index e700a4a..c92d627 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtController.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtController.java @@ -12,9 +12,12 @@ import kr.co.uplus.ez.api.sendNumMgt.dto.*; import kr.co.uplus.ez.common.components.ValidComponents; import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; @@ -24,6 +27,8 @@ import java.util.Map; @RequestMapping(value = "api/v1/bo/sendNumMgt") public class SendNumMgtController { + private static final Logger logger = LoggerFactory.getLogger(SendNumMgtController.class); + @Autowired SendNumMgtService sendNumService; @@ -94,13 +99,8 @@ public class SendNumMgtController { @ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") }) @RequestMapping(value = "insertNumber", method = { RequestMethod.POST }) @ResponseBody - public InsertNumberResDto insertNumber(@RequestBody @Valid InsertNumberReqDto insertNumberReqDto, BindingResult bindingResult) { - - if (validComponents.validParameter(bindingResult)) { - return new InsertNumberResDto(ApiResponseCode.CM_PARAMETER_ERROR); - } - - return sendNumService.insertNumber(insertNumberReqDto); + public InsertNumberResDto insertNumber(@RequestPart(value = "key") InsertNumberReqDto insertNumberReqDto, MultipartHttpServletRequest multipartRequest) { + return sendNumService.insertNumber(insertNumberReqDto, multipartRequest); } /** diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java index 4dcd123..fa631ea 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java @@ -5,11 +5,13 @@ import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseMessage; import kr.co.uplus.ez.common.data.Paging; import kr.co.uplus.ez.common.utils.FileUtil; +import org.apache.commons.lang3.StringUtils; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; import java.io.File; import java.util.ArrayList; @@ -28,7 +30,8 @@ public class SendNumMgtService { @Qualifier("sqlSessionTemplateDb2") private SqlSessionTemplate sqlSessionSlave; - + @Value("${file-resource.info.sendNumber.path:/efs/admin/sendNumber/}") + private String sendNumUploadPath; /** * date : 2022. 4. 25. * auth : ckr @@ -138,145 +141,161 @@ public class SendNumMgtService { * @param paramMap * @return */ - public InsertNumberResDto insertNumber(InsertNumberReqDto insertNumberReqDto) { + public InsertNumberResDto insertNumber(InsertNumberReqDto insertNumberReqDto, MultipartHttpServletRequest multipartRequest) { FileUtil fileUtil = new FileUtil(); SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class); String adminId = insertNumberReqDto.getAdminId(); - String userSeq = sendNumMgtMapper.selectUserSeqByAdminId(adminId); + if(StringUtils.equals("01", insertNumberReqDto.getNmineeDivCd())){ + File tenureFile = (File) multipartRequest.getFile("tenureFile"); + File businessFile = (File) multipartRequest.getFile("businessFile"); + File communicationFile = (File) multipartRequest.getFile("communicationFile"); - insertNumberReqDto.setUserSeq(userSeq); - insertNumberReqDto.setReqCnt(insertNumberReqDto.getList().size()+1); - try { - // 1. EZ_SNDRNO_REG - sendNumMgtMapper.insertNumber(insertNumberReqDto); - - String path = "C:/hubeasyfiles/sndrNo/"+insertNumberReqDto.getAdminId(); - File dir = new File(path); - if(!dir.isDirectory()) { - dir.mkdirs(); - } - - for(int i=0;i list; - @ApiModelProperty(example = "등록요청번호", name = "등록요청번호", dataType = "String", hidden=true) private String regRegNo; } diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/DetailNumberReqDto.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/DetailNumberReqDto.java index ef0d5ab..9a3fb13 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/DetailNumberReqDto.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/DetailNumberReqDto.java @@ -1,18 +1,18 @@ package kr.co.uplus.ez.api.sendNumMgt.dto; -import java.io.Serializable; - import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.io.Serializable; + @SuppressWarnings("serial") @Data public class DetailNumberReqDto implements Serializable{ @ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String") - private String regNo; + private String regReqNo; - @ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String") - private String adminId; + @ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String") + private String sndrno; } diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/SendNumberInfo.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/SendNumberInfo.java index 7e0ed4a..8a59d12 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/SendNumberInfo.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/SendNumberInfo.java @@ -31,5 +31,7 @@ public class SendNumberInfo implements Serializable{ private String regTpCd; @ApiModelProperty(example = "등록일", name = "등록일", notes = "YYYY-MM-DD", dataType = "String") private String regDt; + @ApiModelProperty(example = "발신번호등록번호", name = "발신번호등록번호", dataType = "String") + private String regReqNo; } diff --git a/src/main/resources/mapper/mysql/riskMgt/riskMgt-mapper.xml b/src/main/resources/mapper/mysql/riskMgt/riskMgt-mapper.xml index 8837009..3bfed37 100644 --- a/src/main/resources/mapper/mysql/riskMgt/riskMgt-mapper.xml +++ b/src/main/resources/mapper/mysql/riskMgt/riskMgt-mapper.xml @@ -152,6 +152,7 @@ , eci.BIZRNO , er.AUTHCD_080 , er.RCVBLCKNO + , esu.USER_ID , DATE_FORMAT(er.REG_DT, '%Y-%m-%d') AS REG_DT ,( SELECT @@ -266,6 +267,7 @@ diff --git a/src/main/resources/mapper/mysql/sendNumMgt/sendNumMgt-mapper.xml b/src/main/resources/mapper/mysql/sendNumMgt/sendNumMgt-mapper.xml index 5bbc0c3..b2055dc 100644 --- a/src/main/resources/mapper/mysql/sendNumMgt/sendNumMgt-mapper.xml +++ b/src/main/resources/mapper/mysql/sendNumMgt/sendNumMgt-mapper.xml @@ -347,37 +347,76 @@ \ No newline at end of file diff --git a/src/main/resources/mapper/mysql/stats/stats-mapper.xml b/src/main/resources/mapper/mysql/stats/stats-mapper.xml index 8e45e3a..7e95b9b 100644 --- a/src/main/resources/mapper/mysql/stats/stats-mapper.xml +++ b/src/main/resources/mapper/mysql/stats/stats-mapper.xml @@ -5,253 +5,691 @@ - + SELECT + COUNT(*) AS TOTALCNT + FROM + (SELECT + SUM_YM + ,USER_SEQ + FROM ${HUBEZ_COMMON}.EZ_CUST_MSTAT + WHERE 1=1 + AND SUM_YM BETWEEN DATE_FORMAT(CONCAT(#{startMon},'01'),'%Y%m%d') AND DATE_FORMAT(CONCAT(#{endMon},'01'),'%Y%m%d') + + AND CUST_NM LIKE CONCAT('%',#{custNm},'%') + + + AND BIZRNO LIKE CONCAT('%',#{bizrno},'%') + + GROUP BY SUM_YM, USER_SEQ) A + - SELECT - ecm.SUM_YMD --- ,ecm.CUST_NM --- ,ecm.BIZRNO - , ecm.SND_CNT - , ecm.SUCC_CNT - , ecm.SUCC_RT - , S.SND_CNT AS SND_CNT_S - , S.SUCC_CNT AS SUCC_CNT_S - , S.SUCC_RT AS SUCC_RT_S - , L.SND_CNT AS SND_CNT_L - , L.SUCC_CNT AS SUCC_CNT_L - , L.SUCC_RT AS SUCC_RT_L - , M.SND_CNT AS SND_CNT_M - , M.SUCC_CNT AS SUCC_CNT_M - , M.SUCC_RT AS SUCC_RT_M - , R.SND_CNT AS SND_CNT_R - , R.SUCC_CNT AS SUCC_CNT_R - , R.SUCC_RT AS SUCC_RT_R + + + \ No newline at end of file