From 2db3d41020f79334b2f2876b1dde1c7cf9cc5188 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 20 Aug 2025 12:20:53 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=8C=EB=A6=BC=ED=86=A1=EB=B0=9C=EC=86=A1?= =?UTF-8?q?=EC=A0=84=20=EC=B1=84=EB=84=90ID,=20=ED=85=9C=ED=94=8C=EB=A6=BF?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=ED=99=95=EC=9D=B8=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .../com/itn/mjonApi/cmn/aop/LogAspect.java | 25 ++++++------ .../com/itn/mjonApi/cmn/domain/CmnVO.java | 3 +- .../biz/template/BizTemplateRequest.java | 18 +++------ .../com/itn/mjonApi/cmn/msg/RestResponse.java | 6 +-- .../java/com/itn/mjonApi/cmn/msg/StatMsg.java | 4 ++ .../kakao/at/inqry/mapper/InqryMapper.java | 12 +++--- .../inqry/service/Impl/InqryServiceImpl.java | 38 +++++++++++++++++-- .../kakao/at/inqry/service/InqryService.java | 6 ++- .../at/inqry/web/InqryRestContoller.java | 6 ++- .../at/send/mapper/domain/MsgAtRequestVO.java | 2 +- .../mapper/api/kakao/inqry/InqryMapper.xml | 16 +++++++- 12 files changed, 94 insertions(+), 44 deletions(-) diff --git a/.gitignore b/.gitignore index 89e9faf..95b6c65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ HELP.md target/ +log/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/ @@ -198,3 +199,4 @@ fabric.properties rebel.xml /mvnw /mvnw.cmd +/log.config.path_IS_UNDEFINED/ diff --git a/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java b/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java index c376b69..718eab1 100644 --- a/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java +++ b/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java @@ -195,18 +195,18 @@ public class LogAspect { * @description 메세지 그룹 테이블에 발송 구분 업데이트 * @param apiSendMsgLogVO */ - private void updateMsgGroupTbSendKind(LettnApiSendMsgLogVO apiSendMsgLogVO) { - if(StringUtils.isNotEmpty(apiSendMsgLogVO.getMsgGroupId())) - { - String[] msgGroupIds = null; - if(apiSendMsgLogVO.getMsgGroupId().indexOf(",") > -1){ - msgGroupIds = apiSendMsgLogVO.getMsgGroupId().split(","); - }else{ - msgGroupIds = new String[]{apiSendMsgLogVO.getMsgGroupId()}; - } - mjMsgGroupDataMapper.update(msgGroupIds); - } - } +// private void updateMsgGroupTbSendKind(LettnApiSendMsgLogVO apiSendMsgLogVO) { +// if(StringUtils.isNotEmpty(apiSendMsgLogVO.getMsgGroupId())) +// { +// String[] msgGroupIds = null; +// if(apiSendMsgLogVO.getMsgGroupId().indexOf(",") > -1){ +// msgGroupIds = apiSendMsgLogVO.getMsgGroupId().split(","); +// }else{ +// msgGroupIds = new String[]{apiSendMsgLogVO.getMsgGroupId()}; +// } +// mjMsgGroupDataMapper.update(msgGroupIds); +// } +// } /** * @description lettngnrlmber_api_send_msg_log 테이블에 저장할 데이터 만들기 @@ -350,6 +350,7 @@ public class LogAspect { case "MsgRequestVO": case "MjKakaoProfileInfoVO": case "BizTemplateRequest": + case "MsgAtRequestVO": return ApiObjectUtil.toJson(returnValue); default: log.info("데이터를 추가해 주세요"); diff --git a/src/main/java/com/itn/mjonApi/cmn/domain/CmnVO.java b/src/main/java/com/itn/mjonApi/cmn/domain/CmnVO.java index a07d1aa..a2a9b13 100644 --- a/src/main/java/com/itn/mjonApi/cmn/domain/CmnVO.java +++ b/src/main/java/com/itn/mjonApi/cmn/domain/CmnVO.java @@ -1,15 +1,16 @@ package com.itn.mjonApi.cmn.domain; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.experimental.SuperBuilder; @Getter @Setter @NoArgsConstructor @AllArgsConstructor +@SuperBuilder public class CmnVO { private String mberId; // 사용자 ID diff --git a/src/main/java/com/itn/mjonApi/cmn/domain/biz/template/BizTemplateRequest.java b/src/main/java/com/itn/mjonApi/cmn/domain/biz/template/BizTemplateRequest.java index 1c44669..b58e38e 100644 --- a/src/main/java/com/itn/mjonApi/cmn/domain/biz/template/BizTemplateRequest.java +++ b/src/main/java/com/itn/mjonApi/cmn/domain/biz/template/BizTemplateRequest.java @@ -1,25 +1,19 @@ package com.itn.mjonApi.cmn.domain.biz.template; +import com.itn.mjonApi.cmn.domain.CmnVO; import lombok.*; +import lombok.experimental.SuperBuilder; -//@Getter -//@Setter +@Getter +@Setter @ToString @NoArgsConstructor @AllArgsConstructor -@Builder -public class BizTemplateRequest { +@SuperBuilder +public class BizTemplateRequest extends CmnVO { private String bizId; private String apiKey; private String senderKey; private String templateCode; - public String getBizId() { return bizId; } - public void setBizId(String bizId) { this.bizId = bizId; } - public String getApiKey() { return apiKey; } - public void setApiKey(String apiKey) { this.apiKey = apiKey; } - public String getSenderKey() { return senderKey; } - public void setSenderKey(String senderKey) { this.senderKey = senderKey; } - public String getTemplateCode() { return templateCode; } - public void setTemplateCode(String templateCode) { this.templateCode = templateCode; } } diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java index 8262b90..c09dd91 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java @@ -1,9 +1,6 @@ package com.itn.mjonApi.cmn.msg; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import java.time.LocalDateTime; @@ -11,6 +8,7 @@ import java.time.LocalDateTime; @Getter @NoArgsConstructor @AllArgsConstructor +@ToString public class RestResponse{ private String resultCode = "0"; diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java index 5eef493..d2ed520 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java @@ -45,10 +45,14 @@ public enum StatMsg { , STAT_1099("1099","기타 시스템 오류") //카톡발송====================================================================== + , STAT_2010("2010","발신프로필 KEY 오류") + , STAT_2030("2030","템플릿 코드 오류") , STAT_2040("2040","본문 데이터 오류") , STAT_2041("2041","타이틀 데이터 오류") , STAT_2042("2042","대체문자 데이터 오류") + , STAT_2099("2099","기타 시스템 오류") + //전체발송====================================================================== , STAT_3099("3099","기타 시스템 오류") diff --git a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/mapper/InqryMapper.java b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/mapper/InqryMapper.java index d9c1b8e..151d1ea 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/mapper/InqryMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/mapper/InqryMapper.java @@ -4,6 +4,7 @@ import com.itn.mjonApi.mjon.api.kakao.at.inqry.mapper.domain.MjKakaoProfileInfoV import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; /** @@ -20,12 +21,9 @@ import java.util.List; @Mapper public interface InqryMapper { - List getChnlIds(MjKakaoProfileInfoVO mjKakaoProfileInfoVO); + List getChnlIds(String mberId); + + int isTemplateExist(Map params); + - //double selectUserMoney(String mberId); - -// List selectApiInqryHstry(HstryVO hstryVO); -// -// List selectApiInqryHstryDetail(HstryDetailVO hstryDetailVO); -// } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/Impl/InqryServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/Impl/InqryServiceImpl.java index da6c8ed..92560db 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/Impl/InqryServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/Impl/InqryServiceImpl.java @@ -14,11 +14,14 @@ import com.itn.mjonApi.mjon.api.kakao.at.inqry.mapper.domain.MjKakaoProfileInfoV import com.itn.mjonApi.mjon.api.kakao.at.inqry.service.InqryService; import lombok.extern.slf4j.Slf4j; import org.apache.catalina.connector.Response; +import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * packageName : com.itn.mjonApi.mjon.api.kakao.inqry.service.Impl @@ -55,18 +58,21 @@ public class InqryServiceImpl implements InqryService { } @Override - public RestResponse getChnlId(MjKakaoProfileInfoVO mjKakaoProfileInfoVO) { + public List getChnlId(String mberId) { - List voList = inqryMapper.getChnlIds(mjKakaoProfileInfoVO); + List voList = inqryMapper.getChnlIds(mberId); - log.info(" mjKakaoProfileInfoVO toString [{}]", mjKakaoProfileInfoVO.toString()); - return new RestResponse(voList); + return voList; } @Override public RestResponse getTemplates(BizTemplateRequest bizTemplateRequest) throws JsonProcessingException { + // SenderKey 검증 + RestResponse STAT_2010 = isSenderKeyChk(bizTemplateRequest); + if (STAT_2010 != null) return STAT_2010; + // 1. 템플릿 목록 조회 요청 DTO 생성 (BIZ ID, API Key, senderKey 포함) BizTemplateRequest requestDto= BizTemplateRequest.builder() .bizId(BIZ_ID) @@ -110,6 +116,11 @@ public class InqryServiceImpl implements InqryService { @Override public RestResponse getTemplateDetail(BizTemplateRequest bizTemplateRequest) throws JsonProcessingException { + + // SenderKey 검증 + RestResponse STAT_2010 = isSenderKeyChk(bizTemplateRequest); + if (STAT_2010 != null) return STAT_2010; + // 1. 템플릿 목록 조회 요청 DTO 생성 (BIZ ID, API Key, senderKey 포함) BizTemplateRequest requestDto= BizTemplateRequest.builder() .bizId(BIZ_ID) @@ -130,5 +141,24 @@ public class InqryServiceImpl implements InqryService { return new RestResponse(response); } + @Override + public boolean isTemplateExist(String senderKey, String templateCode) { + Map params = new HashMap<>(); + params.put("senderKey", senderKey); + params.put("templateCode", templateCode); + return inqryMapper.isTemplateExist(params) > 0; + } + + private @Nullable RestResponse isSenderKeyChk(BizTemplateRequest bizTemplateRequest) { + List chnlIdList = this.getChnlId(bizTemplateRequest.getMberId()); + + boolean skErr = chnlIdList.stream() + .anyMatch(p -> bizTemplateRequest.getSenderKey().equals(p.getSenderKey())); + if(!skErr){ + return new RestResponse(new FailRestResponse("STAT_2010", "")); + } + return null; + } + } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/InqryService.java b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/InqryService.java index b94a328..14bac74 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/InqryService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/service/InqryService.java @@ -5,10 +5,14 @@ import com.itn.mjonApi.cmn.domain.biz.template.BizTemplateRequest; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.api.kakao.at.inqry.mapper.domain.MjKakaoProfileInfoVO; +import java.util.List; + public interface InqryService { - RestResponse getChnlId(MjKakaoProfileInfoVO mjKakaoProfileInfoVO); + List getChnlId(String mberId); RestResponse getTemplates(BizTemplateRequest bizTemplateRequest) throws JsonProcessingException; RestResponse getTemplateDetail(BizTemplateRequest bizTemplateRequest) throws JsonProcessingException; + + boolean isTemplateExist(String senderKey, String templateCode); } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/web/InqryRestContoller.java b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/web/InqryRestContoller.java index 73f0794..9525c2d 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/web/InqryRestContoller.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/inqry/web/InqryRestContoller.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * fileName : InqryRestContoller.java @@ -40,7 +42,9 @@ public class InqryRestContoller { @PostMapping("/api/kakao/inqry/chnlId") public ResponseEntity getChnlId(MjKakaoProfileInfoVO mjKakaoProfileInfoVO) throws Exception { - return ResponseEntity.ok().body(inqryService.getChnlId(mjKakaoProfileInfoVO)); + List resultList = inqryService.getChnlId(mjKakaoProfileInfoVO.getMberId()); + + return ResponseEntity.ok().body(new RestResponse(resultList)); } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/send/mapper/domain/MsgAtRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/send/mapper/domain/MsgAtRequestVO.java index 21fb5a7..e5a7d24 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/send/mapper/domain/MsgAtRequestVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/kakao/at/send/mapper/domain/MsgAtRequestVO.java @@ -23,7 +23,7 @@ import java.util.*; @ToString @Getter @Setter -public class MsgAtRequestVO extends SendRequestCmnVO implements Serializable { +public class MsgAtRequestVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/resources/mapper/api/kakao/inqry/InqryMapper.xml b/src/main/resources/mapper/api/kakao/inqry/InqryMapper.xml index a328e32..c816cc1 100644 --- a/src/main/resources/mapper/api/kakao/inqry/InqryMapper.xml +++ b/src/main/resources/mapper/api/kakao/inqry/InqryMapper.xml @@ -6,7 +6,7 @@ + + + + \ No newline at end of file