From fdcd63de44b77d562fc5d933490982f1686d99f3 Mon Sep 17 00:00:00 2001 From: kubo8 Date: Fri, 10 Feb 2023 09:32:18 +0900 Subject: [PATCH] =?UTF-8?q?=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=B0=98?= =?UTF-8?q?=EB=A0=A4=20=ED=8C=9D=EC=97=85=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channelMgt/service/channelMgtApi.js | 5 ++ .../modules/channelMgt/views/TmpltList.vue | 52 +++++++++++++++- .../api/channelMgt/ChannelMgtController.java | 21 +++++++ .../ez/api/channelMgt/ChannelMgtService.java | 60 +++++++++++++++++++ .../ez/api/channelMgt/dto/TmpltInfo.java | 5 ++ .../api/channelMgt/dto/TmpltListReqDto.java | 5 ++ .../api/channelMgt/dto/TmpltListResDto.java | 6 ++ .../components/WebClientRequestService.java | 1 + 8 files changed, 153 insertions(+), 2 deletions(-) diff --git a/frontend/src/modules/channelMgt/service/channelMgtApi.js b/frontend/src/modules/channelMgt/service/channelMgtApi.js index 1494529..a15a8aa 100644 --- a/frontend/src/modules/channelMgt/service/channelMgtApi.js +++ b/frontend/src/modules/channelMgt/service/channelMgtApi.js @@ -27,8 +27,13 @@ const getExcelHeader = category => { }); }; +const tmpltRejectList = (params) => { + return httpClient.post('/api/v1/bo/channelMgt/tmpltRejectList', params); +} + export default { getCommCode, tmpltListExcel, getExcelHeader, + tmpltRejectList } diff --git a/frontend/src/modules/channelMgt/views/TmpltList.vue b/frontend/src/modules/channelMgt/views/TmpltList.vue index c9bdbdf..e0e8c01 100644 --- a/frontend/src/modules/channelMgt/views/TmpltList.vue +++ b/frontend/src/modules/channelMgt/views/TmpltList.vue @@ -63,8 +63,9 @@ :addCls="grid.addCls" :header="grid.headder" > - + + @@ -76,8 +77,38 @@ import channelMgtApi from '../service/channelMgtApi'; import xlsx from '@/common/excel'; import moment from 'moment'; import commonModal from '@/components/modal/commonModal'; +import TmpltRejectViewPop from '../components/TmpltRejectViewPop'; import api from '@/service/api'; +class CustomATagRenderer { + constructor(props) { + this.props = props; + if(props.colValue == "반려"){ + const el = document.createElement('a'); + el.href = 'javascript:void(0);'; + el.className = 'btn_text'; + el.innerText = String(props.colValue); + this.el = el; + }else{ + const el = document.createElement('p'); + el.className = 'btn_text'; + el.innerText = String(props.colValue); + this.el = el; + } + } + + getElement() { + return this.el; + } + + addEvent(selEl) { + selEl.addEventListener('click', () => { + const { callback } = this.props['cgrido' + this.props.colName].options; + callback(this.props); + }); + } +} + export default { name: 'temltList', data() { @@ -128,7 +159,18 @@ export default { // { name: 'tmpltCd', header: '템플릿코드', align: 'center', width: '12%' }, { name: 'tmpltNm', header: '템플릿명', align: 'center', width: '16%' }, { name: 'tmpltType', header: '템플릿 유형', align: 'center', width: '6%' }, - { name: 'stat', header: '상태', align: 'center', width: '7%' }, + { + name: 'stat', + header: '상태', + align: 'center', + width: '7%', + renderer: { + type: CustomATagRenderer, + options: { + callback: this.tmpltRejectViewPopOpen, + }, + }, + }, { name: 'sendProfile', header: '발신프로필', align: 'center', width: '28%' }, { name: 'userInfo', header: '등록ID(이름)', align: 'center', width: '10%' }, { name: 'lastChgDt', header: '마지막 수정일', width: '7%', cls: 'td_line' }, @@ -147,6 +189,7 @@ export default { customGrid: customGrid, channelMgtApi, commonModal, + TmpltRejectViewPop }, created() { this.getExcelHeader(); @@ -268,6 +311,11 @@ export default { return String.fromCharCode(s.match(/\d+/gm)[0]); }); }, + tmpltRejectViewPopOpen(props) { + if(props.stat == "반려"){ + this.$refs.TmpltRejectViewPop.tmpltRejectViewPopOpen(props.sndrprofKey, props.tmpltKey); + } + } }, beforeRouteLeave(to, from, next) { diff --git a/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtController.java b/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtController.java index 7ff0536..0fb6e8a 100644 --- a/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtController.java +++ b/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtController.java @@ -81,4 +81,25 @@ public class ChannelMgtController { return channelService.tmpltListExcel(tmpltListExcelReqDto, userId); } + + /** + * date : 2022. 4. 25. + * auth : ckr + * desc : 알림톡 템플릿 목록 조회 + * @param tmpltListReqDto + * @return + * @ + */ + @ApiOperation(value = "tmpltRejectList", notes = "알림톡 템플릿 반려 목록 조회") + @ApiResponses({ @ApiResponse(code = HttpServletResponse.SC_OK, message = "SUCESS") }) + @RequestMapping(value = "tmpltRejectList", method = { RequestMethod.POST }) + @ResponseBody + public TmpltListResDto tmpltRejectList(@RequestBody @Valid TmpltListReqDto tmpltListReqDto, BindingResult bindingResult) { + + if (validComponents.validParameter(bindingResult)) { + return new TmpltListResDto(ApiResponseCode.CM_PARAMETER_ERROR); + } + + return channelService.tmpltRejectList(tmpltListReqDto); + } } diff --git a/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtService.java b/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtService.java index 797aebc..8bcac39 100644 --- a/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtService.java +++ b/src/main/java/kr/co/uplus/ez/api/channelMgt/ChannelMgtService.java @@ -1,17 +1,25 @@ package kr.co.uplus.ez.api.channelMgt; import kr.co.uplus.ez.api.channelMgt.dto.*; +import kr.co.uplus.ez.common.components.WebClientRequestService; import kr.co.uplus.ez.common.data.ApiResponseCode; +import kr.co.uplus.ez.common.data.Const; import kr.co.uplus.ez.common.data.Paging; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; 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.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class ChannelMgtService { @@ -25,6 +33,15 @@ public class ChannelMgtService { @Autowired @Qualifier("sqlSessionTemplateDb2") private SqlSessionTemplate sqlSessionSlave; + + @Autowired + WebClientRequestService clientRequestService; + + @Value("${hubeasy-api.domain:http://localhost:7070/}") + String apiDomain; + + @Value("${hubeasy-api.url.alTolkTemplet:api/v1/kko/template/get}") + String apiUrlAlTolkTemplet; /** * date : 2022. 4. 25. @@ -82,4 +99,47 @@ public class ChannelMgtService { return new TmpltListExcelResDto(ApiResponseCode.SUCCESS, tmpltListRes); } + + + /** + * desc : 알림톡 템플릿 반려 목록 조회 + * @param tmpltListReqDto + * @return + */ + @SuppressWarnings("unchecked") + public TmpltListResDto tmpltRejectList(TmpltListReqDto tmpltListReqDto) { + RjtTmpltListRes tmpltListRes = new RjtTmpltListRes(); + Map apiResultMap = null; + List> rjtDataListMap = null; + + JSONObject jsonObject = new JSONObject(); + + String callUrl = apiDomain + apiUrlAlTolkTemplet; + jsonObject.put("senderKey", tmpltListReqDto.getSndrprofKey()); + jsonObject.put("templateKey", tmpltListReqDto.getTmpltKey()); + + try { + + apiResultMap = (Map) clientRequestService.callBySyncPost(callUrl, jsonObject); + + if("0000".equals(apiResultMap.get("retCode"))) { + Map dataMap = (Map) apiResultMap.get("data"); + Map dataTempMap = (Map) dataMap.get("list"); + + if(dataTempMap.get("comments") != null && !"".equals(dataTempMap.get("comments"))) { + rjtDataListMap = (List>) dataTempMap.get("comments"); + tmpltListRes.setList(rjtDataListMap); + } + return new TmpltListResDto(ApiResponseCode.SUCCESS, tmpltListRes); + }else { + return new TmpltListResDto(ApiResponseCode.CM_DB_QUERY_ERR); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return new TmpltListResDto(ApiResponseCode.SUCCESS, tmpltListRes); + } + + } diff --git a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltInfo.java b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltInfo.java index 73c9965..c126a5b 100644 --- a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltInfo.java +++ b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltInfo.java @@ -31,4 +31,9 @@ public class TmpltInfo implements Serializable { private String sendProfile; @ApiModelProperty(example = "20220320", name = "최종수정일자", dataType = "String") private String lastChgDt; + + @ApiModelProperty(example = "da17d231bbf13f83174a36a4bb0353476ae012b3", name = "발신프로필_키", dataType = "String") + private String sndrprofKey; + @ApiModelProperty(example = "TPizuOloiF", name = "템플릿_키", dataType = "String") + private String tmpltKey; } diff --git a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListReqDto.java b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListReqDto.java index b7feab1..10f309b 100644 --- a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListReqDto.java +++ b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListReqDto.java @@ -28,4 +28,9 @@ public class TmpltListReqDto implements Serializable { private String channelAuthMenuNo; @ApiModelProperty(example = "test", name = "사용자아이디", dataType = "int") private String userId; + + @ApiModelProperty(example = "da17d231bbf13f83174a36a4bb0353476ae012b3", name = "발신프로필_키", dataType = "String") + private String sndrprofKey; + @ApiModelProperty(example = "TPizuOloiF", name = "템플릿_키", dataType = "String") + private String tmpltKey; } diff --git a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListResDto.java b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListResDto.java index 2c963ac..291aa42 100644 --- a/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListResDto.java +++ b/src/main/java/kr/co/uplus/ez/api/channelMgt/dto/TmpltListResDto.java @@ -14,6 +14,7 @@ public class TmpltListResDto extends ResponseMessage implements Serializable { // 데이터. private TmpltListRes data; + private RjtTmpltListRes rjtData; public TmpltListResDto() { this.retCode = ApiResponseCode.SUCCESS.getResultCode(); @@ -30,4 +31,9 @@ public class TmpltListResDto extends ResponseMessage implements Serializable { this.retMsg = returnStr.getResultMsg(); this.data = data; } + + public TmpltListResDto(ApiResponseCode returnStr, RjtTmpltListRes rjtData) { + this.retCode = returnStr.getResultCode(); + this.rjtData = rjtData; + } } diff --git a/src/main/java/kr/co/uplus/ez/common/components/WebClientRequestService.java b/src/main/java/kr/co/uplus/ez/common/components/WebClientRequestService.java index 2e569be..9f0ed4c 100644 --- a/src/main/java/kr/co/uplus/ez/common/components/WebClientRequestService.java +++ b/src/main/java/kr/co/uplus/ez/common/components/WebClientRequestService.java @@ -30,6 +30,7 @@ public class WebClientRequestService { public Object callBySyncPost(String uri, Object param) { Date startTime = new Date(); Object result = webClient.post().uri(uri).bodyValue(param).retrieve().bodyToMono(Object.class).block(); + log.info("callBySyncPost duration Time : {}", (new Date().getTime() - startTime.getTime()) / 1000f); log.debug("callBySyncPost duration Time : {}", (new Date().getTime() - startTime.getTime()) / 1000f); return result; }