From b6e48e0488b3ea99fcfd83461c0485fa04cd15fa Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 3 Sep 2025 14:57:02 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EB=9F=89=EB=AC=B8=EC=9E=90=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msg/send/mapper/domain/MsgRequestVO.java | 3 +- .../api/msg/send/service/SendService.java | 4 + .../send/service/impl/SendServiceImpl.java | 126 +++++++++++++++++- .../api/msg/send/web/SendRestController.java | 11 +- 4 files changed, 136 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/mapper/domain/MsgRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/mapper/domain/MsgRequestVO.java index e112d9d..ff41949 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/mapper/domain/MsgRequestVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/mapper/domain/MsgRequestVO.java @@ -102,7 +102,8 @@ public class MsgRequestVO implements Serializable { private String test_yn; // 테스트 여부 - private String sendKind; // 테스트 여부 + private String sendKind; // 문자종류 + List mjonMsgSendVOList; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/SendService.java b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/SendService.java index 862a20b..13d3323 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/SendService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/SendService.java @@ -4,6 +4,8 @@ import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.api.msg.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.api.msg.send.mapper.domain.MsgsRequestVO; +import java.util.Map; + public interface SendService { @@ -14,4 +16,6 @@ public interface SendService { // RestResponse sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception; RestResponse sendMsgsData_advc(MsgsRequestVO msgsRequestVO) throws Exception; + + RestResponse sendMsgsData_advc(MsgsRequestVO msgsRequestVO, Map allParams) throws Exception; } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/impl/SendServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/impl/SendServiceImpl.java index 16c22f1..7607191 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/impl/SendServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/service/impl/SendServiceImpl.java @@ -10,14 +10,15 @@ import com.itn.mjonApi.mjon.api.msg.send.mapper.domain.*; import com.itn.mjonApi.mjon.api.msg.send.service.SendService; import com.itn.mjonApi.util.MunjaUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.connector.Response; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; @@ -25,7 +26,7 @@ import java.util.Optional; @Service public class SendServiceImpl implements SendService { - private ApiService apiService; + private ApiService apiService; @Autowired SendMapper sendMapper; @@ -34,7 +35,7 @@ public class SendServiceImpl implements SendService { PriceMapper priceMapper; @Autowired - public SendServiceImpl(ApiService apiService) { + public SendServiceImpl(ApiService apiService) { this.apiService = apiService; } @@ -201,6 +202,49 @@ public class SendServiceImpl implements SendService { // msgsVO -> msgVO List로 변환 List msgRequestVOList = this.getDataCleaning_advc(msgsRequestVO); + msgRequestVOList.forEach(t->log.info(" + t.toString() :: [{}]", t.toString())); + + log.info("msgRequestVOList :: [{}]", msgRequestVOList.size()); + + + List mjonResponseVOList = new ArrayList(); + for(MsgRequestVO aa : msgRequestVOList){ + + aa.setSmsTxtArea(aa.getSmsTxt()); + aa.setSendKind("A"); + + MjonResponseVO munjaSendResponse = apiService.postForEntity( + "/web/mjon/msgdata/sendMsgDataAjax_advc.do" + , aa + , String.class + ); + + log.info("munjaSendResponse :: [{}]", munjaSendResponse.toString()); + mjonResponseVOList.add(munjaSendResponse); + } + + + + + return new RestResponse(SendSucRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList)); + } + + @Override + public RestResponse sendMsgsData_advc(MsgsRequestVO msgsRequestVO, Map allParams) throws Exception { + + + log.info(" :: sendMsgData_advc with Map params ::"); + + + if(StringUtils.isNotEmpty(msgsRequestVO.getTest_yn())){ + return this._getTestMsgsReturnData(msgsRequestVO.getTest_yn()); + } + + // Map 기반 동적 파라미터 처리 + List msgRequestVOList = this.getDataCleaning_advc_withMap(msgsRequestVO, allParams); + + log.info("msgRequestVOList :: [{}]", msgRequestVOList.size()); + List mjonResponseVOList = new ArrayList(); for(MsgRequestVO aa : msgRequestVOList){ @@ -214,6 +258,7 @@ public class SendServiceImpl implements SendService { , String.class ); + log.info("munjaSendResponse :: [{}]", munjaSendResponse.toString()); mjonResponseVOList.add(munjaSendResponse); } @@ -302,9 +347,82 @@ public class SendServiceImpl implements SendService { return msgRequestVOList; } + /** + * Map 기반 동적 파라미터 처리를 위한 새로운 메소드 + * callTo_1, smsTxt_1, callTo_2, smsTxt_2 등의 동적 파라미터를 처리 + */ + private List getDataCleaning_advc_withMap(MsgsRequestVO msgsRequestVO, Map allParams) { + + List msgRequestVOList = new ArrayList<>(); + + String mberId = msgsRequestVO.getMberId(); + String accessKey = msgsRequestVO.getAccessKey(); + String callFrom = msgsRequestVO.getCallFrom(); + + // 동적 파라미터를 순서대로 처리하기 위해 인덱스 기반으로 처리 + Map callToMap = new HashMap<>(); + Map smsTxtMap = new HashMap<>(); + + // 파라미터를 분석하여 인덱스별로 분류 + for (Map.Entry entry : allParams.entrySet()) { + String paramName = entry.getKey(); + String paramValue = entry.getValue(); + + log.info("Processing param: [{}] = [{}]", paramName, paramValue); + + if (paramName.startsWith("callTo_")) { + try { + int index = Integer.parseInt(paramName.substring(7)); // "callTo_" 이후 숫자 + callToMap.put(index, paramValue); + } catch (NumberFormatException e) { + log.warn("Invalid callTo parameter format: [{}]", paramName); + } + } else if (paramName.startsWith("smsTxt_")) { + try { + int index = Integer.parseInt(paramName.substring(7)); // "smsTxt_" 이후 숫자 + if (StringUtils.isNotEmpty(paramValue)) { + smsTxtMap.put(index, paramValue); + } + } catch (NumberFormatException e) { + log.warn("Invalid smsTxt parameter format: [{}]", paramName); + } + } + } + + // 인덱스별로 메시지 요청 VO 생성 + for (Integer index : smsTxtMap.keySet()) { + String callTo = callToMap.get(index); + String smsTxt = smsTxtMap.get(index); + + if (StringUtils.isNotEmpty(callTo) && StringUtils.isNotEmpty(smsTxt)) { + List mjonMsgSendVOList = new ArrayList<>(); + MjonMsgSendVO vo = new MjonMsgSendVO(); + vo.setPhone(callTo); + mjonMsgSendVOList.add(vo); + + msgRequestVOList.add( + MsgRequestVO.builder() + .mberId(mberId) + .accessKey(accessKey) + .callFrom(callFrom) + .smsTxt(smsTxt) + .reserveYn("N") + .mjonMsgSendVOList(mjonMsgSendVOList) + .build() + ); + + log.info("Created MsgRequestVO for index [{}]: callTo=[{}], smsTxt=[{}]", + index, callTo, smsTxt); + } +// else { +// log.warn("Skipping index [{}]: callTo=[{}], smsTxt=[{}]", index, callTo, smsTxt); +// } + } + msgRequestVOList.forEach(t->log.info("+ t.getReserveYn() :: [{}]", t.getReserveYn())); - + return msgRequestVOList; + } } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/web/SendRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/web/SendRestController.java index 81ac298..c3cbf92 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/msg/send/web/SendRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/msg/send/web/SendRestController.java @@ -9,8 +9,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Map; + /** * packageName : com.itn.mjonApi.mjon.send.web * fileName : SendRestController @@ -48,14 +51,16 @@ public class SendRestController { /** * * @param msgsRequestVO - * @description [문자 발송] 다른 내용으로 여려명에게 보냄 + * @param allParams + * @description [문자 발송] 다른 내용으로 여려명에게 보냄 - Map 기반 동적 파라미터 처리 * @return * @throws Exception */ @CrossOrigin("*") // 모든 요청에 접근 허용 @PostMapping("/api/send/sendMsgs") - public ResponseEntity sendMsgs(MsgsRequestVO msgsRequestVO) throws Exception { - return ResponseEntity.ok().body(sendService.sendMsgsData_advc(msgsRequestVO)); + public ResponseEntity sendMsgs(MsgsRequestVO msgsRequestVO, + @RequestParam Map allParams) throws Exception { + return ResponseEntity.ok().body(sendService.sendMsgsData_advc(msgsRequestVO, allParams)); // return ResponseEntity.ok().body(sendService.sendMsgsData(msgsRequestVO)); }