서비스관리 / 알림톡 템플릿관리 추가

This commit is contained in:
kimre
2022-06-20 13:50:46 +09:00
parent 1d46263735
commit 460d6e03b8
147 changed files with 10360 additions and 6618 deletions

View File

@@ -130,10 +130,10 @@ max-height: 90vh; overflow: auto;}/*스크린 height 100%를 벗어나는 긴
.popup .pop-cont {} .popup .pop-cont {}
.popup .pop-cont p {font-size: 16px; color: #666666; font-weight: 400; letter-spacing: -0.8px; line-height: 100%;} .popup .pop-cont p {font-size: 16px; color: #666666; font-weight: 400; letter-spacing: -0.8px; line-height: 100%;}
.popup .pop-cont p + p {margin-top: 10px;} .popup .pop-cont p + p {margin-top: 10px;}
.popup .pop-btn1 {display: flex; justify-content: flex-start; align-items: center; margin: 35px 0 25px;} .popup .popup-btn1 {display: flex; justify-content: flex-start; align-items: center; margin: 35px 0 25px;}
.popup .pop-btn2 {display: flex; justify-content: space-between; align-items: center; margin: 35px 0 25px;} .popup .popup-btn2 {display: flex; justify-content: space-between; align-items: center; margin: 35px 0 25px;}
.popup .pop-btn1 button {width: 49%; height: 40px; font-size: 16px; font-weight: 400; letter-spacing: -1.1px;} .popup .popup-btn1 button {width: 49%; height: 40px; font-size: 16px; font-weight: 400; letter-spacing: -1.1px;}
.popup .pop-btn2 button {width: 49%; height: 40px; font-size: 16px; font-weight: 400; letter-spacing: -1.1px;} .popup .popup-btn2 button {width: 49%; height: 40px; font-size: 16px; font-weight: 400; letter-spacing: -1.1px;}

View File

@@ -319,7 +319,7 @@ header .user_wrap .user_info .logout {
.contents { .contents {
padding: 0 4.16vw; padding: 0 4.16vw;
width: 100%; width: calc(100% - 240px);
-webkit-box-flex: 1; -webkit-box-flex: 1;
-ms-flex: 1 1 0px; -ms-flex: 1 1 0px;
flex: 1 1 0; flex: 1 1 0;
@@ -427,7 +427,7 @@ header .user_wrap .user_info .logout {
margin-left: 0; margin-left: 0;
} }
.contents .select_box { .contents .select_box{
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;
@@ -474,7 +474,7 @@ header .user_wrap .user_info .logout {
margin-top:-7px; margin-top:-7px;
} }
.contents .input_box { .contents .input_box{
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;
@@ -567,11 +567,7 @@ header .user_wrap .user_info .logout {
background: #fff url(../images/icon-calender.png) no-repeat right 6% center; background: #fff url(../images/icon-calender.png) no-repeat right 6% center;
} }
.contents .input_box.cal input + input{ .contents .input_box.cal input + input{
margin-left: 4%; margin-left: 5%;
}
.contents .input_box.cal .description{
position: absolute; margin: 10px 0 0 10px; color:#666; font-size: 13px; font-weight: 400;
} }
.contents .input_box.cal.one{ .contents .input_box.cal.one{
@@ -586,6 +582,16 @@ header .user_wrap .user_info .logout {
margin-right: 10px; margin-right: 10px;
} }
.contents .input_box.cal .term{
display: flex;
justify-content: space-around;
align-items: center;
}
.contents .input_box.cal .term input:nth-child(1){
margin-right: 4%;
}
.contents .input_box .search-box { .contents .input_box .search-box {
background: #fff url(../images/icon-search.png) no-repeat 6% center/14px auto; background: #fff url(../images/icon-search.png) no-repeat 6% center/14px auto;
padding-left: 43px; padding-left: 43px;
@@ -806,7 +812,7 @@ header .user_wrap .user_info .logout {
/*pagination*/ /*pagination*/
.contents .pagination .arrow-btn button{ .pagination .arrow-btn button{
border:none; border:none;
padding: 0 5px; padding: 0 5px;
} }
@@ -828,27 +834,37 @@ header .user_wrap .user_info .logout {
.btn-prev, .btn-next{background-position: 0px -24px;} .btn-prev, .btn-next{background-position: 0px -24px;}
.btn-prev:hover, .btn-next:hover{background-position: 0px -72px;} .btn-prev:hover, .btn-next:hover{background-position: 0px -72px;}
.contents .pagination { .pagination {
display:flex; display:flex;
justify-content: center; justify-content: center;
margin-bottom: 50px; margin-bottom: 50px;
} }
.contents .pagination ul{ .pagination ul{
display:flex; display:flex;
align-items:center; align-items:center;
} }
.contents .pagination ul li a{ .pagination ul .active a{
color:#eb008b;
text-decoration: underline;
}
.pagination ul li a{
color:#9a9a9a; color:#9a9a9a;
font-size: 14px; font-size: 14px;
padding: 0 15px; padding: 0 15px;
} }
.contents .pagination ul li a:hover{
.pagination ul li a:hover{
color:#000; color:#000;
text-decoration: underline; text-decoration: underline;
} }
.popup.popup_form .pagination{
margin-top:25px;
}
/*contents table 추가*/ /*contents table 추가*/
.contents .table table .arrow_box { .contents .table table .arrow_box {
@@ -903,16 +919,18 @@ header .user_wrap .user_info .logout {
} }
.contents .table.calculate.scroll{ .contents .table.calculate.scroll{
max-width: 1240px; width: calc(100% - 80px);
overflow: auto; overflow-x: auto;
margin: 0 auto; margin: 0 auto;
margin-bottom: 60px; margin-bottom: 60px;
padding: 0; padding: 0 0 10px 0;
} }
.contents .table.calculate.scroll div{ .contents .table.calculate.scroll table{
min-width: 1400px; min-width: 1500px;
padding-bottom: 10px; width:100%;
table-layout: fixed;
white-space: nowrap;
} }
.contents .table table .total{ .contents .table table .total{
@@ -937,6 +955,12 @@ header .user_wrap .user_info .logout {
padding-left: 10px; padding-left: 10px;
} }
.contents .table.table_form .radio .label_group label{
display: flex;
height: 30px;
align-items: center;
}
.contents .table { .contents .table {
color: #333333; color: #333333;
padding: 0 40px; padding: 0 40px;
@@ -1183,17 +1207,17 @@ header .user_wrap .user_info .logout {
margin-bottom: -1px; margin-bottom: -1px;
} }
.popup.popup_form .pop-btn2 { .popup.popup_form .popup-btn2 {
-webkit-box-pack: end; -webkit-box-pack: end;
-ms-flex-pack: end; -ms-flex-pack: end;
justify-content: flex-end; justify-content: flex-end;
} }
.popup.popup_form .pop-btn2 button { .popup.popup_form .popup-btn2 button {
width: 30%; width: 30%;
} }
.popup.popup_form .pop-btn2 button:last-child { .popup.popup_form .popup-btn2 button:last-child {
margin-left: 10px; margin-left: 10px;
} }
@@ -1402,19 +1426,19 @@ header .user_wrap .user_info .logout {
margin-top: 20px; margin-top: 20px;
} }
.popup.popup_form .pop-btn2 .download { .popup.popup_form .popup-btn2 .download {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.popup.popup_form .pop-btn2.bulk{ .popup.popup_form .popup-btn2.bulk{
justify-content: space-between; justify-content: space-between;
margin-bottom: 20px; margin-bottom: 20px;
} }
.popup.popup_form .pop-btn2.bulk button{ .popup.popup_form .popup-btn2.bulk button{
width: 49%; width: 49%;
display: flex; display: flex;
-webkit-box-pack: center; -webkit-box-pack: center;
@@ -1426,7 +1450,7 @@ header .user_wrap .user_info .logout {
font-size: 16px; font-size: 16px;
} }
.popup.popup_form .pop-btn2.bulk button:nth-child(1)::before{ .popup.popup_form .popup-btn2.bulk button:nth-child(1)::before{
content: ''; content: '';
background: url(../images/icon-f-download.png) no-repeat 0 0; background: url(../images/icon-f-download.png) no-repeat 0 0;
width: 23px; width: 23px;
@@ -1434,7 +1458,7 @@ header .user_wrap .user_info .logout {
margin: 2px 5px 0 15px; margin: 2px 5px 0 15px;
} }
.popup.popup_form .pop-btn2.bulk button:nth-child(2)::before{ .popup.popup_form .popup-btn2.bulk button:nth-child(2)::before{
content: ''; content: '';
background: url(../images/icon-f-upload.png) no-repeat 0 0; background: url(../images/icon-f-upload.png) no-repeat 0 0;
width: 23px; width: 23px;
@@ -1450,39 +1474,41 @@ header .user_wrap .user_info .logout {
} }
.popup.popup_form .attach button{ .popup.popup_form .attach button{
margin:0; margin: 0 10px 0 0;
width: 35%; width: 35%;
}
.popup.popup_form .attach .list{
width: 100%;
padding-bottom: 5px;
font-size: 16px;
} }
.popup.popup_form .attach .file{ .popup.popup_form .attach .file{
margin-left:10px; padding:0;
margin-bottom: 0;
}
.popup.popup_form .attach p:not(.file){
color: #000;
width: 100%;
}
.popup.popup_form p + p{
padding-top:5px;
} }
.popup.popup_form .file{ .popup.popup_form .file{
color: #656565; color: #656565;
margin-bottom: 18px; display: inline-flex;
align-items: center;
font-size: 14px;
padding-bottom: 5px;
}
.popup-btn2.bulk + .file{
margin-bottom: 18px;
padding-bottom: 0;
} }
.popup.popup_form .file button{ .popup.popup_form .file button{
background: #e4e4e4 url(../images/icon-delete.png) no-repeat center center; background: #e4e4e4;
width: 24px; width: 15px;
height: 24px; height: 15px;
display: inline-block;
border-radius: 50%; border-radius: 50%;
position: relative;
top: 6px;
left: 5px;
border: none; border: none;
font-size: 10px;
margin: 0 0 0 5px;
} }
.popup.popup_form.register{ .popup.popup_form.register{
@@ -1504,6 +1530,7 @@ header .user_wrap .user_info .logout {
.popup.popup_form.register .input_add div{ .popup.popup_form.register .input_add div{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width:100%;
} }
.popup.popup_form.register .input_add div input:nth-child(1){ .popup.popup_form.register .input_add div input:nth-child(1){
@@ -1650,7 +1677,21 @@ header .user_wrap .user_info .logout {
.popup.popup_form table .input_add{ .popup.popup_form table .input_add{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding: 5px 0px 5px 0px; padding: 5px 0px 5px 10px;
flex-wrap: wrap;
}
.popup.popup_form table .input_add input{
width: 85%;
}
.essential{
display: flex;
align-items: flex-start;
}
.essential span{
color:#eb008b;
padding-right: 3px;
} }
textarea{ textarea{
@@ -1668,5 +1709,32 @@ textarea:focus{
outline: 1px solid #000; outline: 1px solid #000;
} }
/*toggle*/
.contents .table table input[type="checkbox"] + label.toggle_switch { width: 72px; height: 28px; border-radius: 14px; border: 1px solid #b7b9be; background: #cecece; transition: all 0.3s; }
.contents .table table input[type="checkbox"] + label.toggle_switch:before { content:"미사용";position: absolute; display: block; width: 100%; height:100%; font-size: 14px; color:#fff; line-height: 28px; padding: 0 0 0 15px; font-family: 'SpoqaHanSansNeo', sans-serif; box-sizing: border-box; transition: all 0.3s; }
.contents .table table input[type="checkbox"] + label.toggle_switch:after { content:""; position: absolute; display: block; width:14px; height: 14px; top:50%; left: 7px; transform: translateY(-50%); background: #fff; border-radius: 100%; transition: all 0.5s; }
.contents .table table input[type="checkbox"]:checked + label.toggle_switch { border-color:#eb008b; background:#fff; }
.contents .table table input[type="checkbox"]:checked + label.toggle_switch:before { content:"사용"; color:#eb008b; padding: 0 15px 0 0; }
.contents .table table input[type="checkbox"]:checked + label.toggle_switch:after { background: #eb008b; left: 45px;}
/*datepicker*/
.datepicker{position: absolute; top: 336px; left: 381px; z-index: 1; display: block; padding: 24px 0; border: 1px solid #eceff1; background: #fff;box-shadow: 0 2px 4px 0 rgb(0 0 0 / 16%);border-radius: 5px;}
.datepicker .datepicker-head{margin-bottom: 28px;}
.datepicker .datepicker-title{text-align: center; font-size: 20px;}
.datepicker .datepicker-calender{margin: 0 30px; font-size: 12px;}
.datepicker .datepicker-calender td{padding: 7.5px; line-height: 15px;}
.datepicker .datepicker-calender td a{text-align: center; width: 15px; height: 15px; display: inline-block; color:#000;}
.datepicker .datepicker-calender tr td:last-child a{color:#5d7aff;}
.datepicker .datepicker-calender tr td:first-child a{color:#ff2e76;}
.datepicker .datepicker-head .datepicker-btn span{position: relative;}
.datepicker .datepicker-head .datepicker-prev span::after{position: absolute; left: 70px; top: 10px; content: ''; width: 10px; height: 10px; border-top: 2px solid #5f5f5f; border-right: 2px solid #5f5f5f; transform: rotate(225deg);}
.datepicker .datepicker-head .datepicker-next span::after{position: absolute; left: 185px; top: 10px; content: ''; width: 10px; height: 10px; border-top: 2px solid #5f5f5f; border-right: 2px solid #5f5f5f; transform: rotate(45deg);}
.datepicker .datepicker-calender td:hover:not(.disabled){background-color: #efefef; border-radius: 50%;}
.datepicker .datepicker-calender td:hover a{color:#000;}
.datepicker .datepicker-calender .today{background-color: #7c7c7c; border-radius: 50%;}
.datepicker .datepicker-calender .click{background-color: #eb008b; border-radius: 50%;}
.datepicker .datepicker-calender .click a, .datepicker .datepicker-calender .today a{color: #fff;}
.datepicker .datepicker-calender .disabled a{color:#c9c9c9 !important;}
/*# sourceMappingURL=style.css.map */ /*# sourceMappingURL=style.css.map */

View File

@@ -1,45 +0,0 @@
<template>
<div class="container template_free">
<article id="content" class="content"></article>
<div tabindex="0" class="layer active">
<div tabindex="0" class="layer_cont error">
<div class="layer_body">
<div class="title_wrap center mar_b50">
<h5 class="h5_title" v-html="message">{{ message }}</h5>
</div>
<div class="btn_wrap mar_t20 center">
<a v-for="(branch, index) in branchList" :key="index" href="javascript:void(0);" class="btn mid" :class="branch.class" @click="branch.callback"><span>{{ branch.text }}</span></a>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
/*
branchList: [
{
text: "저장",
class: "bd_black",
callback: callback
},
.....
]
*/
export default {
name: "buttonBranch",
props: {
message: String,
branchList: {
text: Array,
class: String,
callback: Function
}
},
data() {
return {
}
}
}
</script>

View File

@@ -1,199 +0,0 @@
<template>
<section>
<!-- <div class="emulator_wrap"> -->
<div class="inner_emul">
<strong class="blind">미리보기</strong>
<div class="emulator_area">
<div class="emulator_cont">
<div class="img_area description">
<img :src="bgImageData" v-if="bgImageData && !retrivebgFlag">
<img :src="this.bgImageUrl" v-else-if="retrivebgFlag">
<img src="@/assets/images/common/img_placeholder02.png" v-else>
</div>
<div class="rcs_profile_area">
<img :src="profileImageData" v-if="profileImageData && !retriveProfileFlag">
<img :src="this.profileImageUrl" v-else-if="retriveProfileFlag">
<img src="@/assets/images/common/img_profile_blank.png" v-else>
</div>
<strong class="rcs_brand_name">{{this.brandInfoData.name}}</strong>
<div class="rcs_icon_area">
<span
v-for="(item, index) in visibleMenuItemList"
:key="index"
class="rcs_icon"
:class="`icon_${item.code.toLowerCase()}`"
></span>
</div>
<div class="rcs_desc_area" v-html="this.brandInfoData.descr"></div>
<div class="rcs_detail_area">
<dl>
<dt>전화번호</dt>
<dd>{{this.brandInfoData.tel}}</dd>
<dt>웹사이트</dt>
<dd>{{this.brandInfoData.url}}</dd>
<dt>이메일</dt>
<dd v-if="this.brandInfoData.email === '@'"></dd>
<dd v-else>{{this.brandInfoData.email}}</dd>
<dt>주소</dt>
<dd>{{this.brandInfoData.addrRegnNo}}{{this.brandInfoData.addrMngNo}}{{this.brandInfoData.addrDtl}}</dd>
</dl>
</div>
</div>
</div>
</div>
<!-- </div> -->
</section>
</template>
<script>
// 스크립트를 정의하는 부분
// 개발자 작업 영역
//import { getImageUrl } from '@/service/code'
// [ECMA6] export default 된 부분이 외부에서 import로 사용할 수 있게 된다.
export default {
// .vue 내부에서 사용되는 model
// model 기반으로 vue는 동작된다.
props: {
brandInfoData: {
type: Object
}
},
data() {
return {
bgImageData: '',
profileImageData: '',
profileImageUrl: '',
bgImageUrl: '',
retriveProfileFlag: false,
retrivebgFlag: false
}
},
created() {
// DOM이 만들어 지기 전 실행 되는 곳
// Data를 사전에 준비할 경우 사용된다.
},
mounted() {
// DOM에 해당 .vue가 들어가게 되면 실행 되는 곳
// onload 상태와 동일하다. DOM 이후에 조작할 경우 이곳에서 수행
},
watch: {
'brandInfoData.descr'() {
this.brandInfoData.descr = this.brandInfoData.descr.replace(/\(|\)|on.*\(|eval\(|javascript/gi,'')
.split('\n')
.join('<br />')
},
'brandInfoData.profileImgFile'() {
if (this.brandInfoData.profileImgFile) {
let reader = new FileReader()
let vm = this
let file = this.brandInfoData.profileImgFile
reader.onload = e => {
vm.profileImageData = e.target.result
}
reader.readAsDataURL(file)
} else {
this.profileImageData = ''
}
},
'brandInfoData.bgImgFile'() {
if (this.brandInfoData.bgImgFile) {
let reader = new FileReader()
let vm = this
let file = this.brandInfoData.bgImgFile
reader.onload = e => {
vm.bgImageData = e.target.result
}
reader.readAsDataURL(file)
} else {
this.bgImageData = ''
}
},
'brandInfoData.profileImgFileId'() {
if (
!jglib.isEmpty(this.brandInfoData.profileImgFileId) &&
!jglib.isEmpty(this.brandInfoData.profileImgFileNo)
) {
this.retriveProfileFlag = true
let reqObj = {
fileId: this.brandInfoData.profileImgFileId,
fileNo: this.brandInfoData.profileImgFileNo
}
getImageUrl(reqObj).then(res => {
this.profileImageUrl = res.downloadUrl
})
} else {
this.retriveProfileFlag = false
this.profileImageUrl = ''
}
},
'brandInfoData.bgImgFileId'() {
if (
!jglib.isEmpty(this.brandInfoData.bgImgFileId) &&
!jglib.isEmpty(this.brandInfoData.bgImgFileNo)
) {
this.retrivebgFlag = true
let reqObj = {
fileId: this.brandInfoData.bgImgFileId,
fileNo: this.brandInfoData.bgImgFileNo
}
getImageUrl(reqObj).then(res => {
this.bgImageUrl = res.downloadUrl
})
} else {
this.retrivebgFlag = false
this.bgImageUrl = ''
}
}
},
computed: {
// 값이 자주 변경됨에 따라, 관련되어 데이터 혹은 view가 바뀌어야 할 경우 사용
// method를 바로 연결하면 tic 단위로 계속 실행되기 때문에, 값이 변경할 때만 수행되고,
// cache로 남는 computed를 활용하는 것이 성능에 좋음
visibleMenuItemList() {
if (this.brandInfoData.menuItemList) {
return this.brandInfoData.menuItemList.filter(res => {
return res.visible
})
} else {
return []
}
}
},
methods: {
// .vue 내부에서 사용되는 함수를 정의한다.
// 이벤트에 따라 실행하거나, 내부적으로 사용되는 함수들을 정의한다.
getImageUrl: function(reqData) {
if (!isUseAPI()) {
return new Promise((resolve, reject) => {
let res = {
code: '99999999',
msg: 'not available in mockup'
}
resolve(res)
})
}
return new Promise((resolve, reject) => {
request({
url: `/file/${reqData.fileId}/${reqData.fileNo}`,
method: 'get'
})
.then(res => {
let imgData = {
fileName: res.result.fileName,
downloadUrl: res.result.downloadUrl
}
resolve(imgData)
})
.catch(res => {
reject('error in filedownload')
})
})
}
}
}
</script>

View File

@@ -1,235 +0,0 @@
<template>
<div
:class="kind ? 'block' : 'hidden'"
:style="'z-index: ${zIndex};'"
v-if="visible"
class="layer mid active"
>
<div class="layer_cont">
<div class="layer_head">
<h2>{{title}}</h2>
<slot name="header"></slot>
</div>
<div class="layer_body">
<slot>
<p>{{content}}</p>
</slot>
<!--scroll style="max-height:50vh; position: relative;" :settings="scrollSettings">
</scroll-->
</div>
<div class="layer_foot">
<div class="check_wrap" v-if="checkLabel">
<span class="custom_checkbox">
<input type="checkbox" id="checkbox01" v-model="checked">
<label for="checkbox01">{{checkLabel}}</label>
</span>
</div>
<slot name="footer">
<div class="btn_wrap center" v-if="yesBtn" style="margin-bottom: 20px;">
<a href="javascript:void(0)" @click="handleWrapperClick(kind, 'yes')" class="btn mid point">
<span>{{yesBtn}}</span>
</a>
</div>
<div class="btn_wrap center" v-if="noBtn" style="margin-bottom: 20px;">
<a href="javascript:void(0)" @click="handleWrapperClick(kind)" class="btn mid point">
<span>{{noBtn}}</span>
</a>
</div>
<!-- <a href="javascript:void(0)" @click="handleWrapperClick('close')" class="btn_close">
</a> -->
</slot>
</div>
</div>
</div>
</template>
<script>
import Scroll from 'vue-custom-scrollbar'
export default {
name: 'AddressCustomPopup',
components: {
Scroll
},
props: {
visible: {
type: Boolean,
require: true,
default: false
},
title: {
type: String,
require: true
},
checkLabel: {
type: String,
require: true
},
searchProp: {
type: Boolean,
require: true,
default: false
},
kind: {
type: String,
require: true
},
content: {
type: String,
require: false
},
widths: {
type: Object,
require: false,
default() {
return {
widthLg: 'w-1/2',
widthXl: 'w-2/5'
}
}
},
zIndex: {
type: Number,
require: false,
default() {
return 99999
}
},
marginTop: {
type: String,
require: false,
default() {
return '40' // px 단위
}
},
maxHeight: {
type: String,
require: false,
default() {
return '80' // px 단위
}
},
boxPX: {
type: String,
require: false,
default() {
return 'px-4'
}
},
boxPY: {
type: String,
require: false,
default() {
return 'py-8'
}
},
uiframeBox: {
type: Boolean,
require: false,
default: true
},
yesBtn: {
type: String,
require: false
},
noBtn: {
type: String,
require: false
},
close: Function,
inBody: {
type: Boolean,
require: false,
default: false
},
visibleScroll: {
type: Boolean,
default: true
}
},
data() {
return {
contents: false,
checked: true,
scrollSettings: {
suppressScrollY: false
}
}
},
created() {
this.scrollOps();
console.log("AddressCustomPoipup >", this.visible);
},
mounted() {
if (this.inBody) {
document.body.appendChild(this.$el)
}
},
watch: {
visibleScroll() {
this.scrollOps()
}
},
methods: {
handleWrapperClick(id, callback) {
this.$emit('close', {
id: id,
ok: callback === 'yes'
})
},
scrollOps() {
this.scrollSettings.suppressScrollY = !this.visibleScroll
}
}
}
</script>
<style lang="less" scoped>
.block {
animation: fadein 0.5s;
-webkit-animation: fadein 0.5s;
-ms-animation: fadein 0.5s;
}
.height_60 {
height: 60px;
padding-top: 10px;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
margin: 0 1rem;
width: calc(100% - 2rem);
height: 1px;
background: #eff3f6;
}
}
.content_h {
height: calc(100% - 50px);
}
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-ms-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>

View File

@@ -1,332 +0,0 @@
<template>
<!-- 커스텀팝업 -->
<address-custom-popup
:visible="visible"
@close="closePopup"
kind="custom"
title="우편번호 찾기"
:noBtn="view.noBtnText"
:yesBtn="view.yesBtnText"
:zIndex="500"
boxPY="pb-5"
:visibleScroll="view.visibleScroll"
>
<template v-slot:header>
</template>
<div class="box_search_wrap" v-if="view.visibleSearch">
<div class="box_search_area">
<div class="filter_bundle_wrap">
<div class="filter_bundle">
<div class="cont_bundle full_width">
<span class="custom_input col_10" style="width: 80%">
<input type="text" placeholder="도로명 또는 건물명(아파트)을 입력해주세요"
ref="addressNm"
v-model="addressNm"
@keypress.enter="search">
</span>
<a href="javascript:void(0);" class="btn mid gray square col_2" @click="search"><span>검색</span></a>
</div>
</div>
</div>
</div>
</div>
<div class="mar_t20" v-if="!view.visibleDetails">
<!-- 검색 건수 -->
<p class="mar_t20" v-if="view.visibleTotalcount">
<span class="result_count left full_width">{{ page.totalcount }}</span>건이 검색되었습니다.
</p>
<!-- 디폴트 문구 -->
<div
class="mar_t20"
v-if="isVisibleDescription"
:class="{'line': view.visibleTotalcount}"
>
<p class="txt_17">도로명 주소와 건물번호를 함께 입력하시면 빠르게 결과를 확인하실 있습니다.</p>
<ul class="mar_t10 txt_16 text_gray2">
<li>도로명 + 건물번호 (: 송파대로 570)</li>
<li>도로명( : 강남대로, 중앙1로, 낙산1길)</li>
<li>건물명, 아파트명 (: 반포자이아파트)</li>
</ul>
</div>
<!-- 리스트 -->
<table class="tbl_row_type type3" v-if="!isVisibleDescription">
<colgroup>
<col style="width:100px;">
<col style="width:350px;">
<col style="width:auto;">
</colgroup>
<thead>
<tr>
<th>우편번호</th>
<th scope="row">도로명</th>
<th>지번</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in list" :key="`list-${index}`">
<td><a href="javascript:void(0);" @click="selectAddr(row)"> {{ row.zipCode }}</a></td>
<td><a href="javascript:void(0);" @click="selectAddr(row)"> {{ row.doroAddressNm }}</a></td>
<td><a href="javascript:void(0);" @click="selectAddr(row)"> {{ row.jibunAddressNm }}</a></td>
</tr>
</tbody>
</table>
<!-- 리스트 페이징 -->
<pagination
v-if="!isVisibleDescription"
:total="page.totalcount"
:current-page.sync="page.currentPage"
:pageSize="page.size"
rangeMax="5"
@change="changePage"
class="type2"
></pagination>
</div>
<!-- 상세주소 입력 -->
<div class="search_result" v-if="view.visibleDetails">
<table class="tbl_row_type">
<caption>
<strong>우편번호 찾기</strong>
<p>우편번호, 도로명/지번 주소</p>
</caption>
<colgroup>
<col style="width:120px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">우편번호</th>
<td>{{ selectedAddr.zipCode }}</td>
</tr>
<tr>
<th scope="row">
도로명
<br>지번
</th>
<td>
<p>{{ selectedAddr.doroAddressNm }}</p>
<p>{{ selectedAddr.jibunAddressNm }}</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="box_search_area mar_t20" v-if="view.visibleDetails">
<div class="filter_bundle_wrap">
<div class="filter_bundle">
<div class="cont_bundle full_width">
<span class="custom_input full_width" style="width: 100%"><input type="text" placeholder="상세주소를 입력해주세요" v-model="selectedAddr.detail"></span>
</div>
</div>
</div>
<a href="javascript:void(0)" @click="handleWrapperClick" class="btn_close"></a>
</div>
</address-custom-popup>
</template>
<script>
import AddressCustomPopup from './AddressCustomPopup'
import jglib from '@/utils/jglib'
import commApi from '@/common/comm-api'
import Pagination from '@/components/Pagination'
export default {
name: 'AddressPopup',
components: {
AddressCustomPopup,
jglib,
Pagination
},
props: {
visible: {
type: Boolean,
default: true
}
},
data() {
return {
view: {
visibleSearch: true,
visibleTotalcount: false,
visibleDetails: false,
noBtnText: '닫기',
yesBtnText: '',
visibleScroll: false,
pagination: true,
},
addressNm: '',
list: [],
page: {
totalcount: 0,
currentPage: 5,
size: 5
},
selectedAddr: {
doroAddressNm: '',
jibunAddressNm: '',
zipCode: '',
detail: ''
}
}
},
computed: {
isVisibleDescription() {
return parseInt(this.page.totalcount) === 0
}
},
created() {
this.toggleButton(true);
},
mounted() {},
watch: {
'view.visibleDetails'(value) {
if (value) {
this.setVisibleScroll(false)
}
},
isVisibleDescription(value) {
if (!value) {
this.$nextTick(() => {
this.setVisibleScroll(true)
})
}
}
},
methods: {
search() {
// validate
if (jglib.isEmpty(this.addressNm)) {
alert(
'도로명 또는 건물명(아파트)을 입력해주세요'
).then(() => {
this.$refs.addressNm.focus()
})
return false
}
this.view.visibleDetails = false
this.page.currentPage = 1
this.retrieveAddress()
},
retrieveAddress() {
let params = {
page: this.page.currentPage,
psize: this.page.size,
addressNm: this.addressNm
}
commApi
.getAddressList(params)
.then(response => {
var rsp = response.data
if (rsp.success) {
this.list = rsp.data
this.page.totalcount = rsp.search.totalCount
this.view.visibleTotalcount = true
if (this.page.totalcount === 0) {
this.view.visibleDescription = true
} else {
this.view.visibleDescription = false
}
}
})
.catch(err => {
alert(err.desc)
})
},
selectAddr(addr) {
Object.assign(this.selectedAddr, addr)
this.view.visibleSearch = false
this.view.visibleDetails = true
this.toggleButton(false)
},
toggleButton(isClose) {
if (isClose) {
// 닫기 버튼
this.view.noBtnText = '닫기'
this.view.yesBtnText = ''
} else {
// 확인
this.view.noBtnText = ''
this.view.yesBtnText = '확인'
}
},
closePopup(res) {
if(res.id == 'close'){
this.$emit('closeAddressPopup', false);
} else {
if (this.view.visibleDetails && jglib.isEmpty(this.selectedAddr.detail)) {
alert('상세주소를 입력해 주세요.');
} else {
if (res.ok) {
let data = {
zipNo: this.selectedAddr.zipCode,
roadFullAddr: this.selectedAddr.doroAddressNm,
detail: this.selectedAddr.detail
}
this.$emit('getData', data)
} else {
this.$emit('closeAddressPopup', false);
}
}
}
},
changePage(page) {
this.page.currentPage = page
this.retrieveAddress()
},
setVisibleScroll(flag) {
this.view.visibleScroll = flag
},
handleWrapperClick() {
this.$emit('closeAddressPopup', false);
},
}
}
</script>
<style lang="less" scoped>
.layer .search_result .address_list {
border-top: 2px solid #666;
border-bottom: 1px solid #aaa;
letter-spacing: -0.02em;
}
.layer .search_result .address_list li + li {
border-top: 1px solid #ccc;
}
.layer .search_result .address_list li a {
display: flex;
align-items: center;
}
.layer .search_result .address_list li a:hover {
color: #f5f5f5;
}
.layer .search_result .address_list li a > .address {
width: ~'calc(100% - 70px)';
padding: 15px 10px 15px 20px;
box-sizing: border-box;
}
.layer .search_result .address_list li a > .zipcode {
width: 70px;
padding: 20px 20px 20px 0;
box-sizing: border-box;
text-align: right;
}
.layer .search_result .address_list li p {
display: flex;
align-items: flex-start;
flex-wrap: wrap;
line-height: 1.5;
}
.layer .search_result .address_list li p strong.title {
width: 45px;
margin-right: 20px;
}
.layer .search_result .address_list li p span {
width: ~'calc(100% - 65px)';
font-size: 16px;
color: #666;
font-weight: normal;
font-family: 'NotoSansLight';
}
</style>

View File

@@ -1,11 +1,11 @@
import ChannelList from '../views/ChannelList' import ChannelList from '../views/ChannelList'
export default [ export default [
{ {
path: '/attractMgt/channelList', path: '/attractMgt/channelList',
component: ChannelList, component: ChannelList,
name: 'channelList', name: 'channelList',
meta: { public: true } meta: { public: true }
} }
] ]

View File

@@ -1,107 +1,107 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">유치채널 목록조회</h3> <h3 class="title">유치채널 목록조회</h3>
<p class="breadcrumb">시스템관리 &gt; 권한 관리</p> <p class="breadcrumb">시스템관리 &gt; 권한 관리</p>
</div> </div>
<div class="info"> <div class="info">
<div class="count"> <span>4</span></div> <div class="count"> <span>4</span></div>
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue add" onclick="location.href='system_right_add.html';">권한 추가</button> <button type="button" class="button blue add" onclick="location.href='system_right_add.html';">권한 추가</button>
</div> </div>
</div> </div>
<div class="table"> <div class="table">
<table> <table>
<colgroup> <colgroup>
<col width="10%"/> <col width="10%"/>
<col width="20%"/> <col width="20%"/>
<col width="20%"/> <col width="20%"/>
<col width="15%"/> <col width="15%"/>
<col width="20%"/> <col width="20%"/>
<col width="15%"/> <col width="15%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th>NO</th> <th>NO</th>
<th>코드</th> <th>코드</th>
<th>권한명</th> <th>권한명</th>
<th>상태</th> <th>상태</th>
<th>등록일</th> <th>등록일</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>4</td> <td>4</td>
<td>Admin_01</td> <td>Admin_01</td>
<td>슈퍼관리자</td> <td>슈퍼관리자</td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
<td class="two_btn_group"> <td class="two_btn_group">
<button type="button" class="button grey" onclick="location.href='system_right_modify.html';">수정</button> <button type="button" class="button grey" onclick="location.href='system_right_modify.html';">수정</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>3</td> <td>3</td>
<td>Admin_01</td> <td>Admin_01</td>
<td>슈퍼관리자</td> <td>슈퍼관리자</td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
<td class="two_btn_group"> <td class="two_btn_group">
<button type="button" class="button grey">수정</button> <button type="button" class="button grey">수정</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>2</td> <td>2</td>
<td>Admin_01</td> <td>Admin_01</td>
<td>슈퍼관리자</td> <td>슈퍼관리자</td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
<td class="two_btn_group"> <td class="two_btn_group">
<button type="button" class="button grey">수정</button> <button type="button" class="button grey">수정</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>1</td> <td>1</td>
<td>Admin_01</td> <td>Admin_01</td>
<td>슈퍼관리자</td> <td>슈퍼관리자</td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
<td class="two_btn_group"> <td class="two_btn_group">
<button type="button" class="button grey">수정</button> <button type="button" class="button grey">수정</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'channelList', name: 'channelList',
data() { data() {
return { return {
}; };
}, },
components: { components: {
}, },
destroyed() { destroyed() {
}, },
mounted() { mounted() {
}, },
methods: { methods: {
} }
}; };
</script> </script>

View File

@@ -1,12 +1,12 @@
import CalcList from '../views/CalcList' import CalcList from '../views/CalcList'
export default [ export default [
{ {
path: '/calculate/calcList', path: '/calculate/calcList',
component: CalcList, component: CalcList,
name: 'calcList', name: 'calcList',
meta: { public: true } meta: { public: true }
}, },
] ]

View File

@@ -1,165 +1,165 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">정산이력목록조회</h3> <h3 class="title">정산이력목록조회</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="right" class="label">권한</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="대리점">대리점</option> <option value="대리점">대리점</option>
<option value="운영자">운영자</option> <option value="운영자">운영자</option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="사용">사용</option> <option value="사용">사용</option>
<option value="중지">중지</option> <option value="중지">중지</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box id">
<label for="id1" class="label">ID</label> <label for="id1" class="label">ID</label>
<input type="text" id="id1" placeholder="검색어 입력"/> <input type="text" id="id1" placeholder="검색어 입력"/>
</div> </div>
<div class="input_box"> <div class="input_box">
<label for="name" class="label">이름(대리점명)</label> <label for="name" class="label">이름(대리점명)</label>
<input type="text" id="name" placeholder="검색어 입력"/> <input type="text" id="name" placeholder="검색어 입력"/>
</div> </div>
<button type="button" class="button grey">조회</button> <button type="button" class="button grey">조회</button>
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>100</span></div> <div class="count"> <span>100</span></div>
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue admin">관리자 등록</button> <button type="button" class="button blue admin">관리자 등록</button>
<button type="button" class="button blue channel">유지채널 등록</button> <button type="button" class="button blue channel">유지채널 등록</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</div> </div>
</div> </div>
<!-- <div class="table"> <!-- <div class="table">
<table> <table>
<colgroup> <colgroup>
<col width="5%"/> <col width="5%"/>
<col width="15%"/> <col width="15%"/>
<col width="15%"/> <col width="15%"/>
<col width="20%"/> <col width="20%"/>
<col width="20%"/> <col width="20%"/>
<col width="5%"/> <col width="5%"/>
<col width="20%"/> <col width="20%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> <th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th>
<th>NO</th> <th>NO</th>
<th>권한</th> <th>권한</th>
<th>이름(대리점명)</th> <th>이름(대리점명)</th>
<th>ID</th> <th>ID</th>
<th>상태</th> <th>상태</th>
<th>등록일</th> <th>등록일</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> <td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td>
<td>10</td> <td>10</td>
<td>대리점</td> <td>대리점</td>
<td>유플러스</td> <td>유플러스</td>
<td><a href="javascript:void(0)">uplus1</a></td> <td><a href="javascript:void(0)">uplus1</a></td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> --> </div> -->
<div class="table"> <div class="table">
<custom-grid <custom-grid
ref="table" ref="table"
:totalItems="'totalItems'" :totalItems="'totalItems'"
:url="testList.url" :url="testList.url"
:perPage="testList.perPage" :perPage="testList.perPage"
:initialRequest="testList.initialRequest" :initialRequest="testList.initialRequest"
:pagination="testList.pagination" :pagination="testList.pagination"
:isCheckbox="testList.isCheckbox" :isCheckbox="testList.isCheckbox"
:columns="testList.columns" :columns="testList.columns"
:noDataStr="testList.noDataStr" :noDataStr="testList.noDataStr"
:addCls="testList.addCls" :addCls="testList.addCls"
:header="testList.header" :header="testList.header"
></custom-grid> ></custom-grid>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
//import api from '../service/api'; //import api from '../service/api';
export default { export default {
name: 'calcList', name: 'calcList',
data() { data() {
return { return {
testList: { testList: {
url: '/api/v1/bo/sysMgt/adminList', url: '/api/v1/bo/sysMgt/adminList',
perPage: 20, perPage: 20,
pagination: true, pagination: true,
isCheckbox: true, isCheckbox: true,
initialRequest: false, initialRequest: false,
addCls: 'box_OFvis', addCls: 'box_OFvis',
header: [ header: [
[ [
{ header: 'NO', childNames: [] }, { header: 'NO', childNames: [] },
{ header: '권한', childNames: [] }, { header: '권한', childNames: [] },
{ header: '이름(대리점명)', childNames: [] }, { header: '이름(대리점명)', childNames: [] },
{ header: 'ID', childNames: [] }, { header: 'ID', childNames: [] },
{ header: '상태', childNames: [] }, { header: '상태', childNames: [] },
{ header: '등록일', childNames: [] } { header: '등록일', childNames: [] }
] ]
], ],
columns: [ columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 }, { name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'auth', header: '권한', align: 'left', width: 160 }, { name: 'auth', header: '권한', align: 'left', width: 160 },
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, { name: 'name', header: '이름(대리점명)', align: 'center', width: 130},
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { name: 'adminId', header: 'ID', align: 'center', width: 130},
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { name: 'adminStat', header: '상태', align: 'center', width: 130},
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { name: 'regDt', header: '등록일', width: 90, cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
// params: { // params: {
// apprResult: '', // apprResult: '',
// searchType: '', // searchType: '',
// searchText: '', // searchText: '',
// startDate: '', // startDate: '',
// endDate: '' // endDate: ''
// }, // },
excelHeader: [] excelHeader: []
} }
}; };
}, },
components: { components: {
customGrid: customGrid customGrid: customGrid
}, },
destroyed() { destroyed() {
}, },
mounted() { mounted() {
let isKeep = false; let isKeep = false;
isKeep = true; isKeep = true;
this.search(isKeep); this.search(isKeep);
}, },
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.testList.params); console.log(this.testList.params);
this.$refs.table.search(this.testList.params, isKeep); this.$refs.table.search(this.testList.params, isKeep);
}, },
} }
}; };
</script> </script>

View File

@@ -1,14 +1,14 @@
<template> <template>
<div> <!--<div>-->
<div class="dimmed modal26" @click="ModalClose();"></div> <!-- <div class="dimmed modal26" @click="ModalClose();"></div>-->
<div class="popup-wrap modal26"> <div class="popup-wrap modal26">
<div class="popup modal26"> <div class="popup modal26">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">관리자명 조회</h3> <h3 class="pop-tit">관리자명 조회</h3>
</div> </div>
<!--
<div class="pop-cont-detail input_box">--> <div class="pop-cont-detail input_box">
<div class="pop-cont-detail"> <!-- <div class="pop-cont-detail">-->
<label>ID</label> <label>ID</label>
<div class="input_search"> <div class="input_search">
<input class="search-box" type="text" placeholder="아이디 입력" v-model.trim="madangId" ref="madangId"> <input class="search-box" type="text" placeholder="아이디 입력" v-model.trim="madangId" ref="madangId">
@@ -25,7 +25,7 @@
</div> </div>
</div> <!--</div>-->
</template> </template>
<script> <script>
@@ -167,11 +167,6 @@ export default {
} }
} }
// import '../../../assets/css/layout.css?ver=02';
// import '../../../assets/css/contents.css?ver=01';
// import '../../../assets/css/common.css?ver=02';
// import '../../../assets/css/style.css';
</script> </script>

View File

@@ -7,7 +7,7 @@
}, },
{ {
"key": "serviceId", "key": "serviceId",
"name": "서비스 ID (관리자 ID)" "name": "서비스 ID"
}, },
{ {
"key": "custNm", "key": "custNm",

View File

@@ -5,7 +5,7 @@
<h3 class="title">청약고객관리</h3> <h3 class="title">청약고객관리</h3>
<p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p> <p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p>
</div> </div>
<div class="table table_form"> <div class="table table_form">
<form autocomplete="off"> <form autocomplete="off">
<table> <table>
@@ -92,7 +92,7 @@
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue add" @click="memberInsertPopOpen();">사용자 ID 생성</button> <button type="button" class="button blue add" @click="memberInsertPopOpen();">사용자 ID 생성</button>
<button type="button" class="button blue add" @click="excelPopOpen();">사용자 ID 대량생성</button> <button type="button" class="button blue add" @click="excelPopOpen();">사용자 ID 대량생성</button>
<button type="button" class="button white del" @click="memberDelete">삭제</button> <button type="button" class="button white del" @click="memberDelete();">삭제</button>
</div> </div>
</div> </div>
@@ -227,9 +227,10 @@ export default {
}, },
set(value) { set(value) {
const selected = []; const selected = [];
if (value) { if (value) {
this.list.forEach((com) => { this.list.forEach((com) => {
//var chkList = {userId :com.userId};
//console.log(chkList)
selected.push(com.userId); selected.push(com.userId);
}); });
} }
@@ -322,18 +323,18 @@ export default {
this.$refs.memoTatalListPop.memoTotalModalOpen(this.row); this.$refs.memoTatalListPop.memoTotalModalOpen(this.row);
}, },
async memberDelete(){ async memberDelete(){
// console.log(this.selected)
if(window.confirm('삭제 하시겠습니까?')){ if(window.confirm('삭제 하시겠습니까?')){
this.row.list = this.selected; var serviceId = this.adminId;
this.row.list = this.selected.map((row)=>({userId:row}));
this.row.adminId = this.adminId;
console.log(this.row); console.log(this.row);
try { try {
const response = await custMgtApi.deleteUser(this.row); let response = await custMgtApi.deleteUser(this.row);
const result = response.data; const result = response.data;
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
alert("저장 완료하였습니다.");
//alert("저장 완료하였습니다."); this.memberDetail(serviceId);
} }
} catch (error) { } catch (error) {
console.log(error); console.log(error);

View File

@@ -9,7 +9,7 @@
<div class="title">기본정보</div> <div class="title">기본정보</div>
</div> </div>
<div class="table table_form"> <div class="table table_form">
<form autocomplete="off"> <!-- <form autocomplete="off">-->
<table> <table>
<colgroup> <colgroup>
<col style="width:140px"> <col style="width:140px">
@@ -59,13 +59,13 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form> <!-- </form>-->
</div> </div>
<div class="info"> <div class="info">
<div class="title">사용정보</div> <div class="title">사용정보</div>
</div> </div>
<div class="table table_form"> <div class="table table_form">
<form autocomplete="off"> <!-- <form autocomplete="off">-->
<table> <table>
<colgroup> <colgroup>
<col style="width:140px"> <col style="width:140px">
@@ -110,7 +110,7 @@
</tbody> </tbody>
</table> </table>
</form> <!-- </form>-->
</div> </div>
<div class="info"> <div class="info">
<div class="title">사용자 데이터</div> <div class="title">사용자 데이터</div>
@@ -151,7 +151,7 @@
<td colspan="2"> <td colspan="2">
<div class="input-double button-double"> <div class="input-double button-double">
<input type="text" disabled v-model="userCnt"> <input type="text" disabled v-model="userCnt">
<button type="button" class="button grey">사용자ID 확인</button> <button type="button" class="button grey" @click="goMemberDetail">사용자ID 확인</button>
</div> </div>
</td> </td>
</tr> </tr>
@@ -169,11 +169,11 @@
<!--수정 확인 모달--> <!--수정 확인 모달-->
<validation-confirm-pop ref="validationConfirmPop"></validation-confirm-pop> <validation-confirm-pop ref="validationConfirmPop"></validation-confirm-pop>
<!--관리자명 조회 모달--> <!--관리자명 조회 모달-->
<admin-nm-pop ref="adminNmPop"></admin-nm-pop>
</div>
</div>
<admin-nm-pop ref="adminNmPop"></admin-nm-pop>
</div> </div>
</template> </template>
<script> <script>
@@ -367,11 +367,9 @@ export default {
searchIDPopOpen: function(){ searchIDPopOpen: function(){
this.$refs.adminNmPop.ModalOpen(); this.$refs.adminNmPop.ModalOpen();
}, },
searchIDCalbackFnc: function(props){ goMemberDetail: function(props){
console.log(props); console.log(this.row);
if(props.result){ this.$router.push({ name: 'memberAdminDetail', params: {serviceId : this.row.serviceId} });
this.doInsert(props.result);
}
}, },
} }
} }

View File

@@ -0,0 +1,190 @@
<template>
<!-- <div class="wrap bg-wrap"> -->
<div>
<div class="dimmed" @click="ModalClose();"></div>
<div class="popup-wrap">
<!-- 발신번호 차단 신규 등록 -->
<div class="popup modal52 popup_form">
<div class="pop-head">
<h3 class="pop-tit">발신번호 차단 신규 등록</h3>
</div>
<form autocomplete="off">
<table>
<tbody>
<tr>
<th>발신번호</th>
<td><input type="number" v-model.trim="blckSndrno" ref="blckSndrno"></td>
</tr>
<tr>
<th>발송타입</th>
<td>
<div class="select_box">
<select name="" id="" v-model.trim="sndblckTpCd" ref="sndblckTpCd">
<option v-for="(option, i) in tpType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
<!-- <option value="">문자</option>
<option value="">RCS</option> -->
</select>
</div>
</td>
</tr>
<tr>
<th>차단사유</th>
<td>
<div class="select_box">
<select name="" id="" v-model.trim="blckRsnCd" ref="blckRsnCd">
<option v-for="(option, i) in rsnType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
</select>
</div>
</td>
</tr>
<tr>
<th>메모</th>
<td class="sender"><textarea class="memo_text" v-model.trim="meno" ref="meno"></textarea></td>
</tr>
</tbody>
</table>
</form>
<div class="pop-btn2">
<button class="btn-pcolor" @click="doInsert">등록</button>
<button class="btn-default" @click="ModalClose();">취소</button>
</div>
</div>
</div>
<!-- 신규등록 - 등록 선택 -->
<div class="popup modal54">
<div class="pop-head">
<div class="pop-tit">신규등록</div>
</div>
<div class="pop-cont">
<div>작성된 내용으로 등록 하시겠습니까?</div>
</div>
<div class="pop-btn2">
<button class="btn-pcolor">확인</button>
<button class="btn-default" onclick="ModalClose();">취소</button>
</div>
</div>
</div>
</template>
<script>
import api from '@/service/api';
import riskMgtApi from '../service/riskMgtApi'
import lodash from "lodash";
export default {
data(){
return{
row: {},
rsnType: [],
tpType: [],
blckSndrno: '',
sndblckTpCd: '',
blckRsnCd: '',
meno: '',
// params: {
// 'blckSndrno' : ''
// ,'sndblckTpCd' : '01'
// ,'blckRsnCd' : '02'
// ,'meno' : ''
// }
}
},
create(){
// this.setCodeDate();
this.formReset();
},
methods :{
//모달 띄우기
ModalOpen(){
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'block';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'block';
var obj = document.getElementsByClassName('modal52');
obj[0].style.display = 'block';
this.setCodeDate();
},
// 모달 끄기
ModalClose(){
//this.formReset();
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'none';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'none';
var popup = document.getElementsByClassName('modal52');
popup[0].style.display = 'none';
},
// 저장 후 부모창 호출
toComplete(){
this.$parent.$refs.table.reloadData();
this.ModalClose();
},
async doInsert(){
if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
try {
const response = await riskMgtApi.insertIntrcp(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
alert('저장 하였습니다.');
this.toComplete();
}
} catch(err) {
console.log(err);
alert("실패 하였습니다.");
}
}
},
setCodeDate(){
// 발송타입
api.commCode({'grpCd' : 'SNDBLCK_TP_CD'}).then(response => {
this.tpType = response.data.data.list;
});
api.commCode({'grpCd' : 'SNDBLCK_RSN_CD'}).then(response => {
this.rsnType = response.data.data.list;
});
},
isNull(obj){
if(lodash.isNil(obj) || lodash.trim(obj) == ''){
return true;
}
return false;
},
doValidate(){
if(this.isNull(this.blckSndrno)){
alert("번호입력.");
this.$refs._blckSndrno.focus();
return false;
}
if(this.isNull(this.meno)){
alert('메모입력');
return false;
}
this.row.blckSndrno=this.blckSndrno;
this.row.sndblckTpCd = this.sndblckTpCd;
this.row.blckRsnCd = this.blckRsnCd;
this.row.meno=this.meno;
return true;
},
formReset(){
var type= this.insertType;
Object.assign(this.$data, this.$options.data());
this.insertType = type;
},
},
}
</script>
<style>
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;}
.popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; }
.popup-btn-wrap button:hover {background: #000; color: #fff;}
</style>

View File

@@ -0,0 +1,77 @@
<template>
<!-- 메시지 차단 신규 등록 -->
<div class="popup popup_form modal57">
<div class="pop-head">
<h3 class="pop-tit">메시지 차단 신규 등록</h3>
</div>
<form autocomplete="off">
<table>
<tbody>
<tr>
<th>차단문구</th>
<td class="input_add">
<input type="text" value="">
<button class="button white add" onclick=""></button>
</td>
</tr>
<tr>
<td colspan="2" class="registration">
<ul>
<li>
<span>도박<a href="#"><img src="./images/icon-del.png"/></a></span>
</li>
<li>
<span>광고<a href="#"><img src="./images/icon-del.png"/></a></span>
</li>
<li>
<span><a href="#"><img src="./images/icon-del.png"/></a></span>
</li>
</ul>
</td>
</tr>
<tr>
<th>조건</th>
<td>
<input type="radio" name="state" value="AND" id="popup_radio3" checked="">
<label for="popup_radio3">AND</label>
<input type="radio" name="state" value="OR" id="popup_radio4">
<label for="popup_radio4">OR</label>
</td>
</tr>
<tr>
<th>차단사유</th>
<td>
<div>
<select name="" id="">
<option value="일반">일반</option>
<option selected value="대출">대출</option>
<option value="의약품">의약품</option>
<option value="도박출">도박</option>
<option value="스미싱">스미싱</option>
<option value="기타">기타</option>
</select>
</div>
</td>
</tr>
<tr>
<th>메모</th>
<td class="sender"><textarea class="memo_text"></textarea></td>
</tr>
</tbody>
</table>
</form>
<div class="popup-btn2">
<button class="btn-pcolor">저장</button>
<button class="btn-default" onClick="ModalClose();">취소</button>
</div>
</div>
</template>
<script>
export default {
}
</script>

View File

@@ -0,0 +1,193 @@
<template>
<div>
<!-- s: 팝업 -->
<div class="dimmed modal53"></div>
<div class="popup-wrap modal53">
<!-- 발신번호 차단 수정 -->
<div class="popup modal53 popup_form">
<div class="pop-head">
<h3 class="pop-tit">발신번호 차단 수정</h3>
</div>
<form autocomplete="off">
<table>
<tbody>
<tr>
<th>발신번호</th>
<td><input type="text" v-model.trim="blckSndrno"></td>
</tr>
<tr>
<th>발송타입</th>
<td>
<div class="select_box">
<select name="" id="" v-model.trim="sndblckTpCd" ref="sndblckTpCd">
<option v-for="(option, i) in tpType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
</select>
</div>
</td>
</tr>
<tr>
<th>차단사유</th>
<td>
<div class="select_box">
<select name="" id="" v-model.trim="blckRsnCd" ref="blckRsnCd">
<option v-for="(option, i) in rsnType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
</select>
</div>
</td>
</tr>
<tr>
<th>메모</th>
<td><input type="text" value="고객사요청" v-model.trim="meno" ref="meno"></td>
</tr>
<tr>
<th>차단여부</th>
<td>
<input type="radio" name="state" value="해제" id="popup_radio1" checked="">
<label for="popup_radio1">해제</label>
<input type="radio" name="state" value="차단" id="popup_radio2">
<label for="popup_radio2">차단</label>
</td>
</tr>
</tbody>
</table>
</form>
<div class="pop-btn2 pop-btn3">
<button class="btn-pcolor" @click="IntrcpUpdateModal();">수정</button>
<button class="btn-default" @click="IntrcpDetailModalClose();">취소</button>
<button class="btn-p2color" @click="IntrcpDeleteModal()">삭제</button>
</div>
</div>
</div>
</div>
</template>
<script>
//import api from '@/service/api';
import riskMgtApi from '../service/riskMgtApi';
import api from '@/service/api';
export default {
data(){
return{
row: {},
rsnType: [],
tpType: [],
blckSndrno:'',
sndblckTpCd:'',
blckYn:'',
chgDt:'',
blckRsnCd:'',
regId: '',
meno: '',
}
},
methods :{
// 모달 띄우기
async IntrcpDetailModalOpen(props){
this.setCodeDate();
this.row.blckSndrno = props.blcksndrno;
try {
const response = await riskMgtApi.intrcpDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.blckSndrno = result.data.blcksndrno;
this.sndblckTpCd = result.data.sndblckTpCd;
this.blckYn = result.data.blckYn;
this.blckRsnCd = result.data.blckRsnCd;
this.chgDt = result.data.chgDt;
this.regId = result.data.regId;
this.meno = result.data.meno;
}
} catch(err) {
alert("실패 하였습니다.");
}
var dimmed = document.getElementsByClassName('modal53');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
}
},
setCodeDate(){
// 발송타입
api.commCode({'grpCd' : 'SNDBLCK_TP_CD'}).then(response => {
this.tpType = response.data.data.list;
});
api.commCode({'grpCd' : 'SNDBLCK_RSN_CD'}).then(response => {
this.rsnType = response.data.data.list;
});
},
IntrcpDetailModalClose(){
//this.formReset();
var dimmed = document.getElementsByClassName('modal53');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
},
async IntrcpDeleteModal(){
if(window.confirm('삭제 하시겠습니까?')){
try {
let response = await riskMgtApi.deleteIntrcp(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
alert('삭제 하였습니다.');
// grid.reloadData();
// this.$refs.table.reloadData();
this.toComplete();
}
} catch(err) {
alert("실패 하였습니다.");
}
}
},
async IntrcpUpdateModal(){
if(window.confirm('수정 하시겠습니까?')){
try {
let response = await riskMgtApi.updateIntrcp(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
alert('수정 하였습니다.');
this.toComplete();
}
} catch(err) {
alert("실패 하였습니다.");
}
}
},
// 모달 끄기
ModalClose(){
//this.formReset();
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'none';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'none';
var popup = document.getElementsByClassName('modal53');
popup[0].style.display = 'none';
},
toComplete(){
this.$parent.$refs.table.reloadData();
alert('1');
this.ModalClose();
},
}
}
</script>
<style>
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;}
.popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; }
.popup-btn-wrap button:hover {background: #000; color: #fff;}
</style>

View File

@@ -1,33 +1,33 @@
import IntrcpList from '../views/IntrcpList' import IntrcpList from '../views/IntrcpList'
import ZezNum from '../views/ZezNum' import ZezNum from '../views/ZezNum'
import Msg from '../views/Msg' import Msg from '../views/Msg'
import All from '../views/All' import All from '../views/All'
export default [ export default [
{ {
path: '/riskMgt/sendNum/intrcpList', path: '/riskMgt/sendNum/intrcpList',
component: IntrcpList, component: IntrcpList,
name: 'intrcpList', name: 'intrcpList',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/riskMgt/sendNum/zezNum', path: '/riskMgt/sendNum/zezNum',
component: ZezNum, component: ZezNum,
name: 'zezNum', name: 'zezNum',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/riskMgt/sendNum/msg', path: '/riskMgt/sendNum/msg',
component: Msg, component: Msg,
name: 'msg', name: 'msg',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/riskMgt/sendNum/all', path: '/riskMgt/sendNum/all',
component: All, component: All,
name: 'all', name: 'all',
meta: { public: true } meta: { public: true }
}, },
] ]

View File

@@ -0,0 +1,27 @@
import httpClient from '@/common/http-client'
// HUBEZ_BO_API_11004 발신번호 차단 수정
const updateIntrcp = (params) => {
return httpClient.post('/api/v1/bo/riskMgt/sendNum/updateIntrcp', params, { withCredentials: false });
}
// HUBEZ_BO_API_11004 발신번호 차단 상세 정보 조회
const intrcpDetail = (params) => {
return httpClient.post('/api/v1/bo/riskMgt/sendNum/intrcpDetail', params, { withCredentials: false });
}
// HUBEZ_BO_API_11003 발신번호 차단 신규 등록
const insertIntrcp = (params) => {
return httpClient.post('/api/v1/bo/riskMgt/sendNum/insertIntrcp', params, { withCredentials: false });
}
const deleteIntrcp = (params) => {
return httpClient.post('/api/v1/bo/riskMgt/sendNum/deleteIntrcp', params, { withCredentials: false });
}
export default {
updateIntrcp,
intrcpDetail,
insertIntrcp,
deleteIntrcp
}

View File

@@ -1,165 +1,245 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap">
<div class="top_wrap"> <div class="contents_wrap">
<h3 class="title">차단 내역 목록 조회</h3> <div class="top_wrap">
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <h3 class="title">차단내역</h3>
</div> <p class="breadcrumb">리스크관리 &gt; 차단 내역</p>
<form autocomplete="off" class="search_form"> </div>
<div class="search_wrap"> <form autocomplete="off" class="search_form">
<div class="select_box"> <div class="search_wrap">
<label for="right" class="label">권한</label> <div class="group">
<select name="" id="right"> <div class="input_box cal one">
<option value="전체">전체</option> <label for="right" class="label">발송일</label>
<option value="대리점">대리점</option> <input class="" type="text" id="" placeholder="2022-10-12">
<option value="운영자">운영자</option> </div>
</select> <button type="button" class="button grey btn-a">오늘</button>
</div> <div class="select_box id">
<div class="select_box"> <label for="right" class="label">차단사유</label>
<label for="right" class="label">상태</label> <select name="" id="" v-model="grid.params.blckRsnCd">
<select name="" id="right"> <option value="" selected>전체</option>
<option value="전체">전체</option> <option value="">일반</option>
<option value="사용">사용</option> <option value="">대출</option>
<option value="중지">중지</option> <option value="">의약품</option>
</select> <option value="">도박</option>
</div> <option value="">스미싱</option>
<div class="input_box id"> <option value="">기타</option>
<label for="id1" class="label">ID</label> </select>
<input type="text" id="id1" placeholder="검색어 입력"/> </div>
</div> <div class="select_box">
<div class="input_box"> <label for="right" class="label">차단구분</label>
<label for="name" class="label">이름(대리점명)</label> <select name="" id="" v-model="grid.params.blckTpCd">
<input type="text" id="name" placeholder="검색어 입력"/> <option value="" selected>전체</option>
</div> <option value="">발신번호차단</option>
<button type="button" class="button grey">조회</button> <option value="">메시지차단</option>
</div> <option value="">080수신번호차단</option>
</form> </select>
<div class="info"> </div>
<div class="count"> <span>100</span></div> </div>
<div class="button_group"> <div class="group">
<button type="button" class="button blue admin">관리자 등록</button> <div class="input_box">
<button type="button" class="button blue channel">유지채널 등록</button> <label for="right" class="label">발신번호</label>
<button type="button" class="button white delete">삭제</button> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.sndrno">
</div> </div>
</div> <div class="input_box">
<!-- <div class="table"> <label for="right" class="label">수신번호</label>
<table> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.rcvno">
<colgroup> </div>
<col width="5%"/> <div class="select_box">
<col width="15%"/> <label for="right" class="label">상세검색</label>
<col width="15%"/> <select name="" id="" v-model="grid.params.searchType1">
<col width="20%"/> <option value="" selected>고객사명</option>
<col width="20%"/> <option value="">사업자번호</option>
<col width="5%"/> <option value="">발송ID</option>
<col width="20%"/> </select>
</colgroup> </div>
<thead> <div class="input_box">
<tr> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1">
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> </div>
<th>NO</th> <button type="button" class="button grey" @click="search">조회</button>
<th>권한</th> </div>
<th>이름(대리점명)</th> </div>
<th>ID</th> </form>
<th>상태</th> <div class="info">
<th>등록일</th> <div class="count"> <span> {{ totalItems }} </span>
</tr> <div class="select_box NumberSe">
</thead> <select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<tbody> <option value="20">20</option>
<tr> <option value="50" selected>50</option>
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> <option value="100">100</option>
<td>10</td> </select>
<td>대리점</td> </div>
<td>유플러스</td> </div>
<td><a href="javascript:void(0)">uplus1</a></td> </div>
<td>사용</td> <div class="table">
<td>2022-03-10</td> <custom-grid
</tr> ref="table"
</tbody> :totalItems="'totalItems'"
</table> :url="grid.url"
</div> --> :pagePerRows="grid.pagePerRows"
<div class="table"> :initialRequest="grid.pagination"
<custom-grid :pagination="grid.pagination"
ref="table" :isCheckbox="grid.isCheckbox"
:totalItems="'totalItems'" :columns="grid.columns"
:url="testList.url" :noDataStr="grid.noDataStr"
:perPage="testList.perPage" :addCls="grid.addCls"
:initialRequest="testList.initialRequest" :header="grid.headder">
:pagination="testList.pagination" </custom-grid>
:isCheckbox="testList.isCheckbox" </div>
:columns="testList.columns" </div>
:noDataStr="testList.noDataStr"
:addCls="testList.addCls" </div>
:header="testList.header" </template>
></custom-grid>
</div> <script>
</div> import customGrid from '@/components/CustomGrid';
</div> //import api from '../service/api';
</template> class customBRegNo {
constructor(props) {
<script> this.props = props;
import customGrid from '@/components/CustomGrid'; const el = document.createElement('td');
//import api from '../service/api'; var bizrno = String(props.colValue);
export default { el.innerText= bizrno;
name: 'intrcpList', if(bizrno.length == 10){
data() { el.innerText= bizrno.substring(0,3)+'-'+bizrno.substring(3,5)+'-'+bizrno.substring(5,10)
return { }
testList: { this.el = el;
url: '/api/v1/bo/sysMgt/adminList', }
perPage: 20,
pagination: true, getElement() {
isCheckbox: true, return this.el;
initialRequest: false, }
addCls: 'box_OFvis',
addEvent(selEl) {
}
header: [ }
[ export default {
{ header: 'NO', childNames: [] }, name: 'intrcpList',
{ header: '권한', childNames: [] }, data() {
{ header: '이름(대리점명)', childNames: [] }, return {
{ header: 'ID', childNames: [] }, totalItems: 0,
{ header: '상태', childNames: [] }, grid: {
{ header: '등록일', childNames: [] } url: '/api/v1/bo/riskMgt/web/intrcpList',
] perPage: 20,
], pagination: true,
isCheckbox: false,
columns: [ initialRequest: false,
{ name: 'no', header: 'NO', align: 'center', width: 60 }, addCls: 'box_OFvis',
{ name: 'auth', header: '권한', align: 'left', width: 160 }, header: [
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, [
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { header: 'NO', childNames: [] },
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { header: '차단구분', childNames: [] },
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { header: '발송ID', childNames: [] },
], { header: '발신번호', childNames: [] },
noDataStr: '검색 결과가 없습니다.', { header: '고객사명', childNames: [] },
// params: { { header: '사업자번호', childNames: [] },
// apprResult: '', { header: '수신번호', childNames: [] },
// searchType: '', { header: '차단사유', childNames: [] },
// searchText: '', { header: '발송일자', childNames: [] }
// startDate: '', ]
// endDate: '' ],
// },
excelHeader: [] columns: [
} { name: 'no', header: 'NO', align: 'center', width: 60 },
}; { name: 'blckTpCd', header: '차단구분', align: 'center', width: 160 },
}, { name: 'userId', header: '발송ID', align: 'center', width: 100, renderer: {type: customBRegNo}},
components: { { name: 'sndrno', header: '발신번호', align: 'center', width: 130},
customGrid: customGrid { name: 'custNm', header: '고객사명', align: 'center', width: 130},
}, { name: 'bizrno', header: '사업자번호', align: 'center', width: 90, renderer: {type: customBRegNo} },
destroyed() { { name: 'rcvno', header: '수신번호', align: 'center', width: 90 },
{ name: 'blckRsnCd', header: '차단사유', align: 'center', width: 90 },
}, { name: 'blckDt', header: '발송일자', align: 'center', width: 90 },
mounted() {
let isKeep = false; ],
isKeep = true; noDataStr: '검색 결과가 없습니다.',
this.search(isKeep); params: {
}, blckDt: '',
methods: { blckRsnCd: '',
search: function(isKeep) { blckTpCd: '',
console.log(this.testList.params); sndrno: '',
this.$refs.table.search(this.testList.params, isKeep); rcvno: '',
}, searchType1: '',
} searchText1: ''
}; },
excelHeader: []
}
};
},
components: {
customGrid: customGrid
},
destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', {
page: 1,
perPage: 20,
params: {
blckDt: '',
blckRsnCd: '',
blckTpCd: '',
sndrno: '',
rcvno: '',
searchType1: '',
searchText1: ''
}
});
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
mounted() {
let page = 1;
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
let isKeep = false;
if(getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
isKeep = true;
}
this.search(isKeep);
},
methods: {
search: function(isKeep) {
console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: {
blckDt: '',
blckRsnCd: '',
blckTpCd: '',
sndrno: '',
rcvno: '',
searchType1: '',
searchText1: ''
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
}
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script> </script>

View File

@@ -1,165 +1,251 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">발신번호 차단 목록 조회</h3> <h3 class="title">발신번호 차단</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">리스크관리 &gt; 발신번호 차단</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="group">
<label for="right" class="label">권한</label> <div class="input_box">
<select name="" id="right"> <label for="regId" class="label">등록자</label>
<option value="전체">전체</option> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search"/>
<option value="대리점">대리점</option> </div>
<option value="운영자">운영자</option> <div class="select_box">
</select> <label for="blckRsnCd" class="label">차단사유</label>
</div> <select name="" id="blckRsnCd" v-model="grid.params.blckRsnCd" @keyup="search">
<div class="select_box"> <option value="" selected>전체</option>
<label for="right" class="label">상태</label> <option value="">일반</option>
<select name="" id="right"> <option value="">대출</option>
<option value="전체">전체</option> <option value="">의약품</option>
<option value="사용">사용</option> <option value="">도박</option>
<option value="중지">중지</option> <option value="">스미싱</option>
</select> <option value="">기타</option>
</div> </select>
<div class="input_box id"> </div>
<label for="id1" class="label">ID</label> </div>
<input type="text" id="id1" placeholder="검색어 입력"/> <div class="group">
</div> <div class="select_box">
<div class="input_box"> <label for="right" class="label">차단여부</label>
<label for="name" class="label">이름(대리점명)</label> <select name="" id="" v-model="grid.params.blckYn">
<input type="text" id="name" placeholder="검색어 입력"/> <option value="" selected>전체</option>
</div> <option value="">차단</option>
<button type="button" class="button grey">조회</button> <option value="">해제</option>
</div> </select>
</form> </div>
<div class="info"> <div class="select_box">
<div class="count"> <span>100</span></div> <label for="right" class="label">발송타입</label>
<div class="button_group"> <select name="" id="" v-model="grid.params.sndblckTpCd">
<button type="button" class="button blue admin">관리자 등록</button> <option value="" selected>전체</option>
<button type="button" class="button blue channel">유지채널 등록</button> <option value="">공용</option>
<button type="button" class="button white delete">삭제</button> <option value="">문자</option>
</div> <option value="">RCS</option>
</div> </select>
<!-- <div class="table"> </div>
<table> <div class="input_box">
<colgroup> <label for="right" class="label">발신번호</label>
<col width="5%"/> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.blcksndrno">
<col width="15%"/> </div>
<col width="15%"/> <button type="button" class="button grey" @click="search">조회</button>
<col width="20%"/> </div>
<col width="20%"/> </div>
<col width="5%"/> </form>
<col width="20%"/> <div class="info">
</colgroup> <div class="count"> <span>{{ totalItems }}</span>
<thead> <div class="select_box NumberSe">
<tr> <select name="" id="" v-model="perPageCnt" @change="changePerPage()">
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> <option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option>
<th>NO</th> </select>
<th>권한</th> </div>
<th>이름(대리점명)</th> </div>
<th>ID</th> <div class="button_group">
<th>상태</th> <button type="button" class="button blue add" @click="ModalOpen()">신규등록</button>
<th>등록일</th> </div>
</tr> </div>
</thead>
<tbody> <div class="table">
<tr> <custom-grid
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> ref="table"
<td>10</td> :totalItems="'totalItems'"
<td>대리점</td> :url="grid.url"
<td>유플러스</td> :pagePerRows="grid.pagePerRows"
<td><a href="javascript:void(0)">uplus1</a></td> :initialRequest="grid.initialRequest"
<td>사용</td> :pagination="grid.pagination"
<td>2022-03-10</td> :isCheckbox="grid.isCheckbox"
</tr> :columns="grid.columns"
</tbody> :noDataStr="grid.noDataStr"
</table> :addCls="grid.addCls"
</div> --> :header="grid.headder"
<div class="table"> ></custom-grid>
<custom-grid </div>
ref="table" <insert-intrcp-pop ref="insertIntrcpPop"> </insert-intrcp-pop>
:totalItems="'totalItems'" <intrcp-detail-popup ref="intrcpDetailPopup"></intrcp-detail-popup>
:url="testList.url" </div>
:perPage="testList.perPage" </div>
:initialRequest="testList.initialRequest" </template>
:pagination="testList.pagination"
:isCheckbox="testList.isCheckbox" <script>
:columns="testList.columns" import customGrid from '@/components/CustomGrid';
:noDataStr="testList.noDataStr" import api from '@/service/api.js';
:addCls="testList.addCls" import intrcpDetailPopup from '../components/IntrcpDetailPopup';
:header="testList.header" import insertIntrcpPop from '../components/InsertIntrcpPop';
></custom-grid> //import api from '../service/api';
</div>
</div> class CustomATagRenderer {
</div> constructor(props) {
</template> this.props = props;
const el = document.createElement('a');
<script> el.href = 'javascript:void(0);';
import customGrid from '@/components/CustomGrid'; el.className = 'btn_text';
//import api from '../service/api'; el.innerText= String(props.colValue)
export default { this.el = el;
name: 'intrcpList', }
data() {
return { getElement() {
testList: { return this.el;
url: '/api/v1/bo/sysMgt/adminList', }
perPage: 20,
pagination: true, addEvent(selEl) {
isCheckbox: true, selEl.addEventListener("click", () => {
initialRequest: false, const { callback } = this.props["cgrido" + this.props.colName].options;
addCls: 'box_OFvis', callback(this.props);
});
}
header: [ }
[
{ header: 'NO', childNames: [] }, export default {
{ header: '권한', childNames: [] }, name: 'intrcpList',
{ header: '이름(대리점명)', childNames: [] }, data() {
{ header: 'ID', childNames: [] }, return {
{ header: '상태', childNames: [] }, totalItems: 0,
{ header: '등록일', childNames: [] } perPageCnt: 50,
] options: [
], { text: '20', value: 20},
{ text: '50', value: 50},
columns: [ { text: '100', value: 100}
{ name: 'no', header: 'NO', align: 'center', width: 60 }, ],
{ name: 'auth', header: '권한', align: 'left', width: 160 }, grid: {
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, url: '/api/v1/bo/riskMgt/sendNum/intrcpList',
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, perPage: 20,
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, pagination: true,
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } isCheckbox: false,
], initialRequest: false,
noDataStr: '검색 결과가 없습니다.', addCls: 'box_OFvis',
// params: { header: [
// apprResult: '', [
// searchType: '', { header: 'NO', childNames: [] },
// searchText: '', { header: '발신번호', childNames: [] },
// startDate: '', { header: '차단여부', childNames: [] },
// endDate: '' { header: '발송타입', childNames: [] },
// }, { header: '최근수정일', childNames: [] },
excelHeader: [] { header: '차단사유', childNames: [] },
} { header: '등록자', childNames: [] }
}; ]
}, ],
components: {
customGrid: customGrid columns: [
}, { name: 'no', header: 'NO', align: 'center', width: 50 },
destroyed() { { name: 'blcksndrno', header: '발신번호', align: 'center', width: 160,
renderer: { type: CustomATagRenderer, options: { callback: this.inDetailPop} } },
}, { name: 'blckYn', header: '차단여부', align: 'center', width: 100},
mounted() { { name: 'sndblckTpCd', header: '발송타입', align: 'center', width: 100},
let isKeep = false; { name: 'lastChgDt', header: '최근수정일', align: 'center', width: 100},
isKeep = true; { name: 'blckRsnCd', header: '차단사유', width: 100, cls: 'td_line' },
this.search(isKeep); { name: 'regId', header: '등록자', width: 150 }
}, ],
methods: { noDataStr: '검색 결과가 없습니다.',
search: function(isKeep) { params: {
console.log(this.testList.params); regId: '',
this.$refs.table.search(this.testList.params, isKeep); blckRsnCd: '',
}, blckYn: '',
} sndblckTpCd: '',
}; blcksndrno: ''
</script> },
excelHeader: []
}
};
},
components: {
customGrid: customGrid,
intrcpDetailPopup,
insertIntrcpPop
},
destroyed() {
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
this.setCodeData();
// this.formReset();
},
mounted() {
let page = 1;
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
let isKeep = false;
if(getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
isKeep = true;
}
this.search(isKeep);
},
methods: {
search: function(isKeep) {
console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : "+ getCondition.perPage);
},
setCodeData() {
// 상태 옵션 셋팅.
api.commCode({'grpCd' : 'SVCUSER_STTUS_CD'}).then(response => {
this.statType = response.data.data.list;
});
//
api.commCode({'grpCd' : 'SVCUSER_TP_CD'}).then(response => {
this.userType = response.data.data.list;
});
},
ModalOpen: function(){
this.$refs.insertIntrcpPop.ModalOpen();
},
inDetailPop(props) {
this.$refs.intrcpDetailPopup.IntrcpDetailModalOpen(props);
},
// formReset(){
// var type= this.insertType;
// Object.assign(this.$data, this.$options.data());
// this.insertType = type;
// },
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script>

View File

@@ -1,165 +1,183 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">메시지 차단 목록 조회</h3> <h3 class="title">메시지 차단</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">리스크관리 &gt; 메시지 차단</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="input_box">
<label for="right" class="label">권한</label> <label for="regId" class="label">등록자</label>
<select name="" id="right"> <input class="search-box" type="text" id="regId" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search"/>
<option value="전체">전체</option> </div>
<option value="대리점">대리점</option> <div class="select_box">
<option value="운영자">운영자</option> <label for="blckRsnCd" class="label">차단사유</label>
</select> <select name="" id="blckRsnCd" v-model="grid.params.blckRsnCd" @keyup="search">
</div> <option value="" selected>전체</option>
<div class="select_box"> <option value="">일반</option>
<label for="right" class="label">상태</label> <option value="">대출</option>
<select name="" id="right"> <option value="">의약품</option>
<option value="전체">전체</option> <option value="">도박</option>
<option value="사용">사용</option> <option value="">스미싱</option>
<option value="중지">중지</option> <option value="">기타</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box">
<label for="id1" class="label">ID</label> <label for="word" class="label">차단메시지</label>
<input type="text" id="id1" placeholder="검색어 입력"/> <input class="search-box" type="text" id="word" placeholder="검색어 입력" v-model="grid.params.word" v-on:keydown.enter.prevent="search" />
</div> </div>
<div class="input_box"> <button type="button" class="button grey" @click="search">조회</button>
<label for="name" class="label">이름(대리점명)</label> </div>
<input type="text" id="name" placeholder="검색어 입력"/> </form>
</div> <div class="info">
<button type="button" class="button grey">조회</button> <div class="count"> <span> {{ totalItems}} </span>
</div> <div class="select_box NumberSe">
</form> <select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<div class="info"> <option value="20">20</option>
<div class="count"> <span>100</span></div> <option value="50" selected>50</option>
<div class="button_group"> <option value="100">100</option>
<button type="button" class="button blue admin">관리자 등록</button> </select>
<button type="button" class="button blue channel">유지채널 등록</button> </div>
<button type="button" class="button white delete">삭제</button> </div>
</div> <div class="button_group">
</div> <button type="button" class="button blue add">신규등록</button>
<!-- <div class="table"> </div>
<table> </div>
<colgroup> <div class="table">
<col width="5%"/> <custom-grid
<col width="15%"/> ref="table"
<col width="15%"/> :totalItems="'totalItems'"
<col width="20%"/> :url="grid.url"
<col width="20%"/> :perPage="grid.perPage"
<col width="5%"/> :initialRequest="grid.initialRequest"
<col width="20%"/> :pagination="grid.pagination"
</colgroup> :isCheckbox="grid.isCheckbox"
<thead> :columns="grid.columns"
<tr> :noDataStr="grid.noDataStr"
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> :addCls="grid.addCls"
<th>NO</th> :header="grid.header"
<th>권한</th> ></custom-grid>
<th>이름(대리점명)</th> </div>
<th>ID</th> </div>
<th>상태</th> </div>
<th>등록일</th> </template>
</tr>
</thead> <script>
<tbody> import customGrid from '@/components/CustomGrid';
<tr> //import api from '../service/api';
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> export default {
<td>10</td> name: 'intrcpList',
<td>대리점</td> data() {
<td>유플러스</td> return {
<td><a href="javascript:void(0)">uplus1</a></td> totalItems: 0,
<td>사용</td> // 테이블 리스트 데이터
<td>2022-03-10</td> perPageCnt: 20,
</tr> grid: {
</tbody> url: '/api/v1/bo/riskMgt/msg/intrcpList',
</table> perPage: 20,
</div> --> pagination: true,
<div class="table"> isCheckbox: true,
<custom-grid initialRequest: false,
ref="table" addCls: 'box_OFvis',
:totalItems="'totalItems'"
:url="testList.url"
:perPage="testList.perPage" header: [
:initialRequest="testList.initialRequest" [
:pagination="testList.pagination" { header: 'NO', childNames: [] },
:isCheckbox="testList.isCheckbox" { header: '차단메시지', childNames: [] },
:columns="testList.columns" { header: '차단여부', childNames: [] },
:noDataStr="testList.noDataStr" { header: '마지막 수정일', childNames: [] },
:addCls="testList.addCls" { header: '차단사유', childNames: [] },
:header="testList.header" { header: '등록자', childNames: [] }
></custom-grid> ]
</div> ],
</div>
</div> columns: [
</template> { name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'word', header: '차단메시지', align: 'center', width: 160 },
<script> { name: 'blckYn', header: '차단여부', align: 'center', width: 130},
import customGrid from '@/components/CustomGrid'; { name: 'lastChgDt', header: '마지막 수정일', align: 'center', width: 130},
//import api from '../service/api'; { name: 'blckRsnCd', header: '차단사유', align: 'center', width: 130},
export default { { name: 'regId', header: '등록자', width: 90, cls: 'td_line' }
name: 'intrcpList', ],
data() { noDataStr: '검색 결과가 없습니다.',
return { params: {
testList: { regId: '',
url: '/api/v1/bo/sysMgt/adminList', blckRsnCd: '',
perPage: 20, word: ''
pagination: true, },
isCheckbox: true, excelHeader: []
initialRequest: false, }
addCls: 'box_OFvis', };
},
components: {
header: [ customGrid: customGrid
[ },
{ header: 'NO', childNames: [] }, destroyed() {
{ header: '권한', childNames: [] }, this.$store.commit('searchcondition/updateSearchCondition', {
{ header: '이름(대리점명)', childNames: [] }, page: 1,
{ header: 'ID', childNames: [] }, perPage: 20,
{ header: '상태', childNames: [] }, params: {
{ header: '등록일', childNames: [] } regId: '',
] blckRsnCd: '',
], word: ''
}
columns: [ });
{ name: 'no', header: 'NO', align: 'center', width: 60 }, },
{ name: 'auth', header: '권한', align: 'left', width: 160 }, created(){
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, this.$store.commit("login/isLogin", true);
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, this.$store.commit("login/isAuthChk", true);
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } },
], mounted() {
noDataStr: '검색 결과가 없습니다.', let page = 1;
// params: { const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// apprResult: '',
// searchType: '', let isKeep = false;
// searchText: '', if(getCondition) {
// startDate: '', this.grid.pagePerRows = getCondition.perPage;
// endDate: '' this.grid.params = getCondition.params;
// }, page = getCondition.page;
excelHeader: [] isKeep = true;
} }
}; this.search(isKeep);
}, },
components: { methods: {
customGrid: customGrid search: function(isKeep) {
}, console.log(this.grid.params);
destroyed() { this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
}, },
mounted() { sendStoreData: function() {
let isKeep = false; const getP = this.$refs.table.getPagination();
isKeep = true; console.log("==========getP : " + getP);
this.search(isKeep); this.$store.commit('searchcondition/updateSearchCondition', {
}, page: getP._currentPage,
methods: { perPage: this.perPageCnt,
search: function(isKeep) { params: {
console.log(this.testList.params); regId: '',
this.$refs.table.search(this.testList.params, isKeep); blckRsnCd: '',
}, word: ''
} }
}; });
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
}
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script> </script>

View File

@@ -1,165 +1,191 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap">
<div class="top_wrap"> <div class="contents_wrap">
<h3 class="title">080수신번호 차단 목록 조회</h3> <div class="top_wrap">
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <h3 class="title">080 수신번호 차단</h3>
</div> <p class="breadcrumb">리스크관리 &gt; 080 수신번호 차단</p>
<form autocomplete="off" class="search_form"> </div>
<div class="search_wrap"> <form autocomplete="off" class="search_form">
<div class="select_box"> <div class="search_wrap">
<label for="right" class="label">권한</label> <div class="input_box">
<select name="" id="right"> <label for="search" class="label">고객사</label>
<option value="전체">전체</option> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.custNm"/>
<option value="대리점">대리점</option> </div>
<option value="운영자">운영자</option> <div class="input_box">
</select> <label for="search" class="label">인증코드</label>
</div> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.authcd080"/>
<div class="select_box"> </div>
<label for="right" class="label">상태</label> <div class="input_box">
<select name="" id="right"> <label for="right" class="label">수신번호</label>
<option value="전체">전체</option> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.rcvblckno"/>
<option value="사용">사용</option> </div>
<option value="중지">중지</option> <button type="button" class="button grey" @click="search">조회</button>
</select> </div>
</div> </form>
<div class="input_box id"> <div class="info">
<label for="id1" class="label">ID</label> <div class="count"> <span> {{ totalItems }} </span>
<input type="text" id="id1" placeholder="검색어 입력"/> <div class="select_box NumberSe">
</div> <select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<div class="input_box"> <option value="20">20</option>
<label for="name" class="label">이름(대리점명)</label> <option value="50" selected>50</option>
<input type="text" id="name" placeholder="검색어 입력"/> <option value="100">100</option>
</div> </select>
<button type="button" class="button grey">조회</button> </div>
</div> </div>
</form> </div>
<div class="info"> <div class="table">
<div class="count"> <span>100</span></div> <custom-grid
<div class="button_group"> ref="table"
<button type="button" class="button blue admin">관리자 등록</button> :totalItems="'totalItems'"
<button type="button" class="button blue channel">유지채널 등록</button> :url="grid.url"
<button type="button" class="button white delete">삭제</button> :pagePerRows="grid.pagePerRows"
</div> :initialRequest="grid.pagination"
</div> :pagination="grid.pagination"
<!-- <div class="table"> :isCheckbox="grid.isCheckbox"
<table> :columns="grid.columns"
<colgroup> :noDataStr="grid.noDataStr"
<col width="5%"/> :addCls="grid.addCls"
<col width="15%"/> :header="grid.headder">
<col width="15%"/> </custom-grid>
<col width="20%"/> </div>
<col width="20%"/> </div>
<col width="5%"/>
<col width="20%"/> </div>
</colgroup> </template>
<thead>
<tr> <script>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> import customGrid from '@/components/CustomGrid';
<th>NO</th> //import api from '../service/api';
<th>권한</th> class customBRegNo {
<th>이름(대리점명)</th> constructor(props) {
<th>ID</th> this.props = props;
<th>상태</th> const el = document.createElement('td');
<th>등록일</th> var bizrno = String(props.colValue);
</tr> el.innerText= bizrno;
</thead> if(bizrno.length == 10){
<tbody> el.innerText= bizrno.substring(0,3)+'-'+bizrno.substring(3,5)+'-'+bizrno.substring(5,10)
<tr> }
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> this.el = el;
<td>10</td> }
<td>대리점</td>
<td>유플러스</td> getElement() {
<td><a href="javascript:void(0)">uplus1</a></td> return this.el;
<td>사용</td> }
<td>2022-03-10</td>
</tr> addEvent(selEl) {
</tbody> }
</table> }
</div> --> export default {
<div class="table"> name: 'intrcpList',
<custom-grid data() {
ref="table" return {
:totalItems="'totalItems'" totalItems: 0,
:url="testList.url" grid: {
:perPage="testList.perPage" url: '/api/v1/bo/riskMgt/zezNum/intrcpList',
:initialRequest="testList.initialRequest" perPage: 20,
:pagination="testList.pagination" pagination: true,
:isCheckbox="testList.isCheckbox" isCheckbox: false,
:columns="testList.columns" initialRequest: false,
:noDataStr="testList.noDataStr" addCls: 'box_OFvis',
:addCls="testList.addCls" header: [
:header="testList.header" [
></custom-grid> { header: 'NO', childNames: [] },
</div> { header: '고객사', childNames: [] },
</div> { header: '사업자번호', childNames: [] },
</div> { header: '인증코드', childNames: [] },
</template> { header: '수신번호', childNames: [] },
{ header: '등록일', childNames: [] },
<script> { header: '등록구분', childNames: [] }
import customGrid from '@/components/CustomGrid'; ]
//import api from '../service/api'; ],
export default {
name: 'intrcpList', columns: [
data() { { name: 'no', header: 'NO', align: 'center', width: 60 },
return { { name: 'custNm', header: '고객사', align: 'center', width: 160 },
testList: { { name: 'bizrno', header: '사업자번호', align: 'center', width: 100, renderer: {type: customBRegNo}},
url: '/api/v1/bo/sysMgt/adminList', { name: 'authcd080', header: '인증코드', align: 'center', width: 130},
perPage: 20, { name: 'rcvblckno', header: '수신번호', align: 'center', width: 130},
pagination: true, { name: 'regDt', header: '등록일', align: 'center', width: 130},
isCheckbox: true, { name: 'regTpCd', header: '등록구분', width: 90, cls: 'td_line' }
initialRequest: false, ],
addCls: 'box_OFvis', noDataStr: '검색 결과가 없습니다.',
params: {
regTpCd: '',
header: [ authcd080: '',
[ rcvblckno: ''
{ header: 'NO', childNames: [] }, },
{ header: '권한', childNames: [] }, excelHeader: []
{ header: '이름(대리점명)', childNames: [] }, }
{ header: 'ID', childNames: [] }, };
{ header: '상태', childNames: [] }, },
{ header: '등록일', childNames: [] } components: {
] customGrid: customGrid
], },
destroyed() {
columns: [ this.$store.commit('searchcondition/updateSearchCondition', {
{ name: 'no', header: 'NO', align: 'center', width: 60 }, page: 1,
{ name: 'auth', header: '권한', align: 'left', width: 160 }, perPage: 20,
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, params: {
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, regTpCd: '',
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, authcd080: '',
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } rcvblckno: ''
], }
noDataStr: '검색 결과가 없습니다.', });
// params: { },
// apprResult: '', created(){
// searchType: '', this.$store.commit("login/isLogin", true);
// searchText: '', this.$store.commit("login/isAuthChk", true);
// startDate: '', const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// endDate: '' },
// }, mounted() {
excelHeader: [] let page = 1;
} const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
};
}, let isKeep = false;
components: { if(getCondition) {
customGrid: customGrid this.grid.pagePerRows = getCondition.perPage;
}, this.grid.params = getCondition.params;
destroyed() { page = getCondition.page;
isKeep = true;
}, }
mounted() { this.search(isKeep);
let isKeep = false; },
isKeep = true; methods: {
this.search(isKeep); search: function(isKeep) {
}, console.log(this.grid.params);
methods: { this.$refs.table.search(this.grid.params, isKeep);
search: function(isKeep) { this.sendStoreData();
console.log(this.testList.params); },
this.$refs.table.search(this.testList.params, isKeep); sendStoreData: function() {
}, const getP = this.$refs.table.getPagination();
} console.log("==========getP : " + getP);
}; this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: {
regTpCd: '',
authcd080: '',
rcvblckno: ''
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
}
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script> </script>

View File

@@ -1,26 +1,26 @@
import ProfileList from '../views/ProfileList' import ProfileList from '../views/ProfileList'
import NumberList from '../views/NumberList' import NumberList from '../views/NumberList'
import ApprList from '../views/ApprList' import ApprList from '../views/ApprList'
export default [ export default [
{ {
path: '/sendNumMgt/profileList', path: '/sendNumMgt/profileList',
component: ProfileList, component: ProfileList,
name: 'profileList', name: 'profileList',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/sendNumMgt/numberList', path: '/sendNumMgt/numberList',
component: NumberList, component: NumberList,
name: 'numberList', name: 'numberList',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/sendNumMgt/apprList', path: '/sendNumMgt/apprList',
component: ApprList, component: ApprList,
name: 'apprList', name: 'apprList',
meta: { public: true } meta: { public: true }
}, },
] ]

View File

@@ -1,165 +1,165 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">발신번호 승인 목록 조회</h3> <h3 class="title">발신번호 승인 목록 조회</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="right" class="label">권한</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="대리점">대리점</option> <option value="대리점">대리점</option>
<option value="운영자">운영자</option> <option value="운영자">운영자</option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="사용">사용</option> <option value="사용">사용</option>
<option value="중지">중지</option> <option value="중지">중지</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box id">
<label for="id1" class="label">ID</label> <label for="id1" class="label">ID</label>
<input type="text" id="id1" placeholder="검색어 입력"/> <input type="text" id="id1" placeholder="검색어 입력"/>
</div> </div>
<div class="input_box"> <div class="input_box">
<label for="name" class="label">이름(대리점명)</label> <label for="name" class="label">이름(대리점명)</label>
<input type="text" id="name" placeholder="검색어 입력"/> <input type="text" id="name" placeholder="검색어 입력"/>
</div> </div>
<button type="button" class="button grey">조회</button> <button type="button" class="button grey">조회</button>
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>100</span></div> <div class="count"> <span>100</span></div>
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue admin">관리자 등록</button> <button type="button" class="button blue admin">관리자 등록</button>
<button type="button" class="button blue channel">유지채널 등록</button> <button type="button" class="button blue channel">유지채널 등록</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</div> </div>
</div> </div>
<!-- <div class="table"> <!-- <div class="table">
<table> <table>
<colgroup> <colgroup>
<col width="5%"/> <col width="5%"/>
<col width="15%"/> <col width="15%"/>
<col width="15%"/> <col width="15%"/>
<col width="20%"/> <col width="20%"/>
<col width="20%"/> <col width="20%"/>
<col width="5%"/> <col width="5%"/>
<col width="20%"/> <col width="20%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> <th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th>
<th>NO</th> <th>NO</th>
<th>권한</th> <th>권한</th>
<th>이름(대리점명)</th> <th>이름(대리점명)</th>
<th>ID</th> <th>ID</th>
<th>상태</th> <th>상태</th>
<th>등록일</th> <th>등록일</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> <td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td>
<td>10</td> <td>10</td>
<td>대리점</td> <td>대리점</td>
<td>유플러스</td> <td>유플러스</td>
<td><a href="javascript:void(0)">uplus1</a></td> <td><a href="javascript:void(0)">uplus1</a></td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> --> </div> -->
<div class="table"> <div class="table">
<custom-grid <custom-grid
ref="table" ref="table"
:totalItems="'totalItems'" :totalItems="'totalItems'"
:url="testList.url" :url="testList.url"
:perPage="testList.perPage" :perPage="testList.perPage"
:initialRequest="testList.initialRequest" :initialRequest="testList.initialRequest"
:pagination="testList.pagination" :pagination="testList.pagination"
:isCheckbox="testList.isCheckbox" :isCheckbox="testList.isCheckbox"
:columns="testList.columns" :columns="testList.columns"
:noDataStr="testList.noDataStr" :noDataStr="testList.noDataStr"
:addCls="testList.addCls" :addCls="testList.addCls"
:header="testList.header" :header="testList.header"
></custom-grid> ></custom-grid>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
//import api from '../service/api'; //import api from '../service/api';
export default { export default {
name: 'profileList', name: 'profileList',
data() { data() {
return { return {
testList: { testList: {
url: '/api/v1/bo/sysMgt/adminList', url: '/api/v1/bo/sysMgt/adminList',
perPage: 20, perPage: 20,
pagination: true, pagination: true,
isCheckbox: true, isCheckbox: true,
initialRequest: false, initialRequest: false,
addCls: 'box_OFvis', addCls: 'box_OFvis',
header: [ header: [
[ [
{ header: 'NO', childNames: [] }, { header: 'NO', childNames: [] },
{ header: '권한', childNames: [] }, { header: '권한', childNames: [] },
{ header: '이름(대리점명)', childNames: [] }, { header: '이름(대리점명)', childNames: [] },
{ header: 'ID', childNames: [] }, { header: 'ID', childNames: [] },
{ header: '상태', childNames: [] }, { header: '상태', childNames: [] },
{ header: '등록일', childNames: [] } { header: '등록일', childNames: [] }
] ]
], ],
columns: [ columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 }, { name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'auth', header: '권한', align: 'left', width: 160 }, { name: 'auth', header: '권한', align: 'left', width: 160 },
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, { name: 'name', header: '이름(대리점명)', align: 'center', width: 130},
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { name: 'adminId', header: 'ID', align: 'center', width: 130},
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { name: 'adminStat', header: '상태', align: 'center', width: 130},
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { name: 'regDt', header: '등록일', width: 90, cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
// params: { // params: {
// apprResult: '', // apprResult: '',
// searchType: '', // searchType: '',
// searchText: '', // searchText: '',
// startDate: '', // startDate: '',
// endDate: '' // endDate: ''
// }, // },
excelHeader: [] excelHeader: []
} }
}; };
}, },
components: { components: {
customGrid: customGrid customGrid: customGrid
}, },
destroyed() { destroyed() {
}, },
mounted() { mounted() {
let isKeep = false; let isKeep = false;
isKeep = true; isKeep = true;
this.search(isKeep); this.search(isKeep);
}, },
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.testList.params); console.log(this.testList.params);
this.$refs.table.search(this.testList.params, isKeep); this.$refs.table.search(this.testList.params, isKeep);
}, },
} }
}; };
</script> </script>

View File

@@ -1,165 +1,229 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">문자 발신 번호 목록 조회</h3> <h3 class="title">문자 발신 번호 목록 조회</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">발신번호관리 &gt; 문자 발신 번호 목록 조회</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="group">
<label for="right" class="label">권한</label> <div class="select_box">
<select name="" id="right"> <label for="right" class="label">승인상태</label>
<option value="전체">전체</option> <select name="" id="sttusCd" v-model="grid.params.searchType1" @keyup.enter="search">
<option value="대리점">대리점</option> <option value="">전체</option>
<option value="운영자">운영자</option> <option value="01">승인대기</option>
</select> <option value="02">승인완료</option>
</div> <option value="03">반려</option>
<div class="select_box"> </select>
<label for="right" class="label">상태</label> </div>
<select name="" id="right"> <div class="select_box">
<option value="전체">전체</option> <label for="right" class="label">명의자 구분</label>
<option value="사용">사용</option> <select name="" id="nmineeDivCd" v-model="grid.params.searchType2" @keyup.enter="search">
<option value="중지">중지</option> <option value="">전체</option>
</select> <option value="01">사업자</option>
</div> <option value="02">타사업자</option>
<div class="input_box id"> </select>
<label for="id1" class="label">ID</label> </div>
<input type="text" id="id1" placeholder="검색어 입력"/> <div class="select_box">
</div> <label for="right" class="label">인입채널</label>
<div class="input_box"> <select name="" id="inchDivCd" v-model="grid.params.searchType3" @keyup.enter="search">
<label for="name" class="label">이름(대리점명)</label> <option value="">전체</option>
<input type="text" id="name" placeholder="검색어 입력"/> <option value="01">홈페이지</option>
</div> <option value="02">어드민</option>
<button type="button" class="button grey">조회</button> </select>
</div> </div>
</form> <div class="select_box id">
<div class="info"> <label for="right" class="label">상세검색</label>
<div class="count"> <span>100</span></div> <select name="" id="category" v-model="grid.params.searchType4" @keyup.enter="search">
<div class="button_group"> <option value="bregNo">사업자번호</option>
<button type="button" class="button blue admin">관리자 등록</button> <option selected value="regNo">발신번호</option>
<button type="button" class="button blue channel">유지채널 등록</button> <option value="custNm">고객사명</option>
<button type="button" class="button white delete">삭제</button> </select>
</div> </div>
</div> <div class="input_box">
<!-- <div class="table"> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1" v-on:keydown.enter.prevent="search"/>
<table> </div>
<colgroup> <button type="button" class="button grey" @click="search">조회</button>
<col width="5%"/> </div>
<col width="15%"/> </div>
<col width="15%"/> </form>
<col width="20%"/> <div class="info">
<col width="20%"/> <div class="count"> <span>{{ totalItems }}</span>
<col width="5%"/> <div class="select_box NumberSe">
<col width="20%"/> <select name="" id="perPage" v-model="grid.pagePerRows" @keyup.enter="search">
</colgroup> <option value="20" selected>20</option>
<thead> <option value="50" >50</option>
<tr> <option value="100">100</option>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> </select>
<th>NO</th> </div>
<th>권한</th> </div>
<th>이름(대리점명)</th> <div class="button_group">
<th>ID</th> <button type="button" class="button blue add" @click="numberRegPopOpen();">등록</button>
<th>상태</th> <button type="button" class="button white del">삭제</button>
<th>등록일</th> </div>
</tr> </div>
</thead> <div class="table">
<tbody> <custom-grid
<tr> ref="table"
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> :totalItems="'totalItems'"
<td>10</td> :url="grid.url"
<td>대리점</td> :pagePerRows="grid.pagePerRows"
<td>유플러스</td> :initialRequest="grid.initialRequest"
<td><a href="javascript:void(0)">uplus1</a></td> :pagination="grid.pagination"
<td>사용</td> :isCheckbox="grid.isCheckbox"
<td>2022-03-10</td> :columns="grid.columns"
</tr> :noDataStr="grid.noDataStr"
</tbody> :addCls="grid.addCls"
</table> :header="grid.headder"
</div> --> ></custom-grid>
<div class="table"> </div>
<custom-grid <!-- <number-reg-pop ref="numberRegPop"> </number-reg-pop> -->
ref="table" </div>
:totalItems="'totalItems'" </div>
:url="testList.url" </template>
:perPage="testList.perPage"
:initialRequest="testList.initialRequest" <script>
:pagination="testList.pagination" import customGrid from '@/components/CustomGrid';
:isCheckbox="testList.isCheckbox" // import NumberRegPop from '../components/NumberRegPop';
:columns="testList.columns" export default {
:noDataStr="testList.noDataStr" name: 'numberList',
:addCls="testList.addCls" data() {
:header="testList.header" return {
></custom-grid> row: {},
</div> authType: [],
</div> statType: [],
</div> cate2Code: "",
</template> totalItems: 0,
// 테이블 리스트 데이터
<script> perPageCnt: 20,
import customGrid from '@/components/CustomGrid'; grid: {
//import api from '../service/api'; url: '/api/v1/bo/sendNumMgt/numberList',
export default { perPage: 20,
name: 'profileList', pagination: true,
data() { isCheckbox: true,
return { initialRequest: false,
testList: { addCls: 'box_OFvis',
url: '/api/v1/bo/sysMgt/adminList', header: [
perPage: 20, [
pagination: true, { header: 'NO', childNames: [] },
isCheckbox: true, { header: '고객사명', childNames: [] },
initialRequest: false, { header: '관리자ID', childNames: [] },
addCls: 'box_OFvis', { header: '등록자ID', childNames: [] },
{ header: '사업자번호', childNames: [] },
{ header: '명의자 구분', childNames: [] },
header: [ { header: '인입채널', childNames: [] },
[ { header: '발신번호', childNames: [] },
{ header: 'NO', childNames: [] }, { header: '승인상태', childNames: [] },
{ header: '권한', childNames: [] }, { header: '등록일자', childNames: [] }
{ header: '이름(대리점명)', childNames: [] }, ]
{ header: 'ID', childNames: [] }, ],
{ header: '상태', childNames: [] },
{ header: '등록일', childNames: [] } columns: [
] { name: 'no', header: 'NO', align: 'center', width: 50 },
], { name: 'custNm', header: '고객사명', align: 'left', width: 50 },
{ name: 'adminId', header: '관리자ID', align: 'left', width: 100 },
columns: [ { name: 'register', header: '등록자ID', align: 'left', width: 100 },
{ name: 'no', header: 'NO', align: 'center', width: 60 }, { name: 'bRegNo', header: '사업자번호', align: 'center', width: 100},
{ name: 'auth', header: '권한', align: 'left', width: 160 }, { name: 'nmineeDivCd', header: '명의자 구분', align: 'center', width: 100},
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, { name: 'inchDivCd', header: '인입채널', align: 'center', width: 100},
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { name: 'regNo', header: '발신번호', align: 'center', width: 100},
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { name: 'sttusCd', header: '승인상태', align: 'center', width: 100},
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { name: 'regDt', header: '등록일', width: 100, cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
// params: { params: {
// apprResult: '', searchType1: '',
// searchType: '', searchType2: '',
// searchText: '', searchType3: '',
// startDate: '', searchType4: '',
// endDate: '' searchText1: '',
// }, pagePerRows: '',
excelHeader: [] page: ''
} },
}; excelHeader: []
}, }
components: { };
customGrid: customGrid },
}, components: {
destroyed() { customGrid: customGrid,
// NumberRegPop
}, },
mounted() { created(){
let isKeep = false; this.$store.commit("login/isLogin", true);
isKeep = true; this.$store.commit("login/isAuthChk", true);
this.search(isKeep); const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
}, },
methods: { destroyed() {
search: function(isKeep) { this.$store.commit('searchcondition/updateSearchCondition', {
console.log(this.testList.params); page: 1,
this.$refs.table.search(this.testList.params, isKeep); perPage: 20,
}, params: {
} searchType1: '',
}; searchType2: '',
searchType3: '',
searchType4: '',
searchText1: '',
pagePerRows: '',
page: ''}
});
},
mounted() {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
if (getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
isKeep = true;
}
this.search(isKeep);
},
methods: {
search: function(isKeep) {
console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: {
searchType1: '',
searchType2: '',
searchType3: '',
searchType4: '',
searchText1: '',
pagePerRows: '',
page: ''
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
numberRegPopOpen: function(){
this.$refs.numberRegPop.ModalOpen();
},
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script> </script>

View File

@@ -1,165 +1,208 @@
<template> <template>
<div class="wrap main_wrap">
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">발신 프로필 목록 조회</h3> <h3 class="title">발신프로필관리</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">발신번호관리 &gt; 발신프로필관리</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="stat" class="label">상태</label>
<select name="" id="right"> <select name="" id="stat" v-model="grid.params.searchType1" @keyup="search">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="대리점">대리점</option> <option value="A">사용</option>
<option value="운영자">운영자</option> <option value="N">미사용</option>
</select> <option value="H">휴면</option>
</div> <option value="D">삭제</option>
<div class="select_box"> </select>
<label for="right" class="label">상태</label> </div>
<select name="" id="right"> <div class="select_box id">
<option value="전체">전체</option> <label for="searchType" class="label">상세검색</label>
<option value="사용">사용</option> <select name="" id="searchType" v-model="grid.params.searchType2" @keyup="search">
<option value="중지">중지</option> <option value="custNm">고객사명</option>
</select> <option value="bregNo">사업자번호</option>
</div> <option value="sendProfile">발신프로필</option>
<div class="input_box id"> </select>
<label for="id1" class="label">ID</label> </div>
<input type="text" id="id1" placeholder="검색어 입력"/> <div class="input_box id">
</div> <label for="search" class="label">검색어</label>
<div class="input_box"> <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1" v-on:keydown.enter.prevent="search" />
<label for="name" class="label">이름(대리점명)</label> </div>
<input type="text" id="name" placeholder="검색어 입력"/> <button type="button" class="button grey" @click="search">조회</button>
</div> </div>
<button type="button" class="button grey">조회</button> </form>
</div> <div class="info">
</form> <div class="count"> <span> {{ totalItems}} </span>
<div class="info"> <div class="select_box NumberSe">
<div class="count"> <span>100</span></div> <select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<div class="button_group"> <option value="20">20</option>
<button type="button" class="button blue admin">관리자 등록</button> <option value="50" selected>50</option>
<button type="button" class="button blue channel">유지채널 등록</button> <option value="100">100</option>
<button type="button" class="button white delete">삭제</button> </select>
</div> </div>
</div> </div>
<!-- <div class="table"> </div>
<table> <div class="table">
<colgroup> <custom-grid
<col width="5%"/> ref="table"
<col width="15%"/> :totalItems="'totalItems'"
<col width="15%"/> :url="grid.url"
<col width="20%"/> :pagePerRows="grid.pagePerRows"
<col width="20%"/> :initialRequest="grid.pagination"
<col width="5%"/> :pagination="grid.pagination"
<col width="20%"/> :isCheckbox="grid.isCheckbox"
</colgroup> :columns="grid.columns"
<thead> :noDataStr="grid.noDataStr"
<tr> :addCls="grid.addCls"
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> :header="grid.headder">
<th>NO</th> </custom-grid>
<th>권한</th> </div>
<th>이름(대리점명)</th> </div>
<th>ID</th> </div>
<th>상태</th> </div>
<th>등록일</th> </template>
</tr>
</thead> <script>
<tbody> import customGrid from '@/components/CustomGrid';
<tr> //import api from '../service/api';
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> class customBRegNo {
<td>10</td> constructor(props) {
<td>대리점</td> this.props = props;
<td>유플러스</td> const el = document.createElement('td');
<td><a href="javascript:void(0)">uplus1</a></td> var bregNo = String(props.colValue);
<td>사용</td> el.innerText= bregNo;
<td>2022-03-10</td> if(bregNo.length == 10){
</tr> el.innerText= bregNo.substring(0,3)+'-'+bregNo.substring(3,5)+'-'+bregNo.substring(5,10)
</tbody> }
</table> this.el = el;
</div> --> }
<div class="table">
<custom-grid getElement() {
ref="table" return this.el;
:totalItems="'totalItems'" }
:url="testList.url"
:perPage="testList.perPage" addEvent(selEl) {
:initialRequest="testList.initialRequest" }
:pagination="testList.pagination" }
:isCheckbox="testList.isCheckbox" export default {
:columns="testList.columns" name: 'profileList',
:noDataStr="testList.noDataStr" data() {
:addCls="testList.addCls" return {
:header="testList.header" row: {},
></custom-grid> authType: [],
</div> statType: [],
</div> cate2Code: "",
</div> totalItems: 0,
</template> // 테이블 리스트 데이터
perPageCnt: 20,
<script> grid: {
import customGrid from '@/components/CustomGrid'; url: '/api/v1/bo/sendNumMgt/profileList',
//import api from '../service/api'; perPage: 20,
export default { pagination: true,
name: 'profileList', isCheckbox: false,
data() { initialRequest: false,
return { addCls: 'box_OFvis',
testList: { header: [
url: '/api/v1/bo/sysMgt/adminList', [
perPage: 20, { header: 'NO', childNames: [] },
pagination: true, { header: '고객사명', childNames: [] },
isCheckbox: true, { header: '사업자번호', childNames: [] },
initialRequest: false, { header: '발신프로필', childNames: [] },
addCls: 'box_OFvis', { header: '발신프로필key', childNames: [] },
{ header: '상태', childNames: [] },
{ header: '등록일', childNames: [] },
header: [ ]
[ ],
{ header: 'NO', childNames: [] },
{ header: '권한', childNames: [] }, columns: [
{ header: '이름(대리점명)', childNames: [] }, { name: 'no', header: 'NO', align: 'center', width: 50 },
{ header: 'ID', childNames: [] }, { name: 'custNm', header: '고객사명', align: 'center', width: 200 },
{ header: '상태', childNames: [] }, { name: 'bregNo', header: '사업자번호', align: 'center', width: 100, renderer: {type: customBRegNo}},
{ header: '등록일', childNames: [] } { name: 'sendProfile', header: '발신프로필', align: 'center', width: 100},
] { name: 'sendProfileKey', header: '발신프로필key', align: 'center', width: 100},
], { name: 'stat', header: '상태', width: 100, cls: 'td_line' },
{ name: 'regDt', header: '등록일', align: 'center', width: 150},
columns: [ ],
{ name: 'no', header: 'NO', align: 'center', width: 60 }, noDataStr: '검색 결과가 없습니다.',
{ name: 'auth', header: '권한', align: 'left', width: 160 }, params: {
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, searchType1: '',
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, searchType2: 'custNm',
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, searchText1: ''
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } },
], excelHeader: []
noDataStr: '검색 결과가 없습니다.', }
// params: { };
// apprResult: '', },
// searchType: '', components: {
// searchText: '', customGrid: customGrid,
// startDate: '', },
// endDate: '' destroyed() {
// }, this.$store.commit('searchcondition/updateSearchCondition', {
excelHeader: [] page: 1,
} perPage: 20,
}; params: {
}, searchType1: '',
components: { searchType2: '',
customGrid: customGrid searchText1: ''
}, }
destroyed() { });
},
}, created(){
mounted() { this.$store.commit("login/isLogin", true);
let isKeep = false; this.$store.commit("login/istAuthChk", true);
isKeep = true; const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
this.search(isKeep); },
},
methods: { mounted() {
search: function(isKeep) { let page = 1;
console.log(this.testList.params); const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
this.$refs.table.search(this.testList.params, isKeep);
}, let isKeep = false;
} if(getCondition) {
}; this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
isKeep = true;
}
this.search(isKeep);
},
methods: {
search: function(isKeep) {
console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: {
searchType1: '',
searchType2: '',
searchText1: ''
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
}
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script> </script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,433 +1,433 @@
<template> <template>
<article id="content" class="content"> <article id="content" class="content">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="home"> <li class="home">
<a href="javascript:void(0);"></a> <a href="javascript:void(0);"></a>
</li> </li>
<li> <li>
<a href="javascript:void(0);">발송통계</a> <a href="javascript:void(0);">발송통계</a>
</li> </li>
<li> <li>
<span>상품별통계</span> <span>상품별통계</span>
</li> </li>
</ul> </ul>
<div class="title_area"> <div class="title_area">
<h2>상품별통계</h2> <h2>상품별통계</h2>
</div> </div>
<div class="tab_wrap"> <div class="tab_wrap">
<ul class="tab_nav"> <ul class="tab_nav">
<li class="active"> <li class="active">
<a href="javascript:void(0);" :style="isAdmin ? '' : 'cursor:default'">상품별통계</a> <a href="javascript:void(0);" :style="isAdmin ? '' : 'cursor:default'">상품별통계</a>
</li> </li>
<li> <li>
<a <a
href="javascript:void(0);" href="javascript:void(0);"
@click="isAdmin ? toMove('tmpltStatics') : ''" @click="isAdmin ? toMove('tmpltStatics') : ''"
:style="isAdmin ? '' : 'cursor:default'" :style="isAdmin ? '' : 'cursor:default'"
>포맷ID별통계</a> >포맷ID별통계</a>
</li> </li>
<li> <li>
<a href="javascript:void(0);" @click="toMove('userStatics')">사용자별통계</a> <a href="javascript:void(0);" @click="toMove('userStatics')">사용자별통계</a>
</li> </li>
<li> <li>
<a href="javascript:void(0);" @click="toMove('campaignStatics')">캠페인ID별통계</a> <a href="javascript:void(0);" @click="toMove('campaignStatics')">캠페인ID별통계</a>
</li> </li>
</ul> </ul>
</div> </div>
<div class="box_search_area"> <div class="box_search_area">
<div class="filter_bundle_wrap"> <div class="filter_bundle_wrap">
<div class="filter_bundle"> <div class="filter_bundle">
<strong class="tit_bundle">발송일</strong> <strong class="tit_bundle">발송일</strong>
<div class="cont_bundle center"> <div class="cont_bundle center">
<div class="box_select_period"> <div class="box_select_period">
<div class="period_wrap"> <div class="period_wrap">
<span class="custom_input icon_date"> <span class="custom_input icon_date">
<vuejs-datepicker <vuejs-datepicker
:language="ko" :language="ko"
:format="customFormatter" :format="customFormatter"
:disabled-dates="disabledSDate" :disabled-dates="disabledSDate"
:minimumView="sDateDiv" :minimumView="sDateDiv"
:maximumView="sDateDiv" :maximumView="sDateDiv"
v-model="startDate" v-model="startDate"
@selected="selectedStartDate(0)" @selected="selectedStartDate(0)"
@closed="closeDate('start')" @closed="closeDate('start')"
></vuejs-datepicker> ></vuejs-datepicker>
</span> </span>
<span class="hypen">~</span> <span class="hypen">~</span>
<span class="custom_input icon_date"> <span class="custom_input icon_date">
<vuejs-datepicker <vuejs-datepicker
:language="ko" :language="ko"
:format="customFormatter" :format="customFormatter"
:disabled-dates="disabledEDate" :disabled-dates="disabledEDate"
:minimumView="sDateDiv" :minimumView="sDateDiv"
:maximumView="sDateDiv" :maximumView="sDateDiv"
v-model="endDate" v-model="endDate"
@selected="selectedEndDate(0)" @selected="selectedEndDate(0)"
@closed="closeDate('end')" @closed="closeDate('end')"
></vuejs-datepicker> ></vuejs-datepicker>
</span> </span>
</div> </div>
<div class="radio_wrap"> <div class="radio_wrap">
<span class="custom_radio"> <span class="custom_radio">
<input <input
type="radio" type="radio"
name="radioDate" name="radioDate"
id="day" id="day"
v-model="sDateDiv" v-model="sDateDiv"
value="day" value="day"
checked checked
> >
<label for="day">일별</label> <label for="day">일별</label>
</span> </span>
<span class="custom_radio"> <span class="custom_radio">
<input type="radio" name="radioDate" id="month" v-model="sDateDiv" value="month"> <input type="radio" name="radioDate" id="month" v-model="sDateDiv" value="month">
<label for="month">월별</label> <label for="month">월별</label>
</span> </span>
<span class="custom_radio"> <span class="custom_radio">
<input type="radio" name="radioDate" id="year" v-model="sDateDiv" value="year"> <input type="radio" name="radioDate" id="year" v-model="sDateDiv" value="year">
<label for="year">년별</label> <label for="year">년별</label>
</span> </span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- end of filter_bundle_wrap --> <!-- end of filter_bundle_wrap -->
<div class="btn_wrap center"> <div class="btn_wrap center">
<a href="javascript:void(0);" class="btn mid point" @click="searchSummary"> <a href="javascript:void(0);" class="btn mid point" @click="searchSummary">
<span>조회</span> <span>조회</span>
</a> </a>
</div> </div>
</div> </div>
<!-- end of box_search_area --> <!-- end of box_search_area -->
<div class="cont_flex_bundle bottom mar_b20"> <div class="cont_flex_bundle bottom mar_b20">
<div class="result_date left col_6"> <div class="result_date left col_6">
<span> <span>
<em class="date">{{ customFormatter(startDate) }}</em> 부터 <em class="date">{{ customFormatter(startDate) }}</em> 부터
<em class="date">{{ customFormatter(endDate) }}</em>까지의 전송/성공/성공률 입니다. <em class="date">{{ customFormatter(endDate) }}</em>까지의 전송/성공/성공률 입니다.
</span> </span>
</div> </div>
<div class="btn_wrap right col_6"> <div class="btn_wrap right col_6">
<a href="javascript:void(0)" class="btn sml bd_gray icon_down_doc" @click="excelDown()"> <a href="javascript:void(0)" class="btn sml bd_gray icon_down_doc" @click="excelDown()">
<span>엑셀 다운로드</span> <span>엑셀 다운로드</span>
</a> </a>
</div> </div>
</div> </div>
<custom-grid <custom-grid
ref="table" ref="table"
:url="grid.url" :url="grid.url"
:perPage="grid.perPage" :perPage="grid.perPage"
:pagination="grid.pagination" :pagination="grid.pagination"
:header="grid.header" :header="grid.header"
:columns="grid.columns" :columns="grid.columns"
:noDataStr="grid.noDataStr" :noDataStr="grid.noDataStr"
:initialRequest="grid.initialRequest" :initialRequest="grid.initialRequest"
:addBodyAlign="grid.addAlign" :addBodyAlign="grid.addAlign"
:addBodyTmplt="grid.summary" :addBodyTmplt="grid.summary"
></custom-grid> ></custom-grid>
</article> </article>
</template> </template>
<script> <script>
import moment from 'moment'; import moment from 'moment';
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
import api from '../service/api'; import api from '../service/api';
import xlsx from '@/common/excel'; import xlsx from '@/common/excel';
export default { export default {
name: 'staticsList', name: 'staticsList',
data() { data() {
return { return {
ko: vdp_translation_ko.js, ko: vdp_translation_ko.js,
bbsCategoryType: 'PROD', bbsCategoryType: 'PROD',
sDateDiv: 'day', sDateDiv: 'day',
startDate: new Date(), startDate: new Date(),
endDate: new Date(), endDate: new Date(),
disabledSDate: { from: new Date() }, disabledSDate: { from: new Date() },
disabledEDate: { from: new Date() }, disabledEDate: { from: new Date() },
isAdmin: true, isAdmin: true,
grid: { grid: {
url: '/api/statics/list', url: '/api/statics/list',
initialRequest: false, initialRequest: false,
pagination: true, pagination: true,
perPage: 10, perPage: 10,
header: [ header: [
[ [
{ header: 'NO', childNames: [] }, { header: 'NO', childNames: [] },
{ header: '날짜', childNames: [] }, { header: '날짜', childNames: [] },
{ header: '스타일 템플릿', childNames: ['cellTmpltTot', 'cellTmpltRateStr'] }, { header: '스타일 템플릿', childNames: ['cellTmpltTot', 'cellTmpltRateStr'] },
{ header: '서술 템플릿', childNames: ['descTmpltTot', 'descTmpltRateStr'] }, { header: '서술 템플릿', childNames: ['descTmpltTot', 'descTmpltRateStr'] },
{ header: '기본 템플릿', childNames: ['freeTmpltTot', 'freeTmpltRateStr'] }, { header: '기본 템플릿', childNames: ['freeTmpltTot', 'freeTmpltRateStr'] },
{ header: '템플릿 소계', childNames: ['subSumTmpltTot', 'subSumTmpltRateStr'] }, { header: '템플릿 소계', childNames: ['subSumTmpltTot', 'subSumTmpltRateStr'] },
{ header: 'RCS SMS', childNames: ['smsTot', 'smsRateStr'] }, { header: 'RCS SMS', childNames: ['smsTot', 'smsRateStr'] },
{ header: 'RCS LMS', childNames: ['lmsTot', 'lmsRateStr'] }, { header: 'RCS LMS', childNames: ['lmsTot', 'lmsRateStr'] },
{ header: 'RCS MMS', childNames: ['mmsTot', 'mmsRateStr'] }, { header: 'RCS MMS', childNames: ['mmsTot', 'mmsRateStr'] },
{ header: '포맷 소계', childNames: ['formatTot', 'formatRateStr'] }, { header: '포맷 소계', childNames: ['formatTot', 'formatRateStr'] },
{ header: 'Fallback SMS', childNames: ['fbSmsTot', 'fbSmsRateStr'] }, { header: 'Fallback SMS', childNames: ['fbSmsTot', 'fbSmsRateStr'] },
{ header: 'Fallback LMS', childNames: ['fbLmsTot', 'fbLmsRateStr'] } { header: 'Fallback LMS', childNames: ['fbLmsTot', 'fbLmsRateStr'] }
] ]
], ],
columns: [ columns: [
{ name: 'seq', header: 'NO', width: 100 }, { name: 'seq', header: 'NO', width: 100 },
{ name: 'ymd', header: '날짜', width: 100 }, { name: 'ymd', header: '날짜', width: 100 },
{ name: 'cellTmpltTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'cellTmpltTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'cellTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'cellTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'descTmpltTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'descTmpltTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'descTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'descTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'freeTmpltTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'freeTmpltTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'freeTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'freeTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'subSumTmpltTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'subSumTmpltTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'subSumTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'subSumTmpltRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'smsTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'smsTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'smsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'smsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'lmsTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'lmsTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'lmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'lmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'mmsTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'mmsTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'mmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'mmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'formatTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'formatTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'formatRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'formatRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'fbSmsTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'fbSmsTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'fbSmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }, { name: 'fbSmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' },
{ name: 'fbLmsTot', header: '발송', width: 90, cls: 'td_line' }, { name: 'fbLmsTot', header: '발송', width: 90, cls: 'td_line' },
{ name: 'fbLmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' } { name: 'fbLmsRateStr', header: '성공<br>(성공률)', width: 90, cls: 'td_line' }
], ],
summary: '', summary: '',
addAlign: '', addAlign: '',
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
params: {}, params: {},
excelHeader: [] excelHeader: []
} }
}; };
}, },
created() { created() {
api.selectUserRoleInfo().then(response => { api.selectUserRoleInfo().then(response => {
const respList = response.data.data; const respList = response.data.data;
if (response.data.success && respList != null && respList.length > 0) { if (response.data.success && respList != null && respList.length > 0) {
let adminStr = respList[0].selIsAdmin; let adminStr = respList[0].selIsAdmin;
if (typeof adminStr != undefined && adminStr != null && adminStr == 'false') { if (typeof adminStr != undefined && adminStr != null && adminStr == 'false') {
this.isAdmin = false; this.isAdmin = false;
} }
} else { } else {
this.isAdmin = true; this.isAdmin = true;
} }
}); });
this.getExcelHeader(); this.getExcelHeader();
}, },
mounted() { mounted() {
// 합계 조회 // 합계 조회
this.searchSummary(); this.searchSummary();
}, },
components: { components: {
'vuejs-datepicker': vuejsDatepicker, 'vuejs-datepicker': vuejsDatepicker,
customGrid: customGrid customGrid: customGrid
}, },
methods: { methods: {
getExcelHeader() { getExcelHeader() {
// 헤더를 mockup으로 관리한다. // 헤더를 mockup으로 관리한다.
api.getExcelHeader(this.bbsCategoryType).then(res => { api.getExcelHeader(this.bbsCategoryType).then(res => {
this.excelHeader = res; this.excelHeader = res;
}); });
}, },
customFormatter: function(date) { customFormatter: function(date) {
if (this.sDateDiv == 'month') { if (this.sDateDiv == 'month') {
return moment(date).format('YYYY-MM'); return moment(date).format('YYYY-MM');
} else if (this.sDateDiv == 'year') { } else if (this.sDateDiv == 'year') {
return moment(date).format('YYYY'); return moment(date).format('YYYY');
} else { } else {
return moment(date).format('YYYY-MM-DD'); return moment(date).format('YYYY-MM-DD');
} }
}, },
toPage(lifeCycle) { toPage(lifeCycle) {
const page = this.isNull(this.$route.params.page) ? 1 : this.$route.params.page; const page = this.isNull(this.$route.params.page) ? 1 : this.$route.params.page;
try { try {
this.$refs.table.readData(page, this.grid.params); this.$refs.table.readData(page, this.grid.params);
} catch (error) { } catch (error) {
console.log(lifeCycle, error); console.log(lifeCycle, error);
} }
}, },
toMove(routeName) { toMove(routeName) {
this.$router.push({ name: routeName, params: { page: 1, searchText: '' } }); this.$router.push({ name: routeName, params: { page: 1, searchText: '' } });
}, },
search: function(data) { search: function(data) {
this.grid.params = { this.grid.params = {
sDate: moment(this.startDate).format('YYYYMMDD'), sDate: moment(this.startDate).format('YYYYMMDD'),
eDate: moment(this.endDate).format('YYYYMMDD'), eDate: moment(this.endDate).format('YYYYMMDD'),
dateDiv: this.sDateDiv dateDiv: this.sDateDiv
}; };
this.$refs.table.search(this.grid.params); this.$refs.table.search(this.grid.params);
}, },
searchSummary: function(data) { searchSummary: function(data) {
let summaryList = {}; let summaryList = {};
this.grid.params = { this.grid.params = {
sDate: moment(this.startDate).format('YYYYMMDD'), sDate: moment(this.startDate).format('YYYYMMDD'),
eDate: moment(this.endDate).format('YYYYMMDD'), eDate: moment(this.endDate).format('YYYYMMDD'),
dateDiv: this.sDateDiv dateDiv: this.sDateDiv
}; };
api api
.selectStaticsSummary(this.grid.params) .selectStaticsSummary(this.grid.params)
.then(response => { .then(response => {
const respList = response.data.data; const respList = response.data.data;
if (response.data.success && respList != null && respList.length > 0) { if (response.data.success && respList != null && respList.length > 0) {
summaryList = respList[0]; summaryList = respList[0];
this.grid.addAlign = 'TOP'; this.grid.addAlign = 'TOP';
let addBody = ''; let addBody = '';
addBody += '<tr>'; addBody += '<tr>';
addBody += '<td colspan="2">합계</td>'; addBody += '<td colspan="2">합계</td>';
addBody += '<td>' + summaryList.cellTmpltTot + '</td>'; addBody += '<td>' + summaryList.cellTmpltTot + '</td>';
addBody += '<td>' + summaryList.cellTmpltSucc + '<br>(' + summaryList.cellTmpltRate + '%)</td>'; addBody += '<td>' + summaryList.cellTmpltSucc + '<br>(' + summaryList.cellTmpltRate + '%)</td>';
addBody += '<td>' + summaryList.descTmpltTot + '</td>'; addBody += '<td>' + summaryList.descTmpltTot + '</td>';
addBody += '<td>' + summaryList.descTmpltSucc + '<br>(' + summaryList.descTmpltRate + '%)</td>'; addBody += '<td>' + summaryList.descTmpltSucc + '<br>(' + summaryList.descTmpltRate + '%)</td>';
addBody += '<td>' + summaryList.freeTmpltTot + '</td>'; addBody += '<td>' + summaryList.freeTmpltTot + '</td>';
addBody += '<td>' + summaryList.freeTmpltSucc + '<br>(' + summaryList.freeTmpltRate + '%)</td>'; addBody += '<td>' + summaryList.freeTmpltSucc + '<br>(' + summaryList.freeTmpltRate + '%)</td>';
addBody += '<td>' + summaryList.subSumTmpltTot + '</td>'; addBody += '<td>' + summaryList.subSumTmpltTot + '</td>';
addBody += '<td>' + summaryList.subSumTmpltSucc + '<br>(' + summaryList.subSumTmpltRate + '%)</td>'; addBody += '<td>' + summaryList.subSumTmpltSucc + '<br>(' + summaryList.subSumTmpltRate + '%)</td>';
addBody += '<td>' + summaryList.smsTot + '</td>'; addBody += '<td>' + summaryList.smsTot + '</td>';
addBody += '<td>' + summaryList.smsSucc + '<br>(' + summaryList.smsRate + '%)</td>'; addBody += '<td>' + summaryList.smsSucc + '<br>(' + summaryList.smsRate + '%)</td>';
addBody += '<td>' + summaryList.lmsTot + '</td>'; addBody += '<td>' + summaryList.lmsTot + '</td>';
addBody += '<td>' + summaryList.lmsSucc + '<br>(' + summaryList.lmsRate + '%)</td>'; addBody += '<td>' + summaryList.lmsSucc + '<br>(' + summaryList.lmsRate + '%)</td>';
addBody += '<td>' + summaryList.mmsTot + '</td>'; addBody += '<td>' + summaryList.mmsTot + '</td>';
addBody += '<td>' + summaryList.mmsSucc + '<br>(' + summaryList.mmsRate + '%)</td>'; addBody += '<td>' + summaryList.mmsSucc + '<br>(' + summaryList.mmsRate + '%)</td>';
addBody += '<td>' + summaryList.formatTot + '</td>'; addBody += '<td>' + summaryList.formatTot + '</td>';
addBody += '<td>' + summaryList.formatSucc + '<br>(' + summaryList.formatRate + '%)</td>'; addBody += '<td>' + summaryList.formatSucc + '<br>(' + summaryList.formatRate + '%)</td>';
addBody += '<td>' + summaryList.fbSmsTot + '</td>'; addBody += '<td>' + summaryList.fbSmsTot + '</td>';
addBody += '<td>' + summaryList.fbSmsSucc + '<br>(' + summaryList.fbSmsRate + '%)</td>'; addBody += '<td>' + summaryList.fbSmsSucc + '<br>(' + summaryList.fbSmsRate + '%)</td>';
addBody += '<td>' + summaryList.fbLmsTot + '</td>'; addBody += '<td>' + summaryList.fbLmsTot + '</td>';
addBody += '<td>' + summaryList.fbLmsSucc + '<br>(' + summaryList.fbLmsRate + '%)</td>'; addBody += '<td>' + summaryList.fbLmsSucc + '<br>(' + summaryList.fbLmsRate + '%)</td>';
addBody += '</tr>'; addBody += '</tr>';
this.grid.summary = addBody; this.grid.summary = addBody;
} else { } else {
this.grid.addAlign = ''; this.grid.addAlign = '';
this.grid.summary = ''; this.grid.summary = '';
} }
}) })
.finally(() => { .finally(() => {
this.search(); this.search();
}); });
}, },
selectedStartDate(day) { selectedStartDate(day) {
if (this.startDate > this.endDate) { if (this.startDate > this.endDate) {
this.startDate = this.endDate; this.startDate = this.endDate;
} }
}, },
selectedEndDate(day) { selectedEndDate(day) {
if (day != undefined && day != null) { if (day != undefined && day != null) {
this.periodDay = day; this.periodDay = day;
} }
}, },
closeDate(type) { closeDate(type) {
if (type != undefined && type != null) { if (type != undefined && type != null) {
if (type == 'start') { if (type == 'start') {
this.disabledSDate = { from: this.endDate }; this.disabledSDate = { from: this.endDate };
this.disabledEDate = { to: this.startDate, from: this.endDate }; this.disabledEDate = { to: this.startDate, from: this.endDate };
} else if (type == 'end') { } else if (type == 'end') {
this.disabledSDate = { from: this.endDate }; this.disabledSDate = { from: this.endDate };
this.disabledEDate = { to: this.startDate, from: new Date() }; this.disabledEDate = { to: this.startDate, from: new Date() };
} }
} }
}, },
async getExcelDataDown() { async getExcelDataDown() {
try { try {
let response; let response;
const params = { const params = {
startDtXls: moment(this.startDate).format('YYYYMMDD'), startDtXls: moment(this.startDate).format('YYYYMMDD'),
endDtXls: moment(this.endDate).format('YYYYMMDD'), endDtXls: moment(this.endDate).format('YYYYMMDD'),
sDate: this.startDate, sDate: this.startDate,
eDate: this.endDate, eDate: this.endDate,
dateDiv: this.sDateDiv dateDiv: this.sDateDiv
}; };
response = await api.selectStaticsXls(params); response = await api.selectStaticsXls(params);
const result = response.data; const result = response.data;
if (result != null && result.success) { if (result != null && result.success) {
if (!this.isNull(result.data)) { if (!this.isNull(result.data)) {
return result.data; return result.data;
} }
} }
return false; return false;
} catch (err) { } catch (err) {
return false; return false;
} }
}, // end of getExcelDataDown }, // end of getExcelDataDown
async getExcelSumData() { async getExcelSumData() {
// let sumBody = ''; // let sumBody = '';
try { try {
let response = await api.selectStaticsSummary(this.grid.params); let response = await api.selectStaticsSummary(this.grid.params);
const result = response.data; const result = response.data;
if (result != null && result.success) { if (result != null && result.success) {
if (!this.isNull(result.data)) { if (!this.isNull(result.data)) {
return result.data; return result.data;
} }
} }
return false; return false;
} catch (err) { } catch (err) {
return false; return false;
} }
}, },
async excelDown() { async excelDown() {
if (this.$refs.table.getData().length <= 0) { if (this.$refs.table.getData().length <= 0) {
alert('조회된 데이터가 없습니다.'); alert('조회된 데이터가 없습니다.');
return false; return false;
} }
let today = moment().format('YYYYMMDDHHmmss'); let today = moment().format('YYYYMMDDHHmmss');
const saveFileName = `상품별통계_${today}.xlsx`; const saveFileName = `상품별통계_${today}.xlsx`;
const data = await this.getExcelDataDown(); const data = await this.getExcelDataDown();
const sumData = await this.getExcelSumData(); const sumData = await this.getExcelSumData();
let options = { let options = {
header: this.excelHeader, header: this.excelHeader,
summary: { summary: {
isUse: true, isUse: true,
position: 'first', position: 'first',
data: sumData, data: sumData,
title: { replaceKeys: ['seq', 'ymd'], name: '합계' } title: { replaceKeys: ['seq', 'ymd'], name: '합계' }
}, },
dataOrder: 'header' // header, data, ['no', 'sendnum', 'errorDesc'] dataOrder: 'header' // header, data, ['no', 'sendnum', 'errorDesc']
}; };
xlsx.export(data, saveFileName, options).then(() => {}); xlsx.export(data, saveFileName, options).then(() => {});
} }
} }
}; };
</script> </script>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +1,33 @@
import StaticsList from "../components/StaticsList"; import StaticsList from "../components/StaticsList";
import TmpltStatics from "../components/TmpltStaticsList"; import TmpltStatics from "../components/TmpltStaticsList";
import UserStatics from "../components/UserStaticsList"; import UserStatics from "../components/UserStaticsList";
import CampaignStaticsList from "../components/CampaignStaticsList"; import CampaignStaticsList from "../components/CampaignStaticsList";
export default [ export default [
{ {
// //
path: '/view/stat/prod', path: '/view/stat/prod',
name: 'staticsList', name: 'staticsList',
component: StaticsList, component: StaticsList,
}, },
{ {
// //
path: '/view/stat/tmplt', path: '/view/stat/tmplt',
name: 'tmpltStatics', name: 'tmpltStatics',
component: TmpltStatics, component: TmpltStatics,
}, },
{ {
// //
path: '/view/stat/usr', path: '/view/stat/usr',
name: 'userStatics', name: 'userStatics',
component: UserStatics, component: UserStatics,
}, },
{ {
// //
path: '/view/stat/camp', path: '/view/stat/camp',
name: 'campaignStatics', name: 'campaignStatics',
component: CampaignStaticsList, component: CampaignStaticsList,
}, },
] ]

View File

@@ -1,147 +1,147 @@
import httpClient from '@/common/http-client'; import httpClient from '@/common/http-client';
import prodExcelHeader from './mock/prodExcelHeader'; import prodExcelHeader from './mock/prodExcelHeader';
import tmplExcelHeader from './mock/tmplExcelHeader'; import tmplExcelHeader from './mock/tmplExcelHeader';
import userExcelHeader from './mock/userExcelHeader'; import userExcelHeader from './mock/userExcelHeader';
import campExcelHeader from './mock/campExcelHeader'; import campExcelHeader from './mock/campExcelHeader';
//import lodash from "lodash"; //import lodash from "lodash";
const selectStatics = params => { const selectStatics = params => {
return httpClient.get('/api/statics/list'); return httpClient.get('/api/statics/list');
}; };
const selectStaticsSummary = params => { const selectStaticsSummary = params => {
return httpClient.get('/api/statics/list/summary', { return httpClient.get('/api/statics/list/summary', {
params: { dateDiv: params.dateDiv, sDate: params.sDate, eDate: params.eDate } params: { dateDiv: params.dateDiv, sDate: params.sDate, eDate: params.eDate }
}); });
}; };
const selectStaticsXls = params => { const selectStaticsXls = params => {
return httpClient.post('/api/statics/xls/list', params); return httpClient.post('/api/statics/xls/list', params);
}; };
const selectTmpltlist = params => { const selectTmpltlist = params => {
return httpClient.get('/api/statics/tmpltList'); return httpClient.get('/api/statics/tmpltList');
}; };
const selectTmpltXlslist = params => { const selectTmpltXlslist = params => {
return httpClient.post('/api/statics/tmpltList/xls/list', params); return httpClient.post('/api/statics/tmpltList/xls/list', params);
}; };
const selectTmpltSummary = params => { const selectTmpltSummary = params => {
return httpClient.get('/api/statics/tmpltList/summary', { return httpClient.get('/api/statics/tmpltList/summary', {
params: { params: {
dateDiv: params.dateDiv, dateDiv: params.dateDiv,
sDate: params.sDate, sDate: params.sDate,
eDate: params.eDate, eDate: params.eDate,
searchProdCd: params.searchProdCd, searchProdCd: params.searchProdCd,
searchMsgbaseId: params.searchMsgbaseId searchMsgbaseId: params.searchMsgbaseId
// searchProdCd: params.searchProdCd != undefined ? params.searchProdCd : null, // searchProdCd: params.searchProdCd != undefined ? params.searchProdCd : null,
// searchMsgbaseId: params.searchMsgbaseId != undefined ? params.searchMsgbaseId : null // searchMsgbaseId: params.searchMsgbaseId != undefined ? params.searchMsgbaseId : null
} }
}); });
}; };
const selectUserlist = params => { const selectUserlist = params => {
return httpClient.get('/api/statics/userList'); return httpClient.get('/api/statics/userList');
}; };
const selectUserXlslist = params => { const selectUserXlslist = params => {
return httpClient.post('/api/statics/userList/xls/list', params); return httpClient.post('/api/statics/userList/xls/list', params);
}; };
const selectUserSummary = params => { const selectUserSummary = params => {
return httpClient.get('/api/statics/userList/summary', { return httpClient.get('/api/statics/userList/summary', {
params: { params: {
dateDiv: params.dateDiv, dateDiv: params.dateDiv,
sDate: params.sDate, sDate: params.sDate,
eDate: params.eDate, eDate: params.eDate,
searchDeptNm: params.searchDeptNm, searchDeptNm: params.searchDeptNm,
searchUserId: params.searchUserId searchUserId: params.searchUserId
} }
}); });
}; };
const selectCampXlslist = params => { const selectCampXlslist = params => {
return httpClient.post('/api/statics/campList/xls/list', params); return httpClient.post('/api/statics/campList/xls/list', params);
}; };
const selectCampSummary = params => { const selectCampSummary = params => {
return httpClient.get('/api/statics/campList/summary', { return httpClient.get('/api/statics/campList/summary', {
params: { params: {
dateDiv: params.dateDiv, dateDiv: params.dateDiv,
sDate: params.sDate, sDate: params.sDate,
eDate: params.eDate, eDate: params.eDate,
searchCampId: params.searchCampId searchCampId: params.searchCampId
} }
}); });
}; };
const selectCodeProdList = codeGrp => { const selectCodeProdList = codeGrp => {
// ES6에서는 key와 value가 같을경우. get은 아래와 같이 가능. // ES6에서는 key와 value가 같을경우. get은 아래와 같이 가능.
return httpClient.get('/api/statics/code/list', { params: { codeGrp } }); return httpClient.get('/api/statics/code/list', { params: { codeGrp } });
}; };
const selectMsgbaseIdList = searchProdCd => { const selectMsgbaseIdList = searchProdCd => {
//console.log("api selectMsgbaseIdList productcode : " + searchProdCd); //console.log("api selectMsgbaseIdList productcode : " + searchProdCd);
return httpClient.get('/api/statics/msgbaseid/list', { params: { searchProdCd } }); return httpClient.get('/api/statics/msgbaseid/list', { params: { searchProdCd } });
}; };
const selectDeptNmList = () => { const selectDeptNmList = () => {
return httpClient.get('/api/statics/deptNm/list'); return httpClient.get('/api/statics/deptNm/list');
}; };
const selectUserRoleInfo = () => { const selectUserRoleInfo = () => {
return httpClient.get('/api/statics/userId/roleId'); return httpClient.get('/api/statics/userId/roleId');
}; };
const selectUserIdList = searchDeptNm => { const selectUserIdList = searchDeptNm => {
//console.log("api selectUserIdList searchDeptNm : " + searchDeptNm); //console.log("api selectUserIdList searchDeptNm : " + searchDeptNm);
return httpClient.get('/api/statics/userId/list', { params: { searchDeptNm } }); return httpClient.get('/api/statics/userId/list', { params: { searchDeptNm } });
}; };
const getExcelHeader = category => { const getExcelHeader = category => {
// 엑셀에 출력할 Header 정보를 Mockup 데이터로 관리한다. // 엑셀에 출력할 Header 정보를 Mockup 데이터로 관리한다.
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
let header = []; let header = [];
switch (category) { switch (category) {
case 'TMPL': case 'TMPL':
header = tmplExcelHeader.header; header = tmplExcelHeader.header;
break; break;
case 'USER': case 'USER':
header = userExcelHeader.header; header = userExcelHeader.header;
break; break;
case 'CAMPAIGN': case 'CAMPAIGN':
header = campExcelHeader.header; header = campExcelHeader.header;
break; break;
default: default:
header = prodExcelHeader.header; header = prodExcelHeader.header;
break; break;
} }
resolve(header); resolve(header);
}); });
}; };
export default { export default {
selectStatics, selectStatics,
selectStaticsXls, selectStaticsXls,
selectStaticsSummary, selectStaticsSummary,
selectTmpltlist, selectTmpltlist,
selectTmpltXlslist, selectTmpltXlslist,
selectTmpltSummary, selectTmpltSummary,
selectUserlist, selectUserlist,
selectUserXlslist, selectUserXlslist,
selectUserSummary, selectUserSummary,
selectCampXlslist, selectCampXlslist,
selectCampSummary, selectCampSummary,
selectCodeProdList, selectCodeProdList,
selectMsgbaseIdList, selectMsgbaseIdList,
selectDeptNmList, selectDeptNmList,
selectUserIdList, selectUserIdList,
selectUserRoleInfo, selectUserRoleInfo,
getExcelHeader getExcelHeader
}; };

View File

@@ -1,203 +1,203 @@
{ {
"header": [ "header": [
[ [
{ {
"key": "seq", "key": "seq",
"name": "NO", "name": "NO",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "campaignId", "key": "campaignId",
"name": "캠페인ID", "name": "캠페인ID",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "msgbaseName", "key": "msgbaseName",
"name": "템플릿명", "name": "템플릿명",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "msgbaseId", "key": "msgbaseId",
"name": "템플릿아이디", "name": "템플릿아이디",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "ymd", "key": "ymd",
"name": "날짜", "name": "날짜",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "", "key": "",
"name": "스타일 템플릿", "name": "스타일 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "서술 템플릿", "name": "서술 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "기본 템플릿", "name": "기본 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "템플릿 소계", "name": "템플릿 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS SMS", "name": "RCS SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS LMS", "name": "RCS LMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS MMS", "name": "RCS MMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS 소계", "name": "RCS 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback SMS", "name": "Fallback SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback LMS", "name": "Fallback LMS",
"colspan": "3" "colspan": "3"
} }
], ],
[ [
{ {
"key": "cellTmpltTot", "key": "cellTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "cellTmpltSucc", "key": "cellTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "cellTmpltRate", "key": "cellTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "descTmpltTot", "key": "descTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "descTmpltSucc", "key": "descTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "descTmpltRate", "key": "descTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "freeTmpltTot", "key": "freeTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "freeTmpltSucc", "key": "freeTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "freeTmpltRate", "key": "freeTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "subSumTmpltTot", "key": "subSumTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "subSumTmpltSucc", "key": "subSumTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "subSumTmpltRate", "key": "subSumTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "smsTot", "key": "smsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "smsSucc", "key": "smsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "smsRate", "key": "smsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "lmsTot", "key": "lmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "lmsSucc", "key": "lmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "lmsRate", "key": "lmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "mmsTot", "key": "mmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "mmsSucc", "key": "mmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "mmsRate", "key": "mmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "formatTot", "key": "formatTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "formatSucc", "key": "formatSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "formatRate", "key": "formatRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbSmsTot", "key": "fbSmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbSmsSucc", "key": "fbSmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbSmsRate", "key": "fbSmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbLmsTot", "key": "fbLmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbLmsSucc", "key": "fbLmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbLmsRate", "key": "fbLmsRate",
"name": "성공률(%)" "name": "성공률(%)"
} }
] ]
] ]
} }

View File

@@ -1,188 +1,188 @@
{ {
"header": [ "header": [
[ [
{ {
"key": "seq", "key": "seq",
"name": "NO", "name": "NO",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "ymd", "key": "ymd",
"name": "날짜", "name": "날짜",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "", "key": "",
"name": "스타일 템플릿", "name": "스타일 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "서술 템플릿", "name": "서술 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "기본 템플릿", "name": "기본 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "템플릿 소계", "name": "템플릿 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS SMS", "name": "RCS SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS LMS", "name": "RCS LMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS MMS", "name": "RCS MMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "포맷 소계", "name": "포맷 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback SMS", "name": "Fallback SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback LMS", "name": "Fallback LMS",
"colspan": "3" "colspan": "3"
} }
], ],
[ [
{ {
"key": "cellTmpltTot", "key": "cellTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "cellTmpltSucc", "key": "cellTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "cellTmpltRate", "key": "cellTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "descTmpltTot", "key": "descTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "descTmpltSucc", "key": "descTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "descTmpltRate", "key": "descTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "freeTmpltTot", "key": "freeTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "freeTmpltSucc", "key": "freeTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "freeTmpltRate", "key": "freeTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "subSumTmpltTot", "key": "subSumTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "subSumTmpltSucc", "key": "subSumTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "subSumTmpltRate", "key": "subSumTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "smsTot", "key": "smsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "smsSucc", "key": "smsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "smsRate", "key": "smsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "lmsTot", "key": "lmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "lmsSucc", "key": "lmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "lmsRate", "key": "lmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "mmsTot", "key": "mmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "mmsSucc", "key": "mmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "mmsRate", "key": "mmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "formatTot", "key": "formatTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "formatSucc", "key": "formatSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "formatRate", "key": "formatRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbSmsTot", "key": "fbSmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbSmsSucc", "key": "fbSmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbSmsRate", "key": "fbSmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbLmsTot", "key": "fbLmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbLmsSucc", "key": "fbLmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbLmsRate", "key": "fbLmsRate",
"name": "성공률(%)" "name": "성공률(%)"
} }
] ]
] ]
} }

View File

@@ -1,84 +1,84 @@
{ {
"header": [ "header": [
[ [
{ {
"key": "seq", "key": "seq",
"name": "NO", "name": "NO",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "msgbaseName", "key": "msgbaseName",
"name": "템플릿명", "name": "템플릿명",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "msgbaseId", "key": "msgbaseId",
"name": "포맷ID", "name": "포맷ID",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "ymd", "key": "ymd",
"name": "날짜", "name": "날짜",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "productName", "key": "productName",
"name": "상품명", "name": "상품명",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "", "key": "",
"name": "RCS", "name": "RCS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback SMS", "name": "Fallback SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback LMS", "name": "Fallback LMS",
"colspan": "3" "colspan": "3"
} }
], ],
[ [
{ {
"key": "rcsCnt", "key": "rcsCnt",
"name": "발송" "name": "발송"
}, },
{ {
"key": "rcsSucc", "key": "rcsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "rcsRate", "key": "rcsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbSmsTot", "key": "fbSmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbSmsSucc", "key": "fbSmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbSmsRate", "key": "fbSmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbLmsTot", "key": "fbLmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbLmsSucc", "key": "fbLmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbLmsRate", "key": "fbLmsRate",
"name": "성공률(%)" "name": "성공률(%)"
} }
] ]
] ]
} }

View File

@@ -1,198 +1,198 @@
{ {
"header": [ "header": [
[ [
{ {
"key": "seq", "key": "seq",
"name": "NO", "name": "NO",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "userId", "key": "userId",
"name": "아이디", "name": "아이디",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "deptNm", "key": "deptNm",
"name": "부서명", "name": "부서명",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "ymd", "key": "ymd",
"name": "날짜", "name": "날짜",
"rowspan": "2" "rowspan": "2"
}, },
{ {
"key": "", "key": "",
"name": "스타일 템플릿", "name": "스타일 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "서술 템플릿", "name": "서술 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "기본 템플릿", "name": "기본 템플릿",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "템플릿 소계", "name": "템플릿 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS SMS", "name": "RCS SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS LMS", "name": "RCS LMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS MMS", "name": "RCS MMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "RCS 소계", "name": "RCS 소계",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback SMS", "name": "Fallback SMS",
"colspan": "3" "colspan": "3"
}, },
{ {
"key": "", "key": "",
"name": "Fallback LMS", "name": "Fallback LMS",
"colspan": "3" "colspan": "3"
} }
], ],
[ [
{ {
"key": "cellTmpltTot", "key": "cellTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "cellTmpltSucc", "key": "cellTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "cellTmpltRate", "key": "cellTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "descTmpltTot", "key": "descTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "descTmpltSucc", "key": "descTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "descTmpltRate", "key": "descTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "freeTmpltTot", "key": "freeTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "freeTmpltSucc", "key": "freeTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "freeTmpltRate", "key": "freeTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "subSumTmpltTot", "key": "subSumTmpltTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "subSumTmpltSucc", "key": "subSumTmpltSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "subSumTmpltRate", "key": "subSumTmpltRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "smsTot", "key": "smsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "smsSucc", "key": "smsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "smsRate", "key": "smsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "lmsTot", "key": "lmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "lmsSucc", "key": "lmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "lmsRate", "key": "lmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "mmsTot", "key": "mmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "mmsSucc", "key": "mmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "mmsRate", "key": "mmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "formatTot", "key": "formatTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "formatSucc", "key": "formatSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "formatRate", "key": "formatRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbSmsTot", "key": "fbSmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbSmsSucc", "key": "fbSmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbSmsRate", "key": "fbSmsRate",
"name": "성공률(%)" "name": "성공률(%)"
}, },
{ {
"key": "fbLmsTot", "key": "fbLmsTot",
"name": "발송" "name": "발송"
}, },
{ {
"key": "fbLmsSucc", "key": "fbLmsSucc",
"name": "성공" "name": "성공"
}, },
{ {
"key": "fbLmsRate", "key": "fbLmsRate",
"name": "성공률(%)" "name": "성공률(%)"
} }
] ]
] ]
} }

View File

@@ -1,19 +1,19 @@
import MonthList from '../views/MonthList' import MonthList from '../views/MonthList'
import BsnmMonthList from '../views/BsnmMonthList' import BsnmMonthList from '../views/BsnmMonthList'
export default [ export default [
{ {
path: '/stats/monthList', path: '/stats/monthList',
component: MonthList, component: MonthList,
name: 'monthList', name: 'monthList',
meta: { public: true } meta: { public: true }
}, },
{ {
path: '/stats/bsnmMonthList', path: '/stats/bsnmMonthList',
component: BsnmMonthList, component: BsnmMonthList,
name: 'bsnmMonthList', name: 'bsnmMonthList',
meta: { public: true } meta: { public: true }
}, },
] ]

View File

@@ -1,164 +1,164 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">사업자 월별 통계 목록 조회</h3> <h3 class="title">사업자 월별 통계 목록 조회</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="right" class="label">권한</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="대리점">대리점</option> <option value="대리점">대리점</option>
<option value="운영자">운영자</option> <option value="운영자">운영자</option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="사용">사용</option> <option value="사용">사용</option>
<option value="중지">중지</option> <option value="중지">중지</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box id">
<label for="id1" class="label">ID</label> <label for="id1" class="label">ID</label>
<input type="text" id="id1" placeholder="검색어 입력"/> <input type="text" id="id1" placeholder="검색어 입력"/>
</div> </div>
<div class="input_box"> <div class="input_box">
<label for="name" class="label">이름(대리점명)</label> <label for="name" class="label">이름(대리점명)</label>
<input type="text" id="name" placeholder="검색어 입력"/> <input type="text" id="name" placeholder="검색어 입력"/>
</div> </div>
<button type="button" class="button grey">조회</button> <button type="button" class="button grey">조회</button>
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>100</span></div> <div class="count"> <span>100</span></div>
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue admin">관리자 등록</button> <button type="button" class="button blue admin">관리자 등록</button>
<button type="button" class="button blue channel">유지채널 등록</button> <button type="button" class="button blue channel">유지채널 등록</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</div> </div>
</div> </div>
<!-- <div class="table"> <!-- <div class="table">
<table> <table>
<colgroup> <colgroup>
<col width="5%"/> <col width="5%"/>
<col width="15%"/> <col width="15%"/>
<col width="15%"/> <col width="15%"/>
<col width="20%"/> <col width="20%"/>
<col width="20%"/> <col width="20%"/>
<col width="5%"/> <col width="5%"/>
<col width="20%"/> <col width="20%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> <th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th>
<th>NO</th> <th>NO</th>
<th>권한</th> <th>권한</th>
<th>이름(대리점명)</th> <th>이름(대리점명)</th>
<th>ID</th> <th>ID</th>
<th>상태</th> <th>상태</th>
<th>등록일</th> <th>등록일</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> <td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td>
<td>10</td> <td>10</td>
<td>대리점</td> <td>대리점</td>
<td>유플러스</td> <td>유플러스</td>
<td><a href="javascript:void(0)">uplus1</a></td> <td><a href="javascript:void(0)">uplus1</a></td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> --> </div> -->
<div class="table"> <div class="table">
<custom-grid <custom-grid
ref="table" ref="table"
:totalItems="'totalItems'" :totalItems="'totalItems'"
:url="testList.url" :url="testList.url"
:perPage="testList.perPage" :perPage="testList.perPage"
:initialRequest="testList.initialRequest" :initialRequest="testList.initialRequest"
:pagination="testList.pagination" :pagination="testList.pagination"
:isCheckbox="testList.isCheckbox" :isCheckbox="testList.isCheckbox"
:columns="testList.columns" :columns="testList.columns"
:noDataStr="testList.noDataStr" :noDataStr="testList.noDataStr"
:addCls="testList.addCls" :addCls="testList.addCls"
:header="testList.header" :header="testList.header"
></custom-grid> ></custom-grid>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
//import api from '../service/api'; //import api from '../service/api';
export default { export default {
name: 'monthList', name: 'monthList',
data() { data() {
return { return {
testList: { testList: {
url: '/api/v1/bo/sysMgt/adminList', url: '/api/v1/bo/sysMgt/adminList',
perPage: 20, perPage: 20,
pagination: true, pagination: true,
isCheckbox: true, isCheckbox: true,
initialRequest: false, initialRequest: false,
addCls: 'box_OFvis', addCls: 'box_OFvis',
header: [ header: [
[ [
{ header: 'NO', childNames: [] }, { header: 'NO', childNames: [] },
{ header: '권한', childNames: [] }, { header: '권한', childNames: [] },
{ header: '이름(대리점명)', childNames: [] }, { header: '이름(대리점명)', childNames: [] },
{ header: 'ID', childNames: [] }, { header: 'ID', childNames: [] },
{ header: '상태', childNames: [] }, { header: '상태', childNames: [] },
{ header: '등록일', childNames: [] } { header: '등록일', childNames: [] }
] ]
], ],
columns: [ columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 }, { name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'auth', header: '권한', align: 'left', width: 160 }, { name: 'auth', header: '권한', align: 'left', width: 160 },
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, { name: 'name', header: '이름(대리점명)', align: 'center', width: 130},
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { name: 'adminId', header: 'ID', align: 'center', width: 130},
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { name: 'adminStat', header: '상태', align: 'center', width: 130},
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { name: 'regDt', header: '등록일', width: 90, cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
params: { params: {
searchType1: '', searchType1: '',
searchType2: '', searchType2: '',
searchText1: '', searchText1: '',
searchText2: '' searchText2: ''
}, },
excelHeader: [] excelHeader: []
} }
}; };
}, },
components: { components: {
customGrid: customGrid customGrid: customGrid
}, },
destroyed() { destroyed() {
}, },
mounted() { mounted() {
let isKeep = false; let isKeep = false;
isKeep = true; isKeep = true;
this.search(isKeep); this.search(isKeep);
}, },
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.testList.params); console.log(this.testList.params);
this.$refs.table.search(this.testList.params, isKeep); this.$refs.table.search(this.testList.params, isKeep);
}, },
} }
}; };
</script> </script>

View File

@@ -1,165 +1,165 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">월별 통계 목록 조회</h3> <h3 class="title">월별 통계 목록 조회</h3>
<p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p> <p class="breadcrumb">시스템관리 &gt; 관리자/유치채널 관리</p>
</div> </div>
<form autocomplete="off" class="search_form"> <form autocomplete="off" class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="right" class="label">권한</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="대리점">대리점</option> <option value="대리점">대리점</option>
<option value="운영자">운영자</option> <option value="운영자">운영자</option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="right"> <select name="" id="right">
<option value="전체">전체</option> <option value="전체">전체</option>
<option value="사용">사용</option> <option value="사용">사용</option>
<option value="중지">중지</option> <option value="중지">중지</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box id">
<label for="id1" class="label">ID</label> <label for="id1" class="label">ID</label>
<input type="text" id="id1" placeholder="검색어 입력"/> <input type="text" id="id1" placeholder="검색어 입력"/>
</div> </div>
<div class="input_box"> <div class="input_box">
<label for="name" class="label">이름(대리점명)</label> <label for="name" class="label">이름(대리점명)</label>
<input type="text" id="name" placeholder="검색어 입력"/> <input type="text" id="name" placeholder="검색어 입력"/>
</div> </div>
<button type="button" class="button grey">조회</button> <button type="button" class="button grey">조회</button>
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>100</span></div> <div class="count"> <span>100</span></div>
<div class="button_group"> <div class="button_group">
<button type="button" class="button blue admin">관리자 등록</button> <button type="button" class="button blue admin">관리자 등록</button>
<button type="button" class="button blue channel">유지채널 등록</button> <button type="button" class="button blue channel">유지채널 등록</button>
<button type="button" class="button white delete">삭제</button> <button type="button" class="button white delete">삭제</button>
</div> </div>
</div> </div>
<!-- <div class="table"> <!-- <div class="table">
<table> <table>
<colgroup> <colgroup>
<col width="5%"/> <col width="5%"/>
<col width="15%"/> <col width="15%"/>
<col width="15%"/> <col width="15%"/>
<col width="20%"/> <col width="20%"/>
<col width="20%"/> <col width="20%"/>
<col width="5%"/> <col width="5%"/>
<col width="20%"/> <col width="20%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th> <th><input type="checkbox" id="admin_check1"><label for="admin_check1"></label></th>
<th>NO</th> <th>NO</th>
<th>권한</th> <th>권한</th>
<th>이름(대리점명)</th> <th>이름(대리점명)</th>
<th>ID</th> <th>ID</th>
<th>상태</th> <th>상태</th>
<th>등록일</th> <th>등록일</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td> <td><input type="checkbox" checked id="admin_check2"><label for="admin_check2"></label></td>
<td>10</td> <td>10</td>
<td>대리점</td> <td>대리점</td>
<td>유플러스</td> <td>유플러스</td>
<td><a href="javascript:void(0)">uplus1</a></td> <td><a href="javascript:void(0)">uplus1</a></td>
<td>사용</td> <td>사용</td>
<td>2022-03-10</td> <td>2022-03-10</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> --> </div> -->
<div class="table"> <div class="table">
<custom-grid <custom-grid
ref="table" ref="table"
:totalItems="'totalItems'" :totalItems="'totalItems'"
:url="testList.url" :url="testList.url"
:perPage="testList.perPage" :perPage="testList.perPage"
:initialRequest="testList.initialRequest" :initialRequest="testList.initialRequest"
:pagination="testList.pagination" :pagination="testList.pagination"
:isCheckbox="testList.isCheckbox" :isCheckbox="testList.isCheckbox"
:columns="testList.columns" :columns="testList.columns"
:noDataStr="testList.noDataStr" :noDataStr="testList.noDataStr"
:addCls="testList.addCls" :addCls="testList.addCls"
:header="testList.header" :header="testList.header"
></custom-grid> ></custom-grid>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
//import api from '../service/api'; //import api from '../service/api';
export default { export default {
name: 'monthList', name: 'monthList',
data() { data() {
return { return {
testList: { testList: {
url: '/api/v1/bo/sysMgt/adminList', url: '/api/v1/bo/sysMgt/adminList',
perPage: 20, perPage: 20,
pagination: true, pagination: true,
isCheckbox: true, isCheckbox: true,
initialRequest: false, initialRequest: false,
addCls: 'box_OFvis', addCls: 'box_OFvis',
header: [ header: [
[ [
{ header: 'NO', childNames: [] }, { header: 'NO', childNames: [] },
{ header: '권한', childNames: [] }, { header: '권한', childNames: [] },
{ header: '이름(대리점명)', childNames: [] }, { header: '이름(대리점명)', childNames: [] },
{ header: 'ID', childNames: [] }, { header: 'ID', childNames: [] },
{ header: '상태', childNames: [] }, { header: '상태', childNames: [] },
{ header: '등록일', childNames: [] } { header: '등록일', childNames: [] }
] ]
], ],
columns: [ columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 }, { name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'auth', header: '권한', align: 'left', width: 160 }, { name: 'auth', header: '권한', align: 'left', width: 160 },
{ name: 'name', header: '이름(대리점명)', align: 'center', width: 130}, { name: 'name', header: '이름(대리점명)', align: 'center', width: 130},
{ name: 'adminId', header: 'ID', align: 'center', width: 130}, { name: 'adminId', header: 'ID', align: 'center', width: 130},
{ name: 'adminStat', header: '상태', align: 'center', width: 130}, { name: 'adminStat', header: '상태', align: 'center', width: 130},
{ name: 'regDt', header: '등록일', width: 90, cls: 'td_line' } { name: 'regDt', header: '등록일', width: 90, cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
// params: { // params: {
// apprResult: '', // apprResult: '',
// searchType: '', // searchType: '',
// searchText: '', // searchText: '',
// startDate: '', // startDate: '',
// endDate: '' // endDate: ''
// }, // },
excelHeader: [] excelHeader: []
} }
}; };
}, },
components: { components: {
customGrid: customGrid customGrid: customGrid
}, },
destroyed() { destroyed() {
}, },
mounted() { mounted() {
let isKeep = false; let isKeep = false;
isKeep = true; isKeep = true;
this.search(isKeep); this.search(isKeep);
}, },
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.testList.params); console.log(this.testList.params);
this.$refs.table.search(this.testList.params, isKeep); this.$refs.table.search(this.testList.params, isKeep);
}, },
} }
}; };
</script> </script>

View File

@@ -212,6 +212,7 @@ export default {
// alert(chkList[i].adminId); // alert(chkList[i].adminId);
// } // }
const param = chkList.map((row)=>({adminId:row.adminId})); const param = chkList.map((row)=>({adminId:row.adminId}));
console.log(param)
this.row.list = param; this.row.list = param;
console.log(this.row); console.log(this.row);
return true; return true;

View File

@@ -5,16 +5,23 @@
*/ */
package kr.co.uplus.ez.api.attractMgt; package kr.co.uplus.ez.api.attractMgt;
import java.util.Map; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.RequestBody; import kr.co.uplus.ez.api.attractMgt.dto.ChannelListExcelReqDto;
import org.springframework.web.bind.annotation.RequestMapping; import kr.co.uplus.ez.api.attractMgt.dto.ChannelListExcelResDto;
import org.springframework.web.bind.annotation.RequestMethod; import kr.co.uplus.ez.api.attractMgt.dto.ChannelListReqDto;
import org.springframework.web.bind.annotation.ResponseBody; import kr.co.uplus.ez.api.attractMgt.dto.ChannelListResDto;
import org.springframework.web.bind.annotation.RestController; 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 kr.co.uplus.ez.common.data.ApiResponseMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Map;
@RestController @RestController
@RequestMapping(value = "api/v1/bo/attractMgt") @RequestMapping(value = "api/v1/bo/attractMgt")
@@ -23,32 +30,45 @@ public class AttractMgtController {
@Autowired @Autowired
AttractMgtService attractService; AttractMgtService attractService;
@Autowired
ValidComponents validComponents;
/** /**
* date : 2022. 4. 26. * date : 2022. 4. 26.
* auth : ckr * auth : ckr
* desc : 유치채널 목록조회 * desc : 유치채널 목록조회
* @param paramMap * @param channelListReqDto
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "channelList", notes = "유치채널 목록조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "/channelList" , method = {RequestMethod.POST}) @RequestMapping(value = "/channelList" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage channelList(@RequestBody Map<String, Object> paramMap) throws Exception{ public ChannelListResDto channelList(@RequestBody @Valid ChannelListReqDto channelListReqDto, BindingResult bindingResult) {
return attractService.channelList(paramMap); if (validComponents.validParameter(bindingResult)) {
return new ChannelListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return attractService.channelList(channelListReqDto);
} }
/** /**
* date : 2022. 4. 26. * date : 2022. 4. 26.
* auth : ckr * auth : ckr
* desc : 유치채널 목록 엑셀 다운로드 * desc : 유치채널 목록 엑셀 다운로드
* @param paramMap * @param channelListExcelReqDto
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "channelListExcel", notes = "유치채널 목록 엑셀 다운로드")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "/channelListExcel" , method = {RequestMethod.POST}) @RequestMapping(value = "/channelListExcel" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage channelListExcel(@RequestBody Map<String, Object> paramMap) throws Exception{ public ChannelListExcelResDto channelListExcel(@RequestBody @Valid ChannelListExcelReqDto channelListExcelReqDto, BindingResult bindingResult) {
return attractService.channelListExcel(paramMap); if (validComponents.validParameter(bindingResult)) {
return new ChannelListExcelResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return attractService.channelListExcel(channelListExcelReqDto);
} }
/** /**
@@ -57,11 +77,13 @@ public class AttractMgtController {
* desc : 유치 채널 상세 조회 * desc : 유치 채널 상세 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "channelDetail", notes = "유치 채널 상세 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "/channelDetail" , method = {RequestMethod.POST}) @RequestMapping(value = "/channelDetail" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage channelDetail(@RequestBody Map<String, Object> paramMap) throws Exception{ public ApiResponseMessage channelDetail(@RequestBody Map<String, Object> paramMap) {
return attractService.channelDetail(paramMap); return attractService.channelDetail(paramMap);
} }
@@ -71,11 +93,11 @@ public class AttractMgtController {
* desc : 발송건수 엑셀 다운로드 * desc : 발송건수 엑셀 다운로드
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@RequestMapping(value = "/sendNumberListExcel" , method = {RequestMethod.POST}) @RequestMapping(value = "/sendNumberListExcel" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumberListExcel(@RequestBody Map<String, Object> paramMap) throws Exception{ public ApiResponseMessage sendNumberListExcel(@RequestBody Map<String, Object> paramMap) {
return attractService.sendNumberListExcel(paramMap); return attractService.sendNumberListExcel(paramMap);
} }
} }

View File

@@ -1,8 +1,10 @@
package kr.co.uplus.ez.api.attractMgt; package kr.co.uplus.ez.api.attractMgt;
import kr.co.uplus.ez.api.attractMgt.dto.ChannelListReqDto;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public class AttractMgtMapper { public interface AttractMgtMapper {
int selectAttractListTotalCnt(ChannelListReqDto channelListReqDto);
} }

View File

@@ -1,15 +1,18 @@
package kr.co.uplus.ez.api.attractMgt; package kr.co.uplus.ez.api.attractMgt;
import kr.co.uplus.ez.api.attractMgt.dto.ChannelListExcelReqDto;
import kr.co.uplus.ez.api.attractMgt.dto.ChannelListExcelResDto;
import kr.co.uplus.ez.api.attractMgt.dto.ChannelListReqDto;
import kr.co.uplus.ez.api.attractMgt.dto.ChannelListResDto;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage;
import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Service;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage;
@Service @Service
public class AttractMgtService { public class AttractMgtService {
@@ -17,74 +20,24 @@ public class AttractMgtService {
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 유치채널 목록조회 * desc : 유치채널 목록조회
* @param paramMap * @param channelListReqDto
* @return * @return
*/ */
public ApiResponseMessage channelList(Map<String, Object> paramMap) { public ChannelListResDto channelList(ChannelListReqDto channelListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); return new ChannelListResDto(ApiResponseCode.SUCCESS);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>();
data.put("totalCnt", "999");
data.put("currentPage", "1");
dataObj.put("paging", data);
for(int i=1; i<10; i++) {
data = new HashMap<>();
data.put("no", ""+i);
data.put("regDt", "2022-03-10");
data.put("channelNm", "업체명");
data.put("adminId", "uplus01");
data.put("custNm", "유플러스");
data.put("bRegNo", "221-81-39938");
data.put("userNm", "유플러스스");
data.put("stat", "사용");
data.put("custType", "법인사용자");
data.put("totalSendingCnt", "1440000");
data.put("serviceId", "serviceId");
dataList.add(data);
}
dataObj.put("list", dataList);
result.setData(dataObj);
return result;
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 유치채널 목록 엑셀 다운로드 * desc : 유치채널 목록 엑셀 다운로드
* @param paramMap * @param channelListExcelReqDto
* @return * @return
*/ */
public ApiResponseMessage channelListExcel(Map<String, Object> paramMap) { public ChannelListExcelResDto channelListExcel(ChannelListExcelReqDto channelListExcelReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); return new ChannelListExcelResDto(ApiResponseCode.SUCCESS);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>();
data.put("totalCnt", "999");
data.put("currentPage", "1");
dataObj.put("paging", data);
for(int i=1; i<50; i++) {
data = new HashMap<>();
data.put("no", ""+i);
data.put("regDt", "2022-03-10");
data.put("channelNm", "업체명");
data.put("adminId", "uplus01");
data.put("custNm", "유플러스");
data.put("bRegNo", "221-81-39938");
data.put("userNm", "유플러스스");
data.put("stat", "사용");
data.put("custType", "법인사용자");
data.put("totalSendingCnt", "1440000");
data.put("serviceId", "serviceId");
dataList.add(data);
}
dataObj.put("list", dataList);
result.setData(dataObj);
return result;
} }
/** /**

View File

@@ -0,0 +1,32 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ChannelInfo implements Serializable {
@ApiModelProperty(example = "리스트번호", name = "리스트번호", dataType = "String")
private String no;
@ApiModelProperty(example = "고객사명(이름)", name = "고객사명(이름)", dataType = "String")
private String custNm;
@ApiModelProperty(example = "사업자번호(생년월일)", name = "사업자번호(생년월일)", dataType = "String")
private String bRegNo;
@ApiModelProperty(example = "템플릿 코드", name = "템플릿 코드", dataType = "String")
private String tmpltCd;
@ApiModelProperty(example = "템플릿명", name = "템플릿명", dataType = "String")
private String tmpltNm;
@ApiModelProperty(example = "템플릿 유형", name = "템플릿 유형", notes = "항목 : (01: 기본형(Default), 02:부가정보형, 03:광고추가형, 04:복합형)", dataType = "String")
private String tmpltType;
@ApiModelProperty(example = "상태", name = "상태" , notes = "항목 : (T:신청완료, R:검수요청완료, Q:카카오 검수중, A:템플릿승인, S:반려)" , dataType = "String")
private String stat;
@ApiModelProperty(example = "반려사유", name = "반려사유", dataType = "String")
private String returnReason;
@ApiModelProperty(example = "발신프로필", name = "발신프로필", dataType = "String")
private String sendProfile;
@ApiModelProperty(example = "최종수정일자", name = "최종수정일자", dataType = "String")
private String lastChgDt;
}

View File

@@ -0,0 +1,19 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ChannelListExcelReqDto implements Serializable {
@ApiModelProperty(example = "사용상태", name = "사용상태", notes = "항목 : 전체(Default)/사용 : Y/중지 : N", dataType = "String")
private String searchType1;
@ApiModelProperty(example = "검색조건", name = "검색조건", notes = "항목 : 고객사명 : custNm / 사업자번호 : bizNo / 인증코드 : authCd", dataType = "String")
private String searchType2;
@ApiModelProperty(example = "검색어(입력)", name = "검색어(입력)", dataType = "String")
private String searchText1;
}

View File

@@ -0,0 +1,31 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ChannelListExcelResDto extends ResponseMessage implements Serializable {
// 데이터.
private ChannelListRes data;
public ChannelListExcelResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public ChannelListExcelResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public ChannelListExcelResDto(ApiResponseCode returnStr, ChannelListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,19 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ChannelListReqDto implements Serializable {
@ApiModelProperty(example = "사용상태", name = "사용상태", notes = "항목 : 전체(Default)/사용 : Y/중지 : N", dataType = "String")
private String searchType1;
@ApiModelProperty(example = "검색조건", name = "검색조건", notes = "항목 : 고객사명 : custNm / 사업자번호 : bizNo / 인증코드 : authCd", dataType = "String")
private String searchType2;
@ApiModelProperty(example = "검색어(입력)", name = "검색어(입력)", dataType = "String")
private String searchText1;
}

View File

@@ -0,0 +1,15 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import kr.co.uplus.ez.common.data.Paging;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class ChannelListRes implements Serializable {
private Paging paging;
private List<ChannelInfo> list;
}

View File

@@ -0,0 +1,31 @@
package kr.co.uplus.ez.api.attractMgt.dto;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ChannelListResDto extends ResponseMessage implements Serializable {
// 데이터.
private ChannelListRes data;
public ChannelListResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public ChannelListResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public ChannelListResDto(ApiResponseCode returnStr, ChannelListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -5,17 +5,6 @@
*/ */
package kr.co.uplus.ez.api.channelMgt; package kr.co.uplus.ez.api.channelMgt;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
@@ -25,6 +14,12 @@ import kr.co.uplus.ez.api.channelMgt.dto.TmpltListReqDto;
import kr.co.uplus.ez.api.channelMgt.dto.TmpltListResDto; import kr.co.uplus.ez.api.channelMgt.dto.TmpltListResDto;
import kr.co.uplus.ez.common.components.ValidComponents; import kr.co.uplus.ez.common.components.ValidComponents;
import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@RestController @RestController
@RequestMapping(value = "api/v1/bo/channelMgt") @RequestMapping(value = "api/v1/bo/channelMgt")
@@ -40,15 +35,15 @@ public class ChannelMgtController {
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 알림톡 템플릿 목록 조회 * desc : 알림톡 템플릿 목록 조회
* @param paramMap * @param tmpltListReqDto
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "tmpltList", notes = "알림톡 템플릿 목록 조회") @ApiOperation(value = "tmpltList", notes = "알림톡 템플릿 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") }) @ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "tmpltList", method = { RequestMethod.POST }) @RequestMapping(value = "tmpltList", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public TmpltListResDto tmpltList(@RequestBody @Valid TmpltListReqDto tmpltListReqDto, BindingResult bindingResult) throws Exception{ public TmpltListResDto tmpltList(@RequestBody @Valid TmpltListReqDto tmpltListReqDto, BindingResult bindingResult) {
if (validComponents.validParameter(bindingResult)) { if (validComponents.validParameter(bindingResult)) {
return new TmpltListResDto(ApiResponseCode.CM_PARAMETER_ERROR); return new TmpltListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
@@ -61,15 +56,15 @@ public class ChannelMgtController {
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 알림톡 템플릿 엑셀 다운로드 목록 조회 * desc : 알림톡 템플릿 엑셀 다운로드 목록 조회
* @param paramMap * @param tmpltListExcelReqDto
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "tmpltListExcel", notes = "알림톡 템플릿 엑셀 다운로드 목록 조회") @ApiOperation(value = "tmpltListExcel", notes = "알림톡 템플릿 엑셀 다운로드 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") }) @ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "tmpltListExcel", method = { RequestMethod.POST }) @RequestMapping(value = "tmpltListExcel", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public TmpltListExcelResDto tmpltListExcel(@RequestBody @Valid TmpltListExcelReqDto tmpltListExcelReqDto, BindingResult bindingResult) throws Exception{ public TmpltListExcelResDto tmpltListExcel(@RequestBody @Valid TmpltListExcelReqDto tmpltListExcelReqDto, BindingResult bindingResult) {
if (validComponents.validParameter(bindingResult)) { if (validComponents.validParameter(bindingResult)) {
return new TmpltListExcelResDto(ApiResponseCode.CM_PARAMETER_ERROR); return new TmpltListExcelResDto(ApiResponseCode.CM_PARAMETER_ERROR);

View File

@@ -1,13 +1,8 @@
package kr.co.uplus.ez.api.custMgt; package kr.co.uplus.ez.api.custMgt;
import java.math.BigDecimal; import kr.co.uplus.ez.api.custMgt.dto.*;
import java.util.ArrayList; import kr.co.uplus.ez.common.data.*;
import java.util.HashMap; import kr.co.uplus.ez.common.utils.EncryptionUtil;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -17,64 +12,11 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import kr.co.uplus.ez.api.custMgt.dto.AdminInfo; import java.math.BigDecimal;
import kr.co.uplus.ez.api.custMgt.dto.AdminInfoReqDto; import java.util.ArrayList;
import kr.co.uplus.ez.api.custMgt.dto.AdminInfoResDto; import java.util.HashMap;
import kr.co.uplus.ez.api.custMgt.dto.AllMemoList; import java.util.List;
import kr.co.uplus.ez.api.custMgt.dto.AllMemoListReqDto; import java.util.Map;
import kr.co.uplus.ez.api.custMgt.dto.AllMemoListRes;
import kr.co.uplus.ez.api.custMgt.dto.AllMemoListResDto;
import kr.co.uplus.ez.api.custMgt.dto.CarryOver;
import kr.co.uplus.ez.api.custMgt.dto.CarryOverListReqDto;
import kr.co.uplus.ez.api.custMgt.dto.CarryOverListRes;
import kr.co.uplus.ez.api.custMgt.dto.CarryOverListResDto;
import kr.co.uplus.ez.api.custMgt.dto.CustInfo;
import kr.co.uplus.ez.api.custMgt.dto.DeleteMemoReqDto;
import kr.co.uplus.ez.api.custMgt.dto.DeleteMemoResDto;
import kr.co.uplus.ez.api.custMgt.dto.DeleteUserReqDto;
import kr.co.uplus.ez.api.custMgt.dto.DeleteUserResDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertMassUser;
import kr.co.uplus.ez.api.custMgt.dto.InsertMassUserReqDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertMassUserRes;
import kr.co.uplus.ez.api.custMgt.dto.InsertMassUserResDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertTestIdReqDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertTestIdResDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertUserReqDto;
import kr.co.uplus.ez.api.custMgt.dto.InsertUserResDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberAdminDetailReqDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberAdminDetailRes;
import kr.co.uplus.ez.api.custMgt.dto.MemberAdminDetailResDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberDetail;
import kr.co.uplus.ez.api.custMgt.dto.MemberDetailReqDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberDetailRes;
import kr.co.uplus.ez.api.custMgt.dto.MemberDetailResDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberList;
import kr.co.uplus.ez.api.custMgt.dto.MemberListReqDto;
import kr.co.uplus.ez.api.custMgt.dto.MemberListRes;
import kr.co.uplus.ez.api.custMgt.dto.MemberListResDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsDetail;
import kr.co.uplus.ez.api.custMgt.dto.SubsDetailReqDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsDetailResDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsInfo;
import kr.co.uplus.ez.api.custMgt.dto.SubsList;
import kr.co.uplus.ez.api.custMgt.dto.SubsListExcelReqDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsListExcelResDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsListReqDto;
import kr.co.uplus.ez.api.custMgt.dto.SubsListRes;
import kr.co.uplus.ez.api.custMgt.dto.SubsListResDto;
import kr.co.uplus.ez.api.custMgt.dto.SvcUserInfo;
import kr.co.uplus.ez.api.custMgt.dto.UpdateAdminInfoReqDto;
import kr.co.uplus.ez.api.custMgt.dto.UpdateAdminInfoResDto;
import kr.co.uplus.ez.api.custMgt.dto.UpdateAdminInfoTotalReqDto;
import kr.co.uplus.ez.api.custMgt.dto.UpdateAdminInfoTotalResDto;
import kr.co.uplus.ez.api.custMgt.dto.UpdateUserReqDto;
import kr.co.uplus.ez.api.custMgt.dto.UpdateUserResDto;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage;
import kr.co.uplus.ez.common.data.Const;
import kr.co.uplus.ez.common.data.ImUser;
import kr.co.uplus.ez.common.data.Paging;
import kr.co.uplus.ez.common.utils.EncryptionUtil;
@Service @Service
public class CustMgtService { public class CustMgtService {
@@ -244,7 +186,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 관리자ID,관리자명 수정 * date : 2022. 4. 25. auth : ckr desc : 관리자ID,관리자명 수정
* *
* @param updateAdminInfoReqDto * @param adminInfoReqDto
* @return updateAdminInfoResDto * @return updateAdminInfoResDto
*/ */
public UpdateAdminInfoResDto updateAdminInfo(UpdateAdminInfoReqDto adminInfoReqDto) { public UpdateAdminInfoResDto updateAdminInfo(UpdateAdminInfoReqDto adminInfoReqDto) {
@@ -357,7 +299,7 @@ public class CustMgtService {
/** /**
* 사용자 상세 리스트 조회. * 사용자 상세 리스트 조회.
* *
* @param memberDetailListReqDto * @param memberAdminDetailReqDto
* @return MemberDetailListResDto * @return MemberDetailListResDto
*/ */
public MemberAdminDetailResDto memberAdminDetail(MemberAdminDetailReqDto memberAdminDetailReqDto) { public MemberAdminDetailResDto memberAdminDetail(MemberAdminDetailReqDto memberAdminDetailReqDto) {
@@ -404,7 +346,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 테스트ID 등록 * date : 2022. 4. 25. auth : ckr desc : 테스트ID 등록
* *
* @param paramMap * @param insertTestIdReqDto
* @return * @return
*/ */
public InsertTestIdResDto insertTestId(InsertTestIdReqDto insertTestIdReqDto) { public InsertTestIdResDto insertTestId(InsertTestIdReqDto insertTestIdReqDto) {
@@ -507,7 +449,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 메모 삭제 * date : 2022. 4. 25. auth : ckr desc : 메모 삭제
* *
* @param paramMap * @param deleteMemoReqDto
* @return * @return
*/ */
public DeleteMemoResDto deleteMemo(DeleteMemoReqDto deleteMemoReqDto) { public DeleteMemoResDto deleteMemo(DeleteMemoReqDto deleteMemoReqDto) {
@@ -546,7 +488,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 사용자 정보 등록 * date : 2022. 4. 25. auth : ckr desc : 사용자 정보 등록
* *
* @param paramMap * @param insertUserReqDto
* @return * @return
*/ */
public InsertUserResDto insertUser(InsertUserReqDto insertUserReqDto) { public InsertUserResDto insertUser(InsertUserReqDto insertUserReqDto) {
@@ -585,7 +527,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 사용자 정보 수정 * date : 2022. 4. 25. auth : ckr desc : 사용자 정보 수정
* *
* @param paramMap * @param updateUserReqDto
* @return * @return
*/ */
public UpdateUserResDto updateUser(UpdateUserReqDto updateUserReqDto) { public UpdateUserResDto updateUser(UpdateUserReqDto updateUserReqDto) {
@@ -616,8 +558,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 사용자ID 대량등록 * date : 2022. 4. 25. auth : ckr desc : 사용자ID 대량등록
* *
* @param paramMap * @param insertMassUserReqDto
* @return
*/ */
public InsertMassUserResDto insertMassUser(InsertMassUserReqDto insertMassUserReqDto) { public InsertMassUserResDto insertMassUser(InsertMassUserReqDto insertMassUserReqDto) {
@@ -700,7 +641,7 @@ public class CustMgtService {
/** /**
* date : 2022. 4. 25. auth : ckr desc : 사용자 정보 삭제 * date : 2022. 4. 25. auth : ckr desc : 사용자 정보 삭제
* *
* @param paramMap * @param deleteUserReqDto
* @return * @return
*/ */
public DeleteUserResDto deleteUser(DeleteUserReqDto deleteUserReqDto) { public DeleteUserResDto deleteUser(DeleteUserReqDto deleteUserReqDto) {
@@ -746,7 +687,7 @@ public class CustMgtService {
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 관리자 정보(종합) 수정 * desc : 관리자 정보(종합) 수정
* @param UpdateAdminInfoTotalReqDto * @param updateAdminInfoTotalReqDto
* @return UpdateAdminInfoTotalResDto * @return UpdateAdminInfoTotalResDto
* @ * @
*/ */

View File

@@ -1,8 +1,49 @@
package kr.co.uplus.ez.api.riskMgt; package kr.co.uplus.ez.api.riskMgt;
import kr.co.uplus.ez.api.riskMgt.dto.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public class RiskMgtMapper { public interface RiskMgtMapper {
int selectSndrnoBlckTotalCnt(SendNumIntrcpListReqDto sendNumIntrcpListReqDto);
List<SendNumIntrcpList> selectSndrnoBlckList(SendNumIntrcpListReqDto sendNumIntrcpListReqDto);
SendNumIntrcpDetail selectSndrnoBlckDetail(String blckSndrno);
void insertSndrnoBlck(SendNumInsertIntrcpReqDto sendNumInsertIntrcpReqDto);
int updateSndrnoBlck(SendNumUpdateIntrcplReqDto sendNumUpdateIntrcplReqDto);
int deleteSndrnoBlck(SendNumDeleteIntrcpReqDto sendNumDeleteIntrcpReqDto);
int selectRcvblck080ListTotalCnt(ZezNumIntrcpListReqDto zezNumIntrcpListReqDto);
List<ZezNumIntrcpList> selectRcvblck080List(ZezNumIntrcpListReqDto zezNumIntrcpListReqDto);
int selectMsgBlckwordListTotalCnt(MsgIntrcpListReqDto msgIntrcpListReqDto);
List<MsgIntrcpList> selectMsgBlckwordList(MsgIntrcpListReqDto msgIntrcpListReqDto);
MsgIntrcpDetail selectMsgBlckwordDetail(MsgIntrcpDetailReqDto msgIntrcpDetailReqDto);
List<MsgBlckwordList> selectBlckwordDtlList(MsgIntrcpDetailReqDto msgIntrcpDetailReqDto);
void insertMsgBlckword(MsgInsertIntrcpReqDto msgInsertIntrcpReqDto);
void insertBlckwordDtl(List<MsgBlckwordList> msgBlckwordLists);
int updateMsgBlckword(MsgUpdateIntrcplReqDto msgUpdateIntrcplReqDto);
int deleteMsgBlckword(MsgDeleteIntrcpReqDto msgDeleteIntrcpReqDto);
int deleteBlckwordDtl(String seqNo);
int selectWebsndBlckListTotalCnt(WebInsertIntrcpReqDto webInsertIntrcpReqDto);
List<WebIntrcpList> selectWebsndBlckList(WebInsertIntrcpReqDto webInsertIntrcpReqDto);
} }

View File

@@ -1,205 +1,283 @@
package kr.co.uplus.ez.api.riskMgt; package kr.co.uplus.ez.api.riskMgt;
import java.util.ArrayList; import kr.co.uplus.ez.api.riskMgt.dto.*;
import java.util.HashMap; import kr.co.uplus.ez.common.data.ApiResponseCode;
import java.util.List; import kr.co.uplus.ez.common.data.Const;
import java.util.Map; import kr.co.uplus.ez.common.data.Paging;
import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import kr.co.uplus.ez.common.data.ApiResponseCode; import java.util.ArrayList;
import kr.co.uplus.ez.common.data.ApiResponseMessage; import java.util.List;
@Service @Service
public class RiskMgtService { public class RiskMgtService {
private static final Logger logger = LoggerFactory.getLogger(RiskMgtService.class);
@Autowired
@Qualifier("sqlSessionTemplateDb1")
private SqlSessionTemplate sqlSessionMaster;
@Autowired
@Qualifier("sqlSessionTemplateDb2")
private SqlSessionTemplate sqlSessionSlave;
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 목록 조회 * desc : 발신번호 차단 목록 조회
* @param paramMap * @param sendNumIntrcpListReqDto
* @return * @return SendNumIntrcpListResDto
*/ */
public ApiResponseMessage sendNumIntrcpList(Map<String, Object> paramMap) { public SendNumIntrcpListResDto sendNumIntrcpList(SendNumIntrcpListReqDto sendNumIntrcpListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); // 현재 페이지.
data.put("totalCnt","999"); String nowPage = String.valueOf(sendNumIntrcpListReqDto.getPage());
data.put("currentPage","1"); int totalCnt = riskMgtMapper.selectSndrnoBlckTotalCnt(sendNumIntrcpListReqDto);
dataObj.put("paging", data);
if (totalCnt == 0) {
for(int i=0; i<10; i++) {
data = new HashMap<>(); SendNumIntrcpListRes sendNumIntrcpListRes = new SendNumIntrcpListRes();
data.put("no", ""+(i+1)); sendNumIntrcpListRes.setList(new ArrayList<>());
data.put("sendNum", "0212345678");
data.put("intrcpYn", "미차단"); Paging paging = new Paging();
data.put("sendType", "문자"); paging.setPage(nowPage);
data.put("lastUpdateDt", "2022-03-10"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("intrcpReason", "도박"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("register", "kkkkkkf"); sendNumIntrcpListRes.setPaging(paging);
dataList.add(data); return new SendNumIntrcpListResDto(ApiResponseCode.CM_NOT_FOUND, sendNumIntrcpListRes);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = sendNumIntrcpListReqDto.getPage();
int pagePerRows = sendNumIntrcpListReqDto.getPagePerRows();
return result; page = (page - 1) * pagePerRows;
sendNumIntrcpListReqDto.setPage(page);
List<SendNumIntrcpList> sendNumIntrcpListList = riskMgtMapper.selectSndrnoBlckList(sendNumIntrcpListReqDto);
SendNumIntrcpListRes sendNumIntrcpListRes = new SendNumIntrcpListRes();
sendNumIntrcpListRes.setList(sendNumIntrcpListList);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
sendNumIntrcpListRes.setPaging(paging);
return new SendNumIntrcpListResDto(ApiResponseCode.SUCCESS, sendNumIntrcpListRes);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 상세 정보 조회 * desc : 발신번호 차단 상세 정보 조회
* @param paramMap * @param sendNumIntrcpDetailReqDto
* @return * @return
*/ */
public ApiResponseMessage sendNumIntrcpDetail(Map<String, Object> paramMap) { public SendNumIntrcpDetailResDto sendNumIntrcpDetail(SendNumIntrcpDetailReqDto sendNumIntrcpDetailReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
dataObj.put("sendNum", "0212345678");
dataObj.put("sendType", "공용"); SendNumIntrcpDetail sendNumIntrcpDetail = riskMgtMapper.selectSndrnoBlckDetail(sendNumIntrcpDetailReqDto.getBlckSndrno());
dataObj.put("intrcpReason", "도박");
dataObj.put("memo", "고객사 요청"); if(sendNumIntrcpDetail == null){
dataObj.put("intrcpYn", "차단"); return new SendNumIntrcpDetailResDto(ApiResponseCode.CM_NOT_FOUND);
}
result.setData(dataObj);
return new SendNumIntrcpDetailResDto(ApiResponseCode.SUCCESS, sendNumIntrcpDetail);
return result;
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 신규 등록 * desc : 발신번호 차단 신규 등록
* @param paramMap * @param insertIntrcpReqDto
* @return * @return
*/ */
public ApiResponseMessage sendNumInsertIntrcp(Map<String, Object> paramMap) { public SendNumInsertIntrcpResDto sendNumInsertIntrcp(SendNumInsertIntrcpReqDto insertIntrcpReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
try{
insertIntrcpReqDto.setBlckYn(Const.COMM_YES);
//regId 들고오기
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetails userDetails = (UserDetails) principal;
String regId = userDetails.getUsername();
insertIntrcpReqDto.setRegId(regId);
riskMgtMapper.insertSndrnoBlck(insertIntrcpReqDto);
}catch (Exception e){
return new SendNumInsertIntrcpResDto(ApiResponseCode.CM_DB_QUERY_ERR);
}
return new SendNumInsertIntrcpResDto(ApiResponseCode.SUCCESS);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 수정 * desc : 발신번호 차단 수정
* @param paramMap * @param sendNumUpdateIntrcplReqDto
* @return * @return
*/ */
public ApiResponseMessage sendNumUpdateIntrcp(Map<String, Object> paramMap) { public SendNumUpdateIntrcpResDto sendNumUpdateIntrcp(SendNumUpdateIntrcplReqDto sendNumUpdateIntrcplReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
sendNumUpdateIntrcplReqDto.setChgId("test");;
int result = riskMgtMapper.updateSndrnoBlck(sendNumUpdateIntrcplReqDto);
if(result > 0){
return new SendNumUpdateIntrcpResDto(ApiResponseCode.SUCCESS);
}else{
return new SendNumUpdateIntrcpResDto(ApiResponseCode.CM_NOT_FOUND);
}
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 삭제 * desc : 발신번호 차단 삭제
* @param paramMap * @param sendNumDeleteIntrcpReqDto
* @return * @return
*/ */
public ApiResponseMessage sendNumDeleteIntrcp(Map<String, Object> paramMap) { public SendNumDeleteIntrcpResDto sendNumDeleteIntrcp(SendNumDeleteIntrcpReqDto sendNumDeleteIntrcpReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
return result;
int result = riskMgtMapper.deleteSndrnoBlck(sendNumDeleteIntrcpReqDto);
if(result > 0){
return new SendNumDeleteIntrcpResDto(ApiResponseCode.SUCCESS);
}else{
return new SendNumDeleteIntrcpResDto(ApiResponseCode.CM_NOT_FOUND);
}
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 080수신번호 차단 목록 조회 * desc : 080수신번호 차단 목록 조회
* @param paramMap * @param zezNumIntrcpListReqDto
* @return * @return
*/ */
public ApiResponseMessage zezNumIntrcpList(Map<String, Object> paramMap) { public ZezNumIntrcpListResDto zezNumIntrcpList(ZezNumIntrcpListReqDto zezNumIntrcpListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); // 현재 페이지.
data.put("totalCnt","999"); String nowPage = String.valueOf(zezNumIntrcpListReqDto.getPage());
data.put("currentPage","1"); int totalCnt = riskMgtMapper.selectRcvblck080ListTotalCnt(zezNumIntrcpListReqDto);
dataObj.put("paging", data);
if (totalCnt == 0) {
for(int i=0; i<10; i++) {
data = new HashMap<>(); ZezNumIntrcpListRes zezNumIntrcpListRes = new ZezNumIntrcpListRes();
data.put("no", ""+(i+1)); zezNumIntrcpListRes.setList(new ArrayList<>());
data.put("custNm", "가나다"); Paging paging = new Paging();
data.put("bRegNo", "123-11-12345"); paging.setPage(nowPage);
data.put("authCd", "12345"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("recvNum", "01012345678"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("regDt", "2022-03-10"); zezNumIntrcpListRes.setPaging(paging);
data.put("regType", "자동등록");
return new ZezNumIntrcpListResDto(ApiResponseCode.CM_NOT_FOUND, zezNumIntrcpListRes);
dataList.add(data);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = zezNumIntrcpListReqDto.getPage();
int pagePerRows = zezNumIntrcpListReqDto.getPagePerRows();
return result; page = (page - 1) * pagePerRows;
zezNumIntrcpListReqDto.setPage(page);
List<ZezNumIntrcpList> zezNumIntrcpLists = riskMgtMapper.selectRcvblck080List(zezNumIntrcpListReqDto);
ZezNumIntrcpListRes zezNumIntrcpListRes = new ZezNumIntrcpListRes();
zezNumIntrcpListRes.setList(zezNumIntrcpLists);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
zezNumIntrcpListRes.setPaging(paging);
return new ZezNumIntrcpListResDto(ApiResponseCode.SUCCESS, zezNumIntrcpListRes);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 메시지 차단 목록 조회 * desc : 메시지 차단 목록 조회
* @param paramMap * @param msgNumIntrcpListReqDto
* @return * @return
*/ */
public ApiResponseMessage msgIntrcpList(Map<String, Object> paramMap) { public MsgIntrcpListResDto msgIntrcpList(MsgIntrcpListReqDto msgNumIntrcpListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); // 현재 페이지.
data.put("totalCnt","999"); String nowPage = String.valueOf(msgNumIntrcpListReqDto.getPage());
data.put("currentPage","1"); int totalCnt = riskMgtMapper.selectMsgBlckwordListTotalCnt(msgNumIntrcpListReqDto);
dataObj.put("paging", data);
if (totalCnt == 0) {
for(int i=0; i<10; i++) {
data = new HashMap<>(); MsgIntrcpListRes msgIntrcpListRes = new MsgIntrcpListRes();
data.put("no", ""+(i+1)); msgIntrcpListRes.setList(new ArrayList<>());
data.put("intrcpMsg", "도박");
data.put("intrcpYn", "차단"); Paging paging = new Paging();
data.put("lastUpdateDt", "2022-03-10"); paging.setPage(nowPage);
data.put("intrcpReason", "도박"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("register", "Abcefu"); paging.setTotalCnt(String.valueOf(totalCnt));
dataList.add(data); msgIntrcpListRes.setPaging(paging);
return new MsgIntrcpListResDto(ApiResponseCode.CM_NOT_FOUND, msgIntrcpListRes);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = msgNumIntrcpListReqDto.getPage();
int pagePerRows = msgNumIntrcpListReqDto.getPagePerRows();
return result; page = (page - 1) * pagePerRows;
msgNumIntrcpListReqDto.setPage(page);
List<MsgIntrcpList> msgIntrcpLists = riskMgtMapper.selectMsgBlckwordList(msgNumIntrcpListReqDto);
MsgIntrcpListRes msgIntrcpListRes = new MsgIntrcpListRes();
msgIntrcpListRes.setList(msgIntrcpLists);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
msgIntrcpListRes.setPaging(paging);
return new MsgIntrcpListResDto(ApiResponseCode.SUCCESS, msgIntrcpListRes);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 메시지 차단 상세 정보 조회 * desc : 메시지 차단 상세 정보 조회
* @param paramMap * @param msgIntrcpDetailReqDto
* @return * @return
*/ */
public ApiResponseMessage msgIntrcpDetail(Map<String, Object> paramMap) { public MsgIntrcpDetailResDto msgIntrcpDetail(MsgIntrcpDetailReqDto msgIntrcpDetailReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
dataObj.put("intrcpMsgId", "testMsgId"); MsgIntrcpDetail msgIntrcpDetail = riskMgtMapper.selectMsgBlckwordDetail(msgIntrcpDetailReqDto);
dataObj.put("intrcpString1", "도박");
dataObj.put("intrcpString2", "광고"); if(msgIntrcpDetail == null){
dataObj.put("intrcpString3", ""); return new MsgIntrcpDetailResDto(ApiResponseCode.CM_NOT_FOUND);
dataObj.put("intrcpString4", ""); }
dataObj.put("intrcpString5", "");
dataObj.put("intrcpString6", ""); List<MsgBlckwordList> msgBlckwordLists = riskMgtMapper.selectBlckwordDtlList(msgIntrcpDetailReqDto);
dataObj.put("intrcpString7", "");
dataObj.put("intrcpString8", ""); msgIntrcpDetail.setList(msgBlckwordLists);
dataObj.put("intrcpString9", "");
dataObj.put("intrcpString10", ""); return new MsgIntrcpDetailResDto(ApiResponseCode.SUCCESS, msgIntrcpDetail);
dataObj.put("condition", "OR");
dataObj.put("intrcpReason", "도박");
dataObj.put("memo", "가나다라");
dataObj.put("intrcpYn", "차단");
result.setData(dataObj);
return result;
} }
/** /**
@@ -209,70 +287,111 @@ public class RiskMgtService {
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage msgInsertIntrcp(Map<String, Object> paramMap) { public MsgInsertIntrcpResDto msgInsertIntrcp(MsgInsertIntrcpReqDto msgInsertIntrcpReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
try{
riskMgtMapper.insertMsgBlckword(msgInsertIntrcpReqDto);
//TODO 차단문구 등록
riskMgtMapper.insertBlckwordDtl(msgInsertIntrcpReqDto.getList());
}catch (Exception e){
return new MsgInsertIntrcpResDto(ApiResponseCode.CM_DB_QUERY_ERR);
}
return new MsgInsertIntrcpResDto(ApiResponseCode.SUCCESS);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 메시지 차단 수정 * desc : 메시지 차단 수정
* @param paramMap * @param msgUpdateIntrcplReqDto
* @return * @return
*/ */
public ApiResponseMessage msgUpdateIntrcp(Map<String, Object> paramMap) { public MsgUpdateIntrcpResDto msgUpdateIntrcp(MsgUpdateIntrcplReqDto msgUpdateIntrcplReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
int result = riskMgtMapper.updateMsgBlckword(msgUpdateIntrcplReqDto);
if(result > 0){
int subResult = riskMgtMapper.deleteBlckwordDtl(msgUpdateIntrcplReqDto.getSeqNo());
if(subResult > 0){
riskMgtMapper.insertBlckwordDtl(msgUpdateIntrcplReqDto.getList());
}
return new MsgUpdateIntrcpResDto(ApiResponseCode.SUCCESS);
}else{
return new MsgUpdateIntrcpResDto(ApiResponseCode.CM_NOT_FOUND);
}
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 메시지 차단 삭제 * desc : 메시지 차단 삭제
* @param paramMap * @param msgDeleteIntrcpReqDto
* @return * @return
*/ */
public ApiResponseMessage msgDeleteIntrcp(Map<String, Object> paramMap) { public MsgDeleteIntrcpResDto msgDeleteIntrcp(MsgDeleteIntrcpReqDto msgDeleteIntrcpReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; RiskMgtMapper riskMgtMapper = sqlSessionMaster.getMapper(RiskMgtMapper.class);
int result = riskMgtMapper.deleteMsgBlckword(msgDeleteIntrcpReqDto);
riskMgtMapper.deleteBlckwordDtl(msgDeleteIntrcpReqDto.getSeqNo());
return new MsgDeleteIntrcpResDto(ApiResponseCode.SUCCESS);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 차단 내역 목록 조회 * desc : 차단 내역 목록 조회
* @param paramMap * @param webInsertIntrcpReqDto
* @return * @return
*/ */
public ApiResponseMessage allIntrcpList(Map<String, Object> paramMap) { public WebIntrcpListResDto webIntrcpList(WebInsertIntrcpReqDto webInsertIntrcpReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); RiskMgtMapper riskMgtMapper = sqlSessionSlave.getMapper(RiskMgtMapper.class);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); // 현재 페이지.
data.put("totalCnt","999"); String nowPage = String.valueOf(webInsertIntrcpReqDto.getPage());
data.put("currentPage","1"); int totalCnt = riskMgtMapper.selectWebsndBlckListTotalCnt(webInsertIntrcpReqDto);
dataObj.put("paging", data);
if (totalCnt == 0) {
for(int i=0; i<10; i++) {
data = new HashMap<>(); WebIntrcpListRes webIntrcpListRes = new WebIntrcpListRes();
data.put("no", ""+(i+1)); webIntrcpListRes.setList(new ArrayList<>());
data.put("intrcpType", "발신번호차단");
data.put("sendId", "Abcd"); Paging paging = new Paging();
data.put("sendNum", "021540000"); paging.setPage(nowPage);
data.put("custNm", "가나다"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("custId", "Uplus01"); paging.setTotalCnt(String.valueOf(totalCnt));
data.put("bRegNo", "123-11-12345"); webIntrcpListRes.setPaging(paging);
data.put("recvNum", "01022223333");
data.put("intrcpReason", "도착"); return new WebIntrcpListResDto(ApiResponseCode.CM_NOT_FOUND, webIntrcpListRes);
data.put("sendDt", "2-03-22");
dataList.add(data);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = webInsertIntrcpReqDto.getPage();
int pagePerRows = webInsertIntrcpReqDto.getPagePerRows();
return result; page = (page - 1) * pagePerRows;
webInsertIntrcpReqDto.setPage(page);
List<WebIntrcpList> webIntrcpLists = riskMgtMapper.selectWebsndBlckList(webInsertIntrcpReqDto);
WebIntrcpListRes webIntrcpListRes = new WebIntrcpListRes();
webIntrcpListRes.setList(webIntrcpLists);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
webIntrcpListRes.setPaging(paging);
return new WebIntrcpListResDto(ApiResponseCode.SUCCESS, webIntrcpListRes);
} }
} }

View File

@@ -5,16 +5,18 @@
*/ */
package kr.co.uplus.ez.api.riskMgt; package kr.co.uplus.ez.api.riskMgt;
import java.util.Map; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import kr.co.uplus.ez.api.riskMgt.dto.*;
import kr.co.uplus.ez.common.components.ValidComponents;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import kr.co.uplus.ez.common.data.ApiResponseMessage; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@RestController @RestController
@RequestMapping(value = "api/v1/bo/riskMgt") @RequestMapping(value = "api/v1/bo/riskMgt")
@@ -22,19 +24,30 @@ public class RistMgtController {
@Autowired @Autowired
RiskMgtService riskService; RiskMgtService riskService;
@Autowired
ValidComponents validComponents;
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 차단 목록 조회 * desc : 발신번호 차단 목록 조회
*
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@RequestMapping(value = "/sendNum/intrcpList" , method = {RequestMethod.POST}) @ApiOperation(value = "/sendNum/intrcpList", notes = "발신번호 차단 목록 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/sendNum/intrcpList", method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumIntrcpList(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumIntrcpListResDto sendNumIntrcpList(@RequestBody @Valid SendNumIntrcpListReqDto sendNumIntrcpListReqDto, BindingResult bindingResult) {
return riskService.sendNumIntrcpList(paramMap); if(validComponents.validParameter(bindingResult)) {
return new SendNumIntrcpListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.sendNumIntrcpList(sendNumIntrcpListReqDto);
} }
/** /**
@@ -43,12 +56,19 @@ public class RistMgtController {
* desc : 발신번호 차단 상세 정보 조회 * desc : 발신번호 차단 상세 정보 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/sendNum/intrcpDetail", notes = "발신번호 차단 상세 정보 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/sendNum/intrcpDetail" , method = {RequestMethod.POST}) @RequestMapping(value = "/sendNum/intrcpDetail" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumIntrcpDetail(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumIntrcpDetailResDto sendNumIntrcpDetail(@RequestBody @Valid SendNumIntrcpDetailReqDto sendNumIntrcpDetailReqDto, BindingResult bindingResult) {
return riskService.sendNumIntrcpDetail(paramMap); if(validComponents.validParameter(bindingResult)) {
return new SendNumIntrcpDetailResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.sendNumIntrcpDetail(sendNumIntrcpDetailReqDto);
} }
/** /**
@@ -57,12 +77,19 @@ public class RistMgtController {
* desc : 발신번호 차단 신규 등록 * desc : 발신번호 차단 신규 등록
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/sendNum/insertIntrcp", notes = "발신번호 차단 신규 등록")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/sendNum/insertIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/sendNum/insertIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumInsertIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumInsertIntrcpResDto sendNumInsertIntrcp(@RequestBody @Valid SendNumInsertIntrcpReqDto insertIntrcpReqDto, BindingResult bindingResult) {
return riskService.sendNumInsertIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new SendNumInsertIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.sendNumInsertIntrcp(insertIntrcpReqDto);
} }
/** /**
@@ -71,12 +98,19 @@ public class RistMgtController {
* desc : 발신번호 차단 수정 * desc : 발신번호 차단 수정
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/sendNum/updateIntrcp", notes = "발신번호 차단 수정 ")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/sendNum/updateIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/sendNum/updateIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumUpdateIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumUpdateIntrcpResDto sendNumUpdateIntrcp(@RequestBody @Valid SendNumUpdateIntrcplReqDto sendNumUpdateIntrcplReqDto, BindingResult bindingResult) {
return riskService.sendNumUpdateIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new SendNumUpdateIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.sendNumUpdateIntrcp(sendNumUpdateIntrcplReqDto);
} }
/** /**
@@ -85,12 +119,19 @@ public class RistMgtController {
* desc : 발신번호 차단 삭제 * desc : 발신번호 차단 삭제
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/sendNum/deleteIntrcp", notes = "발신번호 차단 삭제 ")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/sendNum/deleteIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/sendNum/deleteIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage sendNumDeleteIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumDeleteIntrcpResDto sendNumDeleteIntrcp(@RequestBody @Valid SendNumDeleteIntrcpReqDto sendNumDeleteIntrcpReqDto, BindingResult bindingResult) {
return riskService.sendNumDeleteIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new SendNumDeleteIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.sendNumDeleteIntrcp(sendNumDeleteIntrcpReqDto);
} }
/** /**
@@ -99,12 +140,19 @@ public class RistMgtController {
* desc : 080수신번호 차단 목록 조회 * desc : 080수신번호 차단 목록 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/zezNum/intrcpList", notes = "080수신번호 차단 목록 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/zezNum/intrcpList" , method = {RequestMethod.POST}) @RequestMapping(value = "/zezNum/intrcpList" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage zezNumIntrcpList(@RequestBody Map<String, Object> paramMap) throws Exception{ public ZezNumIntrcpListResDto zezNumIntrcpList(@RequestBody @Valid ZezNumIntrcpListReqDto zezNumIntrcpListReqDto, BindingResult bindingResult) {
return riskService.zezNumIntrcpList(paramMap); if(validComponents.validParameter(bindingResult)) {
return new ZezNumIntrcpListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.zezNumIntrcpList(zezNumIntrcpListReqDto);
} }
/** /**
@@ -113,12 +161,19 @@ public class RistMgtController {
* desc : 메시지 차단 목록 조회 * desc : 메시지 차단 목록 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/msg/intrcpList", notes = "메시지 차단 목록 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/msg/intrcpList" , method = {RequestMethod.POST}) @RequestMapping(value = "/msg/intrcpList" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage msgIntrcpList(@RequestBody Map<String, Object> paramMap) throws Exception{ public MsgIntrcpListResDto msgIntrcpList(@RequestBody @Valid MsgIntrcpListReqDto msgNumIntrcpListReqDto, BindingResult bindingResult) {
return riskService.msgIntrcpList(paramMap); if(validComponents.validParameter(bindingResult)) {
return new MsgIntrcpListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.msgIntrcpList(msgNumIntrcpListReqDto);
} }
/** /**
@@ -127,12 +182,19 @@ public class RistMgtController {
* desc : 메시지 차단 상세 정보 조회 * desc : 메시지 차단 상세 정보 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/msg/intrcpDetail", notes = "메시지 차단 상세 정보 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/msg/intrcpDetail" , method = {RequestMethod.POST}) @RequestMapping(value = "/msg/intrcpDetail" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage msgIntrcpDetail(@RequestBody Map<String, Object> paramMap) throws Exception{ public MsgIntrcpDetailResDto msgIntrcpDetail(@RequestBody @Valid MsgIntrcpDetailReqDto msgIntrcpDetailReqDto, BindingResult bindingResult) {
return riskService.msgIntrcpDetail(paramMap); if(validComponents.validParameter(bindingResult)) {
return new MsgIntrcpDetailResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.msgIntrcpDetail(msgIntrcpDetailReqDto);
} }
/** /**
@@ -141,12 +203,19 @@ public class RistMgtController {
* desc : 메시지 차단 신규 등록 * desc : 메시지 차단 신규 등록
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/msg/insertIntrcp", notes = "메시지 차단 신규 등록")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/msg/insertIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/msg/insertIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage msgInsertIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public MsgInsertIntrcpResDto msgInsertIntrcp(@RequestBody @Valid MsgInsertIntrcpReqDto msgInsertIntrcpReqDto, BindingResult bindingResult) {
return riskService.msgInsertIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new MsgInsertIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.msgInsertIntrcp(msgInsertIntrcpReqDto);
} }
/** /**
@@ -155,12 +224,19 @@ public class RistMgtController {
* desc : 메시지 차단 수정 * desc : 메시지 차단 수정
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/msg/updateIntrcp", notes = "메시지 차단 수정")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/msg/updateIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/msg/updateIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage msgUpdateIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public MsgUpdateIntrcpResDto msgUpdateIntrcp(@RequestBody @Valid MsgUpdateIntrcplReqDto msgUpdateIntrcplReqDto, BindingResult bindingResult) {
return riskService.msgUpdateIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new MsgUpdateIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.msgUpdateIntrcp(msgUpdateIntrcplReqDto);
} }
/** /**
@@ -169,25 +245,39 @@ public class RistMgtController {
* desc : 메시지 차단 삭제 * desc : 메시지 차단 삭제
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@ApiOperation(value = "/msg/deleteIntrcp", notes = "메시지 차단 삭제")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/msg/deleteIntrcp" , method = {RequestMethod.POST}) @RequestMapping(value = "/msg/deleteIntrcp" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage msgDeleteIntrcp(@RequestBody Map<String, Object> paramMap) throws Exception{ public MsgDeleteIntrcpResDto msgDeleteIntrcp(@RequestBody @Valid MsgDeleteIntrcpReqDto msgDeleteIntrcpReqDto, BindingResult bindingResult) {
return riskService.msgDeleteIntrcp(paramMap); if(validComponents.validParameter(bindingResult)) {
return new MsgDeleteIntrcpResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.msgDeleteIntrcp(msgDeleteIntrcpReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 차단 내역 목록 조회 * desc : 웹발송 차단 내역 목록 조회
* @param paramMap * @param paramMap
* @return * @return
* @throws Exception * @
*/ */
@RequestMapping(value = "/all/intrcpList" , method = {RequestMethod.POST}) @ApiOperation(value = "/web/intrcpList", notes = "웹발송 차단 내역 목록 조회")
@ApiResponses({
@ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS")
})
@RequestMapping(value = "/web/intrcpList" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage allIntrcpList(@RequestBody Map<String, Object> paramMap) throws Exception{ public WebIntrcpListResDto webIntrcpList(@RequestBody @Valid WebInsertIntrcpReqDto webInsertIntrcpReqDto, BindingResult bindingResult) {
return riskService.allIntrcpList(paramMap); if(validComponents.validParameter(bindingResult)) {
return new WebIntrcpListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return riskService.webIntrcpList(webInsertIntrcpReqDto);
} }
} }

View File

@@ -0,0 +1,16 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgBlckwordList implements Serializable {
@ApiModelProperty(example = "일련번호", name = "일련번호", dataType = "String")
private String seqNo;
@ApiModelProperty(example = "차단문구", name = "차단문구", dataType = "String")
private String word;
}

View File

@@ -0,0 +1,19 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class MsgDeleteIntrcpReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "일련번호", name = "일련번호", dataType = "String")
private String seqNo;
private List<MsgBlckwordList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgDeleteIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public MsgDeleteIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public MsgDeleteIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public MsgDeleteIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,21 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class MsgInsertIntrcpReqDto implements Serializable {
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단조건", name = "차단조건", dataType = "String")
private String blckContCd;
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
private String memo;
private List<MsgBlckwordList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgInsertIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public MsgInsertIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public MsgInsertIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public MsgInsertIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,27 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpDetail implements Serializable {
@ApiModelProperty(example = "일련번호", name = "일련번호", dataType = "String")
private String seqNo;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단조건", name = "차단조건", dataType = "String")
private String blckContCd;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String chgDt;
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
private String memo;
private java.util.List<MsgBlckwordList> list;
}

View File

@@ -0,0 +1,16 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpDetailReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "일련번호", name = "일련번호", dataType = "String")
private String seqNo;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpDetailResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private MsgIntrcpDetail data;
public MsgIntrcpDetailResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public MsgIntrcpDetailResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public MsgIntrcpDetailResDto(ApiResponseCode returnStr, MsgIntrcpDetail data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,24 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpList implements Serializable {
@ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String")
private String no;
@ApiModelProperty(example = "차단메시지", name = "차단메시지", dataType = "String")
private String word;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String lastChgDt;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
}

View File

@@ -0,0 +1,28 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpListReqDto implements Serializable {
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
@ApiModelProperty(example = "차단사유", name = "차단사유",dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단메시지", name = "차단메시지",dataType = "String")
private String word;
@NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String")
private int pagePerRows;
@NotNull
@ApiModelProperty(example = "현재 페이지", name = "현재 페이지", dataType = "int")
private int page;
}

View File

@@ -0,0 +1,15 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import kr.co.uplus.ez.common.data.Paging;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpListRes implements Serializable{
private Paging paging;
private List<MsgIntrcpList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgIntrcpListResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private MsgIntrcpListRes data;
public MsgIntrcpListResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public MsgIntrcpListResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public MsgIntrcpListResDto(ApiResponseCode returnStr, MsgIntrcpListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class MsgUpdateIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public MsgUpdateIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public MsgUpdateIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public MsgUpdateIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,25 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class MsgUpdateIntrcplReqDto implements Serializable {
@ApiModelProperty(example = "일련번호", name = "일련번호", dataType = "String")
private String seqNo;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단조건", name = "차단조건", dataType = "String")
private String blckContCd;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
private String memo;
private List<MsgBlckwordList> list;
}

View File

@@ -0,0 +1,16 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumDeleteIntrcpReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String blckSndrno;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumDeleteIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public SendNumDeleteIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public SendNumDeleteIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public SendNumDeleteIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,30 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumInsertIntrcpReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "검색어 (발신번호)", name = "검색어 (발신번호)", dataType = "String")
private String blckSndrno;
@NotNull
@ApiModelProperty(example = "발송타입", name = "발송타입",dataType = "String")
private String sndblckTpCd;
@NotNull
@ApiModelProperty(example = "차단사유", name = "차단사유",dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "메모", name = "메모",dataType = "String")
private String meno;
/** 차단 여부*/
@ApiModelProperty(example = "차단여부", name = "차단여부",dataType = "String")
private String blckYn;
@ApiModelProperty(example = "등록자", name = "등록자",dataType = "String")
private String regId;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumInsertIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public SendNumInsertIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public SendNumInsertIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public SendNumInsertIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,26 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpDetail implements Serializable {
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String blcksndrno;
@ApiModelProperty(example = "발송타입", name = "발송타입", dataType = "String")
private String sndblckTpCd;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String chgDt;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
private String meno;
}

View File

@@ -0,0 +1,16 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpDetailReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "검색어 (발신번호)", name = "검색어 (발신번호)", dataType = "String")
private String blckSndrno;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpDetailResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private SendNumIntrcpDetail data;
public SendNumIntrcpDetailResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public SendNumIntrcpDetailResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public SendNumIntrcpDetailResDto(ApiResponseCode returnStr, SendNumIntrcpDetail data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,26 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpList implements Serializable {
@ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String")
private String no;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String blcksndrno;
@ApiModelProperty(example = "발송타입", name = "발송타입", dataType = "String")
private String sndblckTpCd;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String lastChgDt;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
}

View File

@@ -0,0 +1,32 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpListReqDto implements Serializable {
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
@ApiModelProperty(example = "차단사유", name = "차단사유",dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단여부", name = "차단여부",dataType = "String")
private String blckYn;
@ApiModelProperty(example = "발송타입", name = "발송타입",dataType = "String")
private String sndblckTpCd;
@ApiModelProperty(example = "검색어 (발신번호)", name = "검색어 (발신번호)", dataType = "String")
private String blckSndrno;
@NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String")
private int pagePerRows;
@NotNull
@ApiModelProperty(example = "현재 페이지", name = "현재 페이지", dataType = "int")
private int page;
}

View File

@@ -0,0 +1,15 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import kr.co.uplus.ez.common.data.Paging;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpListRes implements Serializable{
private Paging paging;
private List<SendNumIntrcpList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumIntrcpListResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private SendNumIntrcpListRes data;
public SendNumIntrcpListResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public SendNumIntrcpListResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public SendNumIntrcpListResDto(ApiResponseCode returnStr, SendNumIntrcpListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumUpdateIntrcpResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private Object data;
public SendNumUpdateIntrcpResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public SendNumUpdateIntrcpResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public SendNumUpdateIntrcpResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,31 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class SendNumUpdateIntrcplReqDto implements Serializable {
@NotNull
@ApiModelProperty(example = "검색어 (발신번호)", name = "검색어 (발신번호)", dataType = "String")
private String blckSndrno;
@ApiModelProperty(example = "발송타입", name = "발송타입", dataType = "String")
private String sndblckTpCd;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String chgDt;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId;
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
private String meno;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String chgId;
}

View File

@@ -0,0 +1,36 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class WebInsertIntrcpReqDto implements Serializable {
@ApiModelProperty(example = "발송일", name = "발송일", dataType = "String")
private String blckDt;
@ApiModelProperty(example = "차단사유", name = "차단사유",dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "차단구분", name = "차단구분",dataType = "String")
private String blckTpCd;
@ApiModelProperty(example = "발신번호", name = "발신번호",dataType = "String")
private String sndrno;
@ApiModelProperty(example = "수신번호", name = "수신번호", dataType = "String")
private String rcvno;
@ApiModelProperty(example = "상세검색", name = "상세검색", notes = "항목 : 고객사명/사업자번호/발송ID", dataType = "String")
private String searchType1;
@ApiModelProperty(example = "검색어 (입력항목)", name = "검색어 (입력항목)", dataType = "String")
private String searchText1;
@NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String")
private int pagePerRows;
@NotNull
@ApiModelProperty(example = "현재 페이지", name = "현재 페이지", dataType = "int")
private int page;
}

View File

@@ -0,0 +1,30 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class WebIntrcpList implements Serializable {
@ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String")
private String no;
@ApiModelProperty(example = "차단구분", name = "차단구분", dataType = "String")
private String blckTpCd;
@ApiModelProperty(example = "발송ID", name = "발송ID", dataType = "String")
private String userId;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String sndrno;
@ApiModelProperty(example = "고객사명", name = "고객사명", dataType = "String")
private String custNm;
@ApiModelProperty(example = "사업자번호", name = "사업자번호", dataType = "String")
private String bizrno;
@ApiModelProperty(example = "수신번호", name = "수신번호", dataType = "String")
private String rcvno;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String")
private String blckRsnCd;
@ApiModelProperty(example = "발송일자", name = "발송일자", dataType = "String")
private String blckDt;
}

View File

@@ -0,0 +1,15 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import kr.co.uplus.ez.common.data.Paging;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class WebIntrcpListRes implements Serializable{
private Paging paging;
private List<WebIntrcpList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class WebIntrcpListResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private WebIntrcpListRes data;
public WebIntrcpListResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public WebIntrcpListResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public WebIntrcpListResDto(ApiResponseCode returnStr, WebIntrcpListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,27 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ZezNumIntrcpList implements Serializable {
@ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String")
private String no;
@ApiModelProperty(example = "고객사", name = "고객사", dataType = "String")
private String custNm;
@ApiModelProperty(example = "사업자번호", name = "사업자번호", dataType = "String")
private String bizrno;
@ApiModelProperty(example = "인증코드", name = "인증코드",dataType = "String")
private String authcd080;
@ApiModelProperty(example = "수신번호", name = "수신번호", dataType = "String")
private String rcvblckno;
@ApiModelProperty(example = "등록일", name = "등록일", dataType = "String")
private String regDt;
@ApiModelProperty(example = "등록구분", name = "등록구분", dataType = "String")
private String regTpCd;
}

View File

@@ -0,0 +1,28 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ZezNumIntrcpListReqDto implements Serializable {
@ApiModelProperty(example = "고객사", name = "고객사", dataType = "String")
private String custNm;
@ApiModelProperty(example = "인증코드", name = "인증코드",dataType = "String")
private String authcd080;
@ApiModelProperty(example = "수신번호", name = "수신번호", dataType = "String")
private String rcvblckno;
@NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String")
private int pagePerRows;
@NotNull
@ApiModelProperty(example = "현재 페이지", name = "현재 페이지", dataType = "int")
private int page;
}

View File

@@ -0,0 +1,15 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import kr.co.uplus.ez.common.data.Paging;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("serial")
@Data
public class ZezNumIntrcpListRes implements Serializable{
private Paging paging;
private List<ZezNumIntrcpList> list;
}

View File

@@ -0,0 +1,33 @@
package kr.co.uplus.ez.api.riskMgt.dto;
import io.swagger.annotations.ApiModelProperty;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class ZezNumIntrcpListResDto extends ResponseMessage implements Serializable{
@ApiModelProperty(example = "데이터")
private ZezNumIntrcpListRes data;
public ZezNumIntrcpListResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public ZezNumIntrcpListResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public ZezNumIntrcpListResDto(ApiResponseCode returnStr, ZezNumIntrcpListRes data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -1,19 +1,40 @@
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호관리 * desc : 발신번호관리
*/ */
package kr.co.uplus.ez.api.sendNumMgt; package kr.co.uplus.ez.api.sendNumMgt;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListResDto;
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 kr.co.uplus.ez.common.data.ApiResponseMessage;
@RestController @RestController
@@ -22,117 +43,162 @@ public class SendNumMgtController {
@Autowired @Autowired
SendNumMgtService sendNumService; SendNumMgtService sendNumService;
@Autowired
ValidComponents validComponents;
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신 프로필 목록 조회 * desc : 발신 프로필 목록 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/profileList" , method = {RequestMethod.POST}) @ApiOperation(value = "/profileList", notes = "발신 프로필 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "profileList", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage profileList(@RequestBody Map<String, Object> paramMap) throws Exception{ public ProfileListResDto profileList(@RequestBody @Valid ProfileListReqDto profileListReqDto, BindingResult bindingResult) {
return sendNumService.profileList(paramMap);
if (validComponents.validParameter(bindingResult)) {
return new ProfileListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.profileList(profileListReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 목록 조회 * desc : 문자 발신 번호 목록 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/numberList" , method = {RequestMethod.POST})
@ApiOperation(value = "/numberList", notes = "문자 발신 번호 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "numberList", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage numberList(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendNumberListResDto numberList(@RequestBody @Valid SendNumberListReqDto sendNumberListReqDto, BindingResult bindingResult) throws Exception{
return sendNumService.numberList(paramMap);
if (validComponents.validParameter(bindingResult)) {
return new SendNumberListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.numberList(sendNumberListReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 삭제 * desc : 문자 발신 번호 삭제
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/deleteNumber" , method = {RequestMethod.POST})
@ApiOperation(value = "/deleteNumber", notes = "문자 발신 번호 삭제")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "deleteNumber", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage deleteNumber(@RequestBody Map<String, Object> paramMap) throws Exception{ public DeleteNumberResDto deleteNumber(@RequestBody @Valid DeleteNumberReqDto deleteNumberReqDto, BindingResult bindingResult) throws Exception{
return sendNumService.deleteNumber(paramMap); if (validComponents.validParameter(bindingResult)) {
return new DeleteNumberResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.deleteNumber(deleteNumberReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 등록 * desc : 문자 발신 번호 등록
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/insertNumber" , method = {RequestMethod.POST})
@ApiOperation(value = "/insertNumber", notes = "문자 발신 번호 등록")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "insertNumber", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage insertNumber(@RequestBody Map<String, Object> paramMap) throws Exception{ public InsertNumberResDto insertNumber(@RequestBody @Valid InsertNumberReqDto insertNumberReqDto, BindingResult bindingResult) throws Exception{
return sendNumService.insertNumber(paramMap);
if (validComponents.validParameter(bindingResult)) {
return new InsertNumberResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.insertNumber(insertNumberReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 정보 상세 조회 * desc : 문자 발신 번호 정보 상세 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/numberDetail" , method = {RequestMethod.POST}) @ApiOperation(value = "/numberDetail", notes = "문자 발신 번호 정보 상세 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "numberDetail", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage numberDetail(@RequestBody Map<String, Object> paramMap) throws Exception{ public DetailNumberResDto numberDetail(@RequestBody @Valid DetailNumberReqDto detailNumberReqDto, BindingResult bindingResult) throws Exception{
return sendNumService.numberDetail(paramMap);
if (validComponents.validParameter(bindingResult)) {
return new DetailNumberResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.numberDetail(detailNumberReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 관리자ID 목록 조회 * desc : 관리자ID 목록 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/adminList" , method = {RequestMethod.POST}) @ApiOperation(value = "/adminList", notes = "관리자ID 목록 조회")
@ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") })
@RequestMapping(value = "adminList", method = { RequestMethod.POST })
@ResponseBody @ResponseBody
public ApiResponseMessage adminList(@RequestBody Map<String, Object> paramMap) throws Exception{ public SendAdminListResDto adminList(@RequestBody @Valid SendAdminListReqDto adminListReqDto, BindingResult bindingResult) throws Exception{
return sendNumService.adminList(paramMap);
if (validComponents.validParameter(bindingResult)) {
return new SendAdminListResDto(ApiResponseCode.CM_PARAMETER_ERROR);
}
return sendNumService.adminList(adminListReqDto);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 승인 목록 조회 * desc : 발신번호 승인 목록 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/apprList" , method = {RequestMethod.POST}) @RequestMapping(value = "/apprList" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage apprList(@RequestBody Map<String, Object> paramMap) throws Exception{ public ApiResponseMessage apprList(@RequestBody Map<String, Object> paramMap) throws Exception{
return sendNumService.apprList(paramMap); return sendNumService.apprList(paramMap);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신번호 승인 상세 정보 조회 * desc : 발신번호 승인 상세 정보 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/apprDetail" , method = {RequestMethod.POST}) @RequestMapping(value = "/apprDetail" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody
public ApiResponseMessage apprDetail(@RequestBody Map<String, Object> paramMap) throws Exception{ public ApiResponseMessage apprDetail(@RequestBody Map<String, Object> paramMap) throws Exception{
return sendNumService.apprDetail(paramMap); return sendNumService.apprDetail(paramMap);
} }
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발송내역 목록 조회 * desc : 발송내역 목록 조회
* @param paramMap * @param paramMap
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/insertAppr" , method = {RequestMethod.POST}) @RequestMapping(value = "/insertAppr" , method = {RequestMethod.POST})
@ResponseBody @ResponseBody

View File

@@ -1,8 +1,51 @@
package kr.co.uplus.ez.api.sendNumMgt; package kr.co.uplus.ez.api.sendNumMgt;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.AuthFileInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumber;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumber;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberFile;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListReqDto;
@Mapper @Mapper
public class SendNumMgtMapper { interface SendNumMgtMapper {
int selectProfileTotalCnt(ProfileListReqDto profileListReqDto);
List<ProfileInfo> selectProfileList(ProfileListReqDto profileListReqDto);
int selectSendNumberTotalCnt(SendNumberListReqDto sendNumberListReqDto);
List<SendNumberInfo> selectSendNumberList(SendNumberListReqDto sendNumberListReqDto);
int selectAdminTotalCnt(SendAdminListReqDto adminListReqDto);
List<SendAdminInfo> selectAdminList(SendAdminListReqDto adminlistreqdto);
String selectUserSeqByAdminId(String adminId);
int deleteNumber(DeleteNumberReqDto deleteNumberReqDto);
void insertNumber(InsertNumberReqDto insertNumberReqDto);
void insertNumberDoc(InsertNumberFile insertNumberFile);
void insertNumberList(InsertNumber insertNumber);
String selectUserSeqByRegNo(DetailNumberReqDto detailNumberReqDto);
DetailNumber detailNumber(DetailNumberReqDto detailNumberReqDto);
List<AuthFileInfo> selectAuthFileList(DetailNumberReqDto detailNumberReqDto);
} }

View File

@@ -1,49 +1,104 @@
package kr.co.uplus.ez.api.sendNumMgt; package kr.co.uplus.ez.api.sendNumMgt;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.io.FilenameUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListRes;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.AuthFileInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.AuthFileList;
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumber;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumber;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberFile;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListRes;
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListResDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberInfo;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListReqDto;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListRes;
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListResDto;
import kr.co.uplus.ez.api.sysMgt.SysMgtMapper;
import kr.co.uplus.ez.api.sysMgt.dto.AdminDetail;
import kr.co.uplus.ez.api.sysMgt.dto.AdminDetailResDto;
import kr.co.uplus.ez.api.sysMgt.dto.InsertAdminReqDto;
import kr.co.uplus.ez.api.sysMgt.dto.InsertAdminResDto;
import kr.co.uplus.ez.common.data.ApiResponseCode; import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ApiResponseMessage; import kr.co.uplus.ez.common.data.ApiResponseMessage;
import kr.co.uplus.ez.common.data.Paging;
import kr.co.uplus.ez.common.utils.EncryptionUtil;
import kr.co.uplus.ez.common.utils.FileUtil;
@Service @Service
public class SendNumMgtService { public class SendNumMgtService {
@Autowired
@Qualifier("sqlSessionTemplateDb1")
private SqlSessionTemplate sqlSessionMaster;
@Autowired
@Qualifier("sqlSessionTemplateDb2")
private SqlSessionTemplate sqlSessionSlave;
/** /**
* date : 2022. 4. 25. * date : 2022. 4. 25.
* auth : ckr * auth : ckr
* desc : 발신 프로필 목록 조회 * desc : 발신 프로필 목록 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage profileList(Map<String, Object> paramMap) { public ProfileListResDto profileList(ProfileListReqDto profileListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
Map<String, Object> dataObj = new HashMap<>(); String nowPage = String.valueOf(profileListReqDto.getPage());
List<Map<String,Object>> dataList = new ArrayList<>(); int totalCnt = sendNumMgtMapper.selectProfileTotalCnt(profileListReqDto);
Map<String, Object> data = new HashMap<>();
data.put("totalCnt","999"); if(totalCnt == 0) {
data.put("currentPage","1"); Paging paging = new Paging();
dataObj.put("paging", data); paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
for(int i=0; i<10; i++) { ProfileListRes profileListRes = new ProfileListRes();
data = new HashMap<>(); profileListRes.setList(new ArrayList<>());
data.put("no", ""+(i+1)); profileListRes.setPaging(paging);
data.put("custNm", "유플러스"); return new ProfileListResDto(ApiResponseCode.CM_NOT_FOUND, profileListRes);
data.put("bRegNo", "229-81-39938");
data.put("sendProfile", "@유플러스");
data.put("sendProfileKey", "Ea98cv472cff7f5bdbc90");
data.put("stat", "사용");
data.put("regDt", "2022-03-10");
dataList.add(data);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = profileListReqDto.getPage();
int pagePerRows = profileListReqDto.getPage();
return result; page = (page - 1) * pagePerRows;
profileListReqDto.setPage(page);
List<ProfileInfo> profileInfos = sendNumMgtMapper.selectProfileList(profileListReqDto);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
ProfileListRes profileListRes = new ProfileListRes();
profileListRes.setList(profileInfos);
profileListRes.setPaging(paging);
return new ProfileListResDto(ApiResponseCode.SUCCESS, profileListRes);
} }
/** /**
@@ -51,35 +106,39 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 목록 조회 * desc : 문자 발신 번호 목록 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage numberList(Map<String, Object> paramMap) { public SendNumberListResDto numberList(SendNumberListReqDto sendNumberListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
Map<String, Object> dataObj = new HashMap<>(); String nowPage = String.valueOf(sendNumberListReqDto.getPage());
List<Map<String,Object>> dataList = new ArrayList<>(); int totalCnt = sendNumMgtMapper.selectSendNumberTotalCnt(sendNumberListReqDto);
Map<String, Object> data = new HashMap<>();
data.put("totalCnt","999"); if(totalCnt == 0) {
data.put("currentPage","1"); Paging paging = new Paging();
dataObj.put("paging", data); paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
for(int i=0; i<10; i++) { SendNumberListRes sendNumberListRes = new SendNumberListRes();
data = new HashMap<>(); sendNumberListRes.setList(new ArrayList<>());
data.put("no", ""+(i+1)); sendNumberListRes.setPaging(paging);
data.put("custNm", "유플러스"); return new SendNumberListResDto(ApiResponseCode.CM_NOT_FOUND, sendNumberListRes);
data.put("adminId", "Uplus01");
data.put("register", "Uplus01");
data.put("bRegNo", "229-81-39938");
data.put("sendNum", "010-1234-1234");
data.put("apprStat", "승인완료");
data.put("regMethod", "본인인등");
data.put("regDt", "2022-03-10");
data.put("regNo", "12345");
dataList.add(data);
} }
dataObj.put("list", dataList);
result.setData(dataObj); int page = sendNumberListReqDto.getPage();
int pagePerRows = sendNumberListReqDto.getPage();
return result; page = (page - 1) * pagePerRows;
sendNumberListReqDto.setPage(page);
List<SendNumberInfo> sendNumberInfos = sendNumMgtMapper.selectSendNumberList(sendNumberListReqDto);
Paging paging = new Paging();
paging.setPage(nowPage);
paging.setTotalCnt(String.valueOf(totalCnt));
SendNumberListRes sendNumberListRes = new SendNumberListRes();
sendNumberListRes.setList(sendNumberInfos);
sendNumberListRes.setPaging(paging);
return new SendNumberListResDto(ApiResponseCode.SUCCESS, sendNumberListRes);
} }
/** /**
@@ -87,11 +146,19 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 삭제 * desc : 문자 발신 번호 삭제
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage deleteNumber(Map<String, Object> paramMap) { public DeleteNumberResDto deleteNumber(DeleteNumberReqDto deleteNumberReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
return result; SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
try {
sendNumMgtMapper.deleteNumber(deleteNumberReqDto);
} catch (Exception e) {
return new DeleteNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);
}
return new DeleteNumberResDto(ApiResponseCode.SUCCESS);
} }
/** /**
@@ -99,11 +166,148 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 등록 * desc : 문자 발신 번호 등록
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage insertNumber(Map<String, Object> paramMap) { public InsertNumberResDto insertNumber(InsertNumberReqDto insertNumberReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); FileUtil fileUtil = new FileUtil();
return result;
SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
String adminId = insertNumberReqDto.getAdminId();
String userSeq = sendNumMgtMapper.selectUserSeqByAdminId(adminId);
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<insertNumberReqDto.getAuthSendNum().size();i++) {
String docTpCd = "";
if(insertNumberReqDto.getAuthSendNum().size() == 2) { //서류 유형코드 구분
switch(i){
case 0:
docTpCd = "08"; // 통신서비스 이용 증명원
break;
case 1:
docTpCd = "07"; //재직증명서
break;
default:
docTpCd = "00";
break;
}
}
else if(insertNumberReqDto.getAuthSendNum().size() == 4) {//서류 유형코드 구분
switch(i){
case 0:
docTpCd = "03"; //위임수임관계확인서류
break;
case 1:
docTpCd = "04"; //위임장
break;
case 2:
docTpCd = "05"; //대리인 신분증 사본 인증
break;
case 3:
docTpCd = "07"; //재직증명서
break;
default:
docTpCd = "00";
break;
}
}
path += path +"/"+ docTpCd;
InsertNumberFile insertFile = new InsertNumberFile();
MultipartFile file = insertNumberReqDto.getAuthSendNum().get(i);
String docTitle = file.getName();
String fileNm = file.getOriginalFilename();
String filePath = path+"/"+file.getOriginalFilename();
long fileSize = file.getSize();
String regId = insertNumberReqDto.getRegId();
if(!fileUtil.upload(file, docTitle, path)) {//파일저장
return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);//파일저장 실패시
}
//파일저장 성공시 insert
insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertFile.setDocTpCd(docTpCd);
insertFile.setDocTitle(docTitle);
insertFile.setFileNm(fileNm);
insertFile.setFilePath(filePath);
insertFile.setFileSize(fileSize);
insertFile.setRegId(regId);
// 2. EZ_SNDRNO_DOC
sendNumMgtMapper.insertNumberDoc(insertFile);
}
for(int j=0;j<insertNumberReqDto.getAuthBsns().size();j++) {
String docTpCd = "";
switch(j){//서류 유형코드 구분
case 0:
docTpCd = "06"; //사업자등록증
break;
default:
docTpCd = "00";
break;
}
path += path +"/"+ docTpCd;
InsertNumberFile insertFile = new InsertNumberFile();
MultipartFile file = insertNumberReqDto.getAuthSendNum().get(j);
String docTitle = file.getName();
String fileNm = file.getOriginalFilename();
String filePath = path+"/"+file.getOriginalFilename();
long fileSize = file.getSize();
String regId = insertNumberReqDto.getRegId();
if(!fileUtil.upload(file, docTitle, path)) {//파일저장
return new InsertNumberResDto(ApiResponseCode.SE_UNKNOWN);// 파일저장 실패하면
}
insertFile.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertFile.setDocTpCd(docTpCd);
insertFile.setDocTitle(docTitle);
insertFile.setFileNm(fileNm);
insertFile.setFilePath(filePath);
insertFile.setFileSize(fileSize);
insertFile.setRegId(regId);
// 3. EZ_SVC_SNDRNO
sendNumMgtMapper.insertNumberDoc(insertFile);
}
for(int k=0;k<insertNumberReqDto.getList().size();k++) {
InsertNumber insertNumber = insertNumberReqDto.getList().get(k);
insertNumber.setCustSeq(insertNumberReqDto.getUserSeq());
insertNumber.setRegReqNo(insertNumberReqDto.getRegReqNo());
insertNumber.setNmineeDivCd(insertNumberReqDto.getNmineeDivCd());
insertNumber.setInchDivCd(insertNumberReqDto.getInchDivCd());
sendNumMgtMapper.insertNumberList(insertNumber);
}
} catch (Exception e) {
return new InsertNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);
}
return new InsertNumberResDto(ApiResponseCode.SUCCESS);
} }
/** /**
@@ -111,29 +315,25 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 문자 발신 번호 정보 상세 조회 * desc : 문자 발신 번호 정보 상세 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage numberDetail(Map<String, Object> paramMap) { public DetailNumberResDto numberDetail(DetailNumberReqDto detailNumberReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
Map<String, Object> dataObj = new HashMap<>(); SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); DetailNumber detailNumber = new DetailNumber();
dataObj.put("adminId", "Uplus01"); try {
dataObj.put("custNm", "유플러스"); detailNumber = sendNumMgtMapper.detailNumber(detailNumberReqDto);
dataObj.put("bRegNo", "229-81-39938");
dataObj.put("authSendNumYn", "Y"); if(detailNumber == null) {
dataObj.put("authBsnsYn", "Y"); return new DetailNumberResDto(ApiResponseCode.CM_NOT_FOUND);
}
for(int i=0; i<10; i++) { detailNumber.setList(sendNumMgtMapper.selectAuthFileList(detailNumberReqDto));
data = new HashMap<>(); } catch (Exception e) {
data.put("sendNm", "테스트"+(i+1)); return new DetailNumberResDto(ApiResponseCode.CM_DB_QUERY_ERR);
data.put("sendNum", "02-555-5555");
dataList.add(data);
} }
dataObj.put("list", dataList);
result.setData(dataObj); return new DetailNumberResDto(ApiResponseCode.SUCCESS, detailNumber);
return result;
} }
/** /**
@@ -141,32 +341,27 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 관리자ID 목록 조회 * desc : 관리자ID 목록 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage adminList(Map<String, Object> paramMap) { public SendAdminListResDto adminList(SendAdminListReqDto adminListReqDto) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
Map<String, Object> dataObj = new HashMap<>(); int totalCnt = sendNumMgtMapper.selectAdminTotalCnt(adminListReqDto);
List<Map<String,Object>> dataList = new ArrayList<>();
Map<String, Object> data = new HashMap<>(); if(totalCnt == 0) {
SendAdminListRes adminListRes = new SendAdminListRes();
data = new HashMap<>(); adminListRes.setList(new ArrayList<>());
data.put("adminId", "Test"); return new SendAdminListResDto(ApiResponseCode.CM_NOT_FOUND, adminListRes);
data.put("bRegNo", "229-81-39938"); }
dataList.add(data);
List<SendAdminInfo> adminInfos = sendNumMgtMapper.selectAdminList(adminListReqDto);
data = new HashMap<>();
data.put("adminId", "Test01"); Paging paging = new Paging();
data.put("bRegNo", "229-81-55555"); paging.setTotalCnt(String.valueOf(totalCnt));
dataList.add(data);
SendAdminListRes adminListRes = new SendAdminListRes();
data = new HashMap<>(); adminListRes.setList(adminInfos);
data.put("adminId", "Test02");
data.put("bRegNo", "229-81-44444"); return new SendAdminListResDto(ApiResponseCode.SUCCESS, adminListRes);
dataList.add(data);
dataObj.put("list", dataList);
result.setData(dataObj);
return result;
} }
/** /**
@@ -174,7 +369,7 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 발신번호 승인 목록 조회 * desc : 발신번호 승인 목록 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage apprList(Map<String, Object> paramMap) { public ApiResponseMessage apprList(Map<String, Object> paramMap) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
@@ -184,10 +379,10 @@ public class SendNumMgtService {
data.put("totalCnt","999"); data.put("totalCnt","999");
data.put("currentPage","1"); data.put("currentPage","1");
dataObj.put("paging", data); dataObj.put("paging", data);
for(int i=0; i<10; i++) { for(int i=0; i<10; i++) {
data = new HashMap<>(); data = new HashMap<>();
data.put("no", ""+(i+1)); data.put("no", ""+(i+1));
data.put("reqApprDt", "2022-03-03"); data.put("reqApprDt", "2022-03-03");
data.put("adminId", "Uplus01"); data.put("adminId", "Uplus01");
data.put("register", "Uplus01"); data.put("register", "Uplus01");
@@ -197,12 +392,12 @@ public class SendNumMgtService {
data.put("returnCnt", "1"); data.put("returnCnt", "1");
data.put("apprStat", "처리완료"); data.put("apprStat", "처리완료");
data.put("apprDt", "2022-03-03"); data.put("apprDt", "2022-03-03");
dataList.add(data); dataList.add(data);
} }
dataObj.put("list", dataList); dataObj.put("list", dataList);
result.setData(dataObj); result.setData(dataObj);
return result; return result;
} }
@@ -211,7 +406,7 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 발신번호 승인 상세 정보 조회 * desc : 발신번호 승인 상세 정보 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage apprDetail(Map<String, Object> paramMap) { public ApiResponseMessage apprDetail(Map<String, Object> paramMap) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);
@@ -226,29 +421,29 @@ public class SendNumMgtService {
dataObj.put("returnReason", "반려내용 - 사용거부 번호"); dataObj.put("returnReason", "반려내용 - 사용거부 번호");
dataObj.put("authSendNumNms", "통신서비스 가입증명원.jpg"); dataObj.put("authSendNumNms", "통신서비스 가입증명원.jpg");
dataObj.put("authBsnsNms", "인감증명서.jpg,사업자등록증.jpg"); dataObj.put("authBsnsNms", "인감증명서.jpg,사업자등록증.jpg");
data = new HashMap<>(); data = new HashMap<>();
data.put("no", "1"); data.put("no", "1");
data.put("sendNum", "02-1234-5678"); data.put("sendNum", "02-1234-5678");
data.put("apprStat", "반려"); data.put("apprStat", "반려");
dataList.add(data); dataList.add(data);
data = new HashMap<>(); data = new HashMap<>();
data.put("no", "2"); data.put("no", "2");
data.put("sendNum", "070-1234-5678"); data.put("sendNum", "070-1234-5678");
data.put("apprStat", "승인"); data.put("apprStat", "승인");
dataList.add(data); dataList.add(data);
data = new HashMap<>(); data = new HashMap<>();
data.put("no", "3"); data.put("no", "3");
data.put("sendNum", "1588-1677"); data.put("sendNum", "1588-1677");
data.put("apprStat", "승인"); data.put("apprStat", "승인");
dataList.add(data); dataList.add(data);
dataObj.put("list", dataList); dataObj.put("list", dataList);
result.setData(dataObj); result.setData(dataObj);
return result; return result;
} }
@@ -257,7 +452,7 @@ public class SendNumMgtService {
* auth : ckr * auth : ckr
* desc : 발송내역 목록 조회 * desc : 발송내역 목록 조회
* @param paramMap * @param paramMap
* @return * @return
*/ */
public ApiResponseMessage insertAppr(Map<String, Object> paramMap) { public ApiResponseMessage insertAppr(Map<String, Object> paramMap) {
ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS); ApiResponseMessage result = new ApiResponseMessage(ApiResponseCode.SUCCESS);

View File

@@ -0,0 +1,27 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class AuthFileInfo implements Serializable{
@ApiModelProperty(example = "서류 유형 코드", name = "서류 유형 코드", dataType = "String")
private String docTpCd;
@ApiModelProperty(example = "서류 제목", name = "서류 제목", dataType = "String")
private String docTitle;
@ApiModelProperty(example = "파일 명", name = "파일 명", dataType = "String")
private String fileNm;
@ApiModelProperty(example = "파일 경로", name = "파일 경로", dataType = "String")
private String filePath;
@ApiModelProperty(example = "파일 크기", name = "파일 크기", dataType = "String")
private String fileSize;
}

View File

@@ -0,0 +1,12 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class AuthFileList implements Serializable{
List<AuthFileInfo> list;
}

View File

@@ -0,0 +1,17 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class DeleteNumber implements Serializable{
@ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
private String regNo;
@ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String")
private String adminId;
}

View File

@@ -0,0 +1,16 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class DeleteNumberReqDto implements Serializable{
@ApiModelProperty(example = "등록번호 리스트", name = "등록번호 리스트", dataType = "String")
private List<DeleteNumber> list;
}

View File

@@ -0,0 +1,32 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.ResponseMessage;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class DeleteNumberResDto extends ResponseMessage implements Serializable{
// 데이터.
private Object data;
public DeleteNumberResDto() {
this.retCode = ApiResponseCode.SUCCESS.getResultCode();
this.retMsg = ApiResponseCode.SUCCESS.getResultMsg();
}
public DeleteNumberResDto(ApiResponseCode returnStr) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
}
public DeleteNumberResDto(ApiResponseCode returnStr, Object data) {
this.retCode = returnStr.getResultCode();
this.retMsg = returnStr.getResultMsg();
this.data = data;
}
}

View File

@@ -0,0 +1,29 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class DetailNumber implements Serializable{
@ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String")
private String adminId;
@ApiModelProperty(example = "고객사명(이름)", name = "고객사명(이름)", dataType = "String")
private String custNm;
@ApiModelProperty(example = "사업자번호(생년월일)", name = "사업자번호(생년월일)", dataType = "String")
private String bRegNo;
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
private String regNo;
@ApiModelProperty(example = "명의자 구분", name = "명의자 구분", dataType = "String")
private String nmineeDivCd;
private List<AuthFileInfo> list;
@ApiModelProperty(example = "등록요청번호", name = "등록요청번호", dataType = "String", hidden=true)
private String regRegNo;
}

View File

@@ -0,0 +1,18 @@
package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial")
@Data
public class DetailNumberReqDto implements Serializable{
@ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
private String regNo;
@ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String")
private String adminId;
}

Some files were not shown because too many files have changed in this diff Show More