From 5fc4ba2f8423109f587be8ac68863a8b63e8d1a8 Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 23 May 2023 16:54:09 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[=EB=8B=A4=EB=A5=B8=EB=82=B4=EC=9A=A9]?= =?UTF-8?q?=20=EC=9E=A5=EB=AC=B8,=20=EB=8B=A8=EB=AC=B8=20/=20=EC=88=98?= =?UTF-8?q?=EC=8B=A0=EC=9E=90=EB=B3=84=20=EB=8B=A4=EB=A5=B8=20=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=20=EB=AC=B8=EC=9E=90=20=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EC=9D=BC=EB=8B=A8=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmn/msg/SendSuccessRestResponse.java | 52 + .../mjon/api/send/mapper/SendMapper.java | 5 + .../send/mapper/domain/MjonResponseVO.java | 2 +- .../api/send/mapper/domain/MsgRequestVO.java | 6 +- .../api/send/mapper/domain/MsgsRequestVO.java | 1128 +++++++++++++++++ .../mjon/api/send/service/SendService.java | 3 + .../send/service/impl/SendServiceImpl.java | 149 ++- .../mjon/api/send/web/SendRestController.java | 17 +- 8 files changed, 1354 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java index 7f97cb7..e05f71d 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java @@ -2,9 +2,13 @@ package com.itn.mjonApi.cmn.msg; import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; import lombok.*; +import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; +@Slf4j @Setter @Getter @NoArgsConstructor @@ -19,10 +23,14 @@ public class SendSuccessRestResponse { private String msgGroupId; // 문자 전송 그룹 아이디 + private List msgGroupIdList; // 문자 전송 그룹 아이디 + private String successCnt; // 성공 건수 private String blockCnt; // 수신거부 건수 + private String failCnt; // 실패 건수 + private String msgType; // 메세지 타입 private LocalDateTime localDateTime; @@ -53,4 +61,48 @@ public class SendSuccessRestResponse { // .msgType(mjonResponseVO.getMsgType()) } + + /** + * @description 1건~100건 까지 수신자별 메세지 보낸 후 성공 결과를 리턴한다. + * @param mjonResponseVOList + * @return + */ + public static SendSuccessRestResponse SendSuccessMsgsRestResponse(List mjonResponseVOList) { + + // 실패 카운트 + int failCnt = (int) mjonResponseVOList.stream() + .filter(s->"fail".equals(s.getResult())) + .count(); + // 성공 카운트 + int successCnt = mjonResponseVOList.parallelStream() + .filter(s->!"fail".equals(s.getResult())) + .mapToInt(s -> Integer.parseInt(s.getResultSts())) + .sum(); + // 수신거부 카운트 + int blockCnt = mjonResponseVOList.parallelStream() + .filter(s->!"fail".equals(s.getResult())) + .mapToInt(s -> Integer.parseInt(s.getResultBlockSts())) + .sum(); + + // 성공한 메세지 그룹 아이디 + List msgGroupIdList = mjonResponseVOList.stream() + .filter(s->!"fail".equals(s.getResult())) + .map(s -> s.getMsgGroupId()) + .collect(Collectors.toList()); + + + + + + return SendSuccessRestResponse.builder() +// .resultCode(StatMsg.valueOf(enumStr).getCode()) // 성공 코드 200 - StatMsg 참고 +// .message(StatMsg.valueOf(enumStr).getMsg()) // 성공은 message가 없음 - StatMsg 참고 + .msgGroupIdList(msgGroupIdList) // 전송 메세지 그룹 ID + .successCnt(Integer.toString(successCnt)) // 성공 건수 + .blockCnt(Integer.toString(blockCnt)) // 수신거부 건수 + .failCnt(Integer.toString(failCnt)) // 수신거부 건수 + .localDateTime(LocalDateTime.now()) // 현재 시간 + .build(); + + } } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/SendMapper.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/SendMapper.java index 0028311..910a5fe 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/SendMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/SendMapper.java @@ -17,6 +17,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SendMapper { + /** + * @description 발신자 번호 체크 + * @param callFrom, mberId + * @return + */ Boolean findByCallFrom(MsgRequestVO msgRequestVO); } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonResponseVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonResponseVO.java index 48bb92e..434ddbd 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonResponseVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonResponseVO.java @@ -29,6 +29,7 @@ public class MjonResponseVO { private String resultBlockSts; // 수신거부 갯수 private String msgGroupId; private String afterCash; + private String msgType; @@ -41,7 +42,6 @@ public class MjonResponseVO { */ public static MjonResponseVO getMjonResponse(ResponseEntity stringResponseEntity) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); - MjonResponseVO mjonResponseVO = objectMapper.readValue(stringResponseEntity.getBody(), MjonResponseVO.class); return mjonResponseVO; } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java index 6925d34..acfb152 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java @@ -2,10 +2,7 @@ package com.itn.mjonApi.mjon.api.send.mapper.domain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import java.io.Serializable; @@ -24,6 +21,7 @@ import java.io.Serializable; @Setter @NoArgsConstructor @AllArgsConstructor +@Builder @ApiModel(description = "문자 발송에 필요한 값들을 받는 vo") public class MsgRequestVO implements Serializable { diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java new file mode 100644 index 0000000..dd9d322 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java @@ -0,0 +1,1128 @@ +package com.itn.mjonApi.mjon.api.send.mapper.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; + +/** + * packageName : com.itn.mjonApi.mjon.api.send.mapper.domain + * fileName : MjonMsgVO + * author : hylee + * date : 2023-05-23 + * description : 1건~500건 대량 문자 개인별로 발송 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-09 hylee 최초 생성 + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "문자 발송에 필요한 값들을 받는 vo") +public class MsgsRequestVO implements Serializable { + + /** + * 값이 있는 경우 + * 문자온 프로젝트에서 처리해줌 + * null이면 에러 + */ + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "사용자 ID", example = "goodgkdus", required = true) + private String mberId; + + @ApiModelProperty(value = "Api Key", example = "0367a25ec370d1141898a0b9767103", required = true) + private String accessKey; + + @ApiModelProperty(value = "SMS용 메시지본문", example = "문자 메세지 본문", required = true) + private String smsTxt; + + @ApiModelProperty(value = "수신번호리스트", dataType = "[Ljava.lang.String;", example = "01011112222,01022223333", required = true) + private String[] callToList; + + @ApiModelProperty(value = "발신번호 :: 정책이 필요함", example = "01011112222", required = true) + private String callFrom; + + @ApiModelProperty(value = "전송문자 개별가격", example = "0", hidden = true) + private String eachPrice = "0"; + private String sPrice = "0"; // 임시 + + @ApiModelProperty(value = "전송문자 토탈가격", example = "0", hidden = true) + private String totPrice = "0"; + + @ApiModelProperty(value = "첨부파일 갯수", example = "0", hidden = true) + private String fileCnt = "0"; + + @ApiModelProperty(value = "메시지의 (4: SMS 전송, 5: URL 전송, 6: MMS전송, 7: BARCODE전송, 8: 카카오 알림톡 전송)", example = "4", hidden = true) + private String msgType = "4"; + + // ==== 단가 ==== + @ApiModelProperty(value = "sms 단가 null 이면 에러", example = "0", hidden = true) + private float smsPrice = 0; + @ApiModelProperty(value = "mms 단가 null 이면 에러", example = "0", hidden = true) + private float mmsPrice = 0; +// private float kakaoAtPrice; // 카카오 알림톡 단가 +// private float kakaoFtPrice; // 카카오 친구톡 단가 +// private float kakaoFtImgPrice;// 카카오 이미지 단가 +// private float kakaoFtWideImgPrice; // 카카오 와이드 이미지 단가 + + @ApiModelProperty(value = "그림 이미지 경로", example = "new String[0]", hidden = true) + private String[] imgFilePath = new String[0]; + + + @ApiModelProperty(value = "스팸문자 유무 (Y/N) - 서비스단에서 처리 함", example = "", hidden = true) + private String spamStatus; + + @ApiModelProperty(value = "변환문자 유무 (Y/N) - 서비스단에서 처리 함", example = "N", hidden = true) + private String txtReplYn = "N"; + +// @ApiModelProperty(value = "치환 이름 리스트 |로 구분", example = "홍길동1|홍길동2|홍길동3") +// private String nameStr; +// @ApiModelProperty(value = "치환 문자1 리스트 |로 구분", example = "") +// private String rep1Str; +// @ApiModelProperty(value = "치환 문자2 리스트 |로 구분", example = "") +// private String rep2Str; +// @ApiModelProperty(value = "치환 문자3 리스트 |로 구분", example = "") +// private String rep3Str; +// @ApiModelProperty(value = "치환 문자4 리스트 |로 구분", example = "") +// private String rep4Str; + +// @ApiModelProperty(value = "nameStr 을 |로 split 후 담는 변수", example = "", hidden = true) +// private String[] nameList= new String[0]; +// @ApiModelProperty(value = "rep1Str 을 |로 split 후 담는 변수", example = "", hidden = true) +// private String[] rep1List= new String[0]; +// @ApiModelProperty(value = "rep2Str 을 |로 split 후 담는 변수", example = "", hidden = true) +// private String[] rep2List= new String[0]; +// @ApiModelProperty(value = "rep3Str 을 |로 split 후 담는 변수", example = "", hidden = true) +// private String[] rep3List= new String[0]; +// @ApiModelProperty(value = "rep4Str 을 |로 split 후 담는 변수", example = "", hidden = true) +// private String[] rep4List= new String[0]; + + @ApiModelProperty(value = "예약 유무 (Y/N)", example = "N", hidden = true) + private String reserveYn = "N"; // 예약문자 여부 default N + + // 치환 있을 경우 사용 +// @ApiModelProperty(value = "치환 후 단문 건수", example = "", hidden = true) +// private String shortMsgCnt; +// @ApiModelProperty(value = "치환 후 장문 건수", example = "", hidden = true) +// private String longMsgCnt; + + + @ApiModelProperty(value = "문자 종류 일반:N, 광고:A, 선거:C", example = "N", hidden = true) + private String msgKind = "N"; // '문자 종류 일반:N, 광고:A, 선거:C', + + + // 수신자 발송txt 각각 _1~_100 + // 교차로 있어야 로직이 가능함 + private String callTo_1; + private String smsTxt_1; + private String callTo_2; + private String smsTxt_2; + private String callTo_3; + private String smsTxt_3; + private String callTo_4; + private String smsTxt_4; + private String callTo_5; + private String smsTxt_5; + private String callTo_6; + private String smsTxt_6; + private String callTo_7; + private String smsTxt_7; + private String callTo_8; + private String smsTxt_8; + private String callTo_9; + private String smsTxt_9; + private String callTo_10; + private String smsTxt_10; + private String callTo_11; + private String smsTxt_11; + private String callTo_12; + private String smsTxt_12; + private String callTo_13; + private String smsTxt_13; + private String callTo_14; + private String smsTxt_14; + private String callTo_15; + private String smsTxt_15; + private String callTo_16; + private String smsTxt_16; + private String callTo_17; + private String smsTxt_17; + private String callTo_18; + private String smsTxt_18; + private String callTo_19; + private String smsTxt_19; + private String callTo_20; + private String smsTxt_20; + private String callTo_21; + private String smsTxt_21; + private String callTo_22; + private String smsTxt_22; + private String callTo_23; + private String smsTxt_23; + private String callTo_24; + private String smsTxt_24; + private String callTo_25; + private String smsTxt_25; + private String callTo_26; + private String smsTxt_26; + private String callTo_27; + private String smsTxt_27; + private String callTo_28; + private String smsTxt_28; + private String callTo_29; + private String smsTxt_29; + private String callTo_30; + private String smsTxt_30; + private String callTo_31; + private String smsTxt_31; + private String callTo_32; + private String smsTxt_32; + private String callTo_33; + private String smsTxt_33; + private String callTo_34; + private String smsTxt_34; + private String callTo_35; + private String smsTxt_35; + private String callTo_36; + private String smsTxt_36; + private String callTo_37; + private String smsTxt_37; + private String callTo_38; + private String smsTxt_38; + private String callTo_39; + private String smsTxt_39; + private String callTo_40; + private String smsTxt_40; + private String callTo_41; + private String smsTxt_41; + private String callTo_42; + private String smsTxt_42; + private String callTo_43; + private String smsTxt_43; + private String callTo_44; + private String smsTxt_44; + private String callTo_45; + private String smsTxt_45; + private String callTo_46; + private String smsTxt_46; + private String callTo_47; + private String smsTxt_47; + private String callTo_48; + private String smsTxt_48; + private String callTo_49; + private String smsTxt_49; + private String callTo_50; + private String smsTxt_50; + private String callTo_51; + private String smsTxt_51; + private String callTo_52; + private String smsTxt_52; + private String callTo_53; + private String smsTxt_53; + private String callTo_54; + private String smsTxt_54; + private String callTo_55; + private String smsTxt_55; + private String callTo_56; + private String smsTxt_56; + private String callTo_57; + private String smsTxt_57; + private String callTo_58; + private String smsTxt_58; + private String callTo_59; + private String smsTxt_59; + private String callTo_60; + private String smsTxt_60; + private String callTo_61; + private String smsTxt_61; + private String callTo_62; + private String smsTxt_62; + private String callTo_63; + private String smsTxt_63; + private String callTo_64; + private String smsTxt_64; + private String callTo_65; + private String smsTxt_65; + private String callTo_66; + private String smsTxt_66; + private String callTo_67; + private String smsTxt_67; + private String callTo_68; + private String smsTxt_68; + private String callTo_69; + private String smsTxt_69; + private String callTo_70; + private String smsTxt_70; + private String callTo_71; + private String smsTxt_71; + private String callTo_72; + private String smsTxt_72; + private String callTo_73; + private String smsTxt_73; + private String callTo_74; + private String smsTxt_74; + private String callTo_75; + private String smsTxt_75; + private String callTo_76; + private String smsTxt_76; + private String callTo_77; + private String smsTxt_77; + private String callTo_78; + private String smsTxt_78; + private String callTo_79; + private String smsTxt_79; + private String callTo_80; + private String smsTxt_80; + private String callTo_81; + private String smsTxt_81; + private String callTo_82; + private String smsTxt_82; + private String callTo_83; + private String smsTxt_83; + private String callTo_84; + private String smsTxt_84; + private String callTo_85; + private String smsTxt_85; + private String callTo_86; + private String smsTxt_86; + private String callTo_87; + private String smsTxt_87; + private String callTo_88; + private String smsTxt_88; + private String callTo_89; + private String smsTxt_89; + private String callTo_90; + private String smsTxt_90; + private String callTo_91; + private String smsTxt_91; + private String callTo_92; + private String smsTxt_92; + private String callTo_93; + private String smsTxt_93; + private String callTo_94; + private String smsTxt_94; + private String callTo_95; + private String smsTxt_95; + private String callTo_96; + private String smsTxt_96; + private String callTo_97; + private String smsTxt_97; + private String callTo_98; + private String smsTxt_98; + private String callTo_99; + private String smsTxt_99; + private String callTo_100; + private String smsTxt_100; +// private String callTo_101; +// private String callTo_102; +// private String callTo_103; +// private String callTo_104; +// private String callTo_105; +// private String callTo_106; +// private String callTo_107; +// private String callTo_108; +// private String callTo_109; +// private String callTo_110; +// private String callTo_111; +// private String callTo_112; +// private String callTo_113; +// private String callTo_114; +// private String callTo_115; +// private String callTo_116; +// private String callTo_117; +// private String callTo_118; +// private String callTo_119; +// private String callTo_120; +// private String callTo_121; +// private String callTo_122; +// private String callTo_123; +// private String callTo_124; +// private String callTo_125; +// private String callTo_126; +// private String callTo_127; +// private String callTo_128; +// private String callTo_129; +// private String callTo_130; +// private String callTo_131; +// private String callTo_132; +// private String callTo_133; +// private String callTo_134; +// private String callTo_135; +// private String callTo_136; +// private String callTo_137; +// private String callTo_138; +// private String callTo_139; +// private String callTo_140; +// private String callTo_141; +// private String callTo_142; +// private String callTo_143; +// private String callTo_144; +// private String callTo_145; +// private String callTo_146; +// private String callTo_147; +// private String callTo_148; +// private String callTo_149; +// private String callTo_150; +// private String callTo_151; +// private String callTo_152; +// private String callTo_153; +// private String callTo_154; +// private String callTo_155; +// private String callTo_156; +// private String callTo_157; +// private String callTo_158; +// private String callTo_159; +// private String callTo_160; +// private String callTo_161; +// private String callTo_162; +// private String callTo_163; +// private String callTo_164; +// private String callTo_165; +// private String callTo_166; +// private String callTo_167; +// private String callTo_168; +// private String callTo_169; +// private String callTo_170; +// private String callTo_171; +// private String callTo_172; +// private String callTo_173; +// private String callTo_174; +// private String callTo_175; +// private String callTo_176; +// private String callTo_177; +// private String callTo_178; +// private String callTo_179; +// private String callTo_180; +// private String callTo_181; +// private String callTo_182; +// private String callTo_183; +// private String callTo_184; +// private String callTo_185; +// private String callTo_186; +// private String callTo_187; +// private String callTo_188; +// private String callTo_189; +// private String callTo_190; +// private String callTo_191; +// private String callTo_192; +// private String callTo_193; +// private String callTo_194; +// private String callTo_195; +// private String callTo_196; +// private String callTo_197; +// private String callTo_198; +// private String callTo_199; +// private String callTo_200; +// private String callTo_201; +// private String callTo_202; +// private String callTo_203; +// private String callTo_204; +// private String callTo_205; +// private String callTo_206; +// private String callTo_207; +// private String callTo_208; +// private String callTo_209; +// private String callTo_210; +// private String callTo_211; +// private String callTo_212; +// private String callTo_213; +// private String callTo_214; +// private String callTo_215; +// private String callTo_216; +// private String callTo_217; +// private String callTo_218; +// private String callTo_219; +// private String callTo_220; +// private String callTo_221; +// private String callTo_222; +// private String callTo_223; +// private String callTo_224; +// private String callTo_225; +// private String callTo_226; +// private String callTo_227; +// private String callTo_228; +// private String callTo_229; +// private String callTo_230; +// private String callTo_231; +// private String callTo_232; +// private String callTo_233; +// private String callTo_234; +// private String callTo_235; +// private String callTo_236; +// private String callTo_237; +// private String callTo_238; +// private String callTo_239; +// private String callTo_240; +// private String callTo_241; +// private String callTo_242; +// private String callTo_243; +// private String callTo_244; +// private String callTo_245; +// private String callTo_246; +// private String callTo_247; +// private String callTo_248; +// private String callTo_249; +// private String callTo_250; +// private String callTo_251; +// private String callTo_252; +// private String callTo_253; +// private String callTo_254; +// private String callTo_255; +// private String callTo_256; +// private String callTo_257; +// private String callTo_258; +// private String callTo_259; +// private String callTo_260; +// private String callTo_261; +// private String callTo_262; +// private String callTo_263; +// private String callTo_264; +// private String callTo_265; +// private String callTo_266; +// private String callTo_267; +// private String callTo_268; +// private String callTo_269; +// private String callTo_270; +// private String callTo_271; +// private String callTo_272; +// private String callTo_273; +// private String callTo_274; +// private String callTo_275; +// private String callTo_276; +// private String callTo_277; +// private String callTo_278; +// private String callTo_279; +// private String callTo_280; +// private String callTo_281; +// private String callTo_282; +// private String callTo_283; +// private String callTo_284; +// private String callTo_285; +// private String callTo_286; +// private String callTo_287; +// private String callTo_288; +// private String callTo_289; +// private String callTo_290; +// private String callTo_291; +// private String callTo_292; +// private String callTo_293; +// private String callTo_294; +// private String callTo_295; +// private String callTo_296; +// private String callTo_297; +// private String callTo_298; +// private String callTo_299; +// private String callTo_300; +// private String callTo_301; +// private String callTo_302; +// private String callTo_303; +// private String callTo_304; +// private String callTo_305; +// private String callTo_306; +// private String callTo_307; +// private String callTo_308; +// private String callTo_309; +// private String callTo_310; +// private String callTo_311; +// private String callTo_312; +// private String callTo_313; +// private String callTo_314; +// private String callTo_315; +// private String callTo_316; +// private String callTo_317; +// private String callTo_318; +// private String callTo_319; +// private String callTo_320; +// private String callTo_321; +// private String callTo_322; +// private String callTo_323; +// private String callTo_324; +// private String callTo_325; +// private String callTo_326; +// private String callTo_327; +// private String callTo_328; +// private String callTo_329; +// private String callTo_330; +// private String callTo_331; +// private String callTo_332; +// private String callTo_333; +// private String callTo_334; +// private String callTo_335; +// private String callTo_336; +// private String callTo_337; +// private String callTo_338; +// private String callTo_339; +// private String callTo_340; +// private String callTo_341; +// private String callTo_342; +// private String callTo_343; +// private String callTo_344; +// private String callTo_345; +// private String callTo_346; +// private String callTo_347; +// private String callTo_348; +// private String callTo_349; +// private String callTo_350; +// private String callTo_351; +// private String callTo_352; +// private String callTo_353; +// private String callTo_354; +// private String callTo_355; +// private String callTo_356; +// private String callTo_357; +// private String callTo_358; +// private String callTo_359; +// private String callTo_360; +// private String callTo_361; +// private String callTo_362; +// private String callTo_363; +// private String callTo_364; +// private String callTo_365; +// private String callTo_366; +// private String callTo_367; +// private String callTo_368; +// private String callTo_369; +// private String callTo_370; +// private String callTo_371; +// private String callTo_372; +// private String callTo_373; +// private String callTo_374; +// private String callTo_375; +// private String callTo_376; +// private String callTo_377; +// private String callTo_378; +// private String callTo_379; +// private String callTo_380; +// private String callTo_381; +// private String callTo_382; +// private String callTo_383; +// private String callTo_384; +// private String callTo_385; +// private String callTo_386; +// private String callTo_387; +// private String callTo_388; +// private String callTo_389; +// private String callTo_390; +// private String callTo_391; +// private String callTo_392; +// private String callTo_393; +// private String callTo_394; +// private String callTo_395; +// private String callTo_396; +// private String callTo_397; +// private String callTo_398; +// private String callTo_399; +// private String callTo_400; +// private String callTo_401; +// private String callTo_402; +// private String callTo_403; +// private String callTo_404; +// private String callTo_405; +// private String callTo_406; +// private String callTo_407; +// private String callTo_408; +// private String callTo_409; +// private String callTo_410; +// private String callTo_411; +// private String callTo_412; +// private String callTo_413; +// private String callTo_414; +// private String callTo_415; +// private String callTo_416; +// private String callTo_417; +// private String callTo_418; +// private String callTo_419; +// private String callTo_420; +// private String callTo_421; +// private String callTo_422; +// private String callTo_423; +// private String callTo_424; +// private String callTo_425; +// private String callTo_426; +// private String callTo_427; +// private String callTo_428; +// private String callTo_429; +// private String callTo_430; +// private String callTo_431; +// private String callTo_432; +// private String callTo_433; +// private String callTo_434; +// private String callTo_435; +// private String callTo_436; +// private String callTo_437; +// private String callTo_438; +// private String callTo_439; +// private String callTo_440; +// private String callTo_441; +// private String callTo_442; +// private String callTo_443; +// private String callTo_444; +// private String callTo_445; +// private String callTo_446; +// private String callTo_447; +// private String callTo_448; +// private String callTo_449; +// private String callTo_450; +// private String callTo_451; +// private String callTo_452; +// private String callTo_453; +// private String callTo_454; +// private String callTo_455; +// private String callTo_456; +// private String callTo_457; +// private String callTo_458; +// private String callTo_459; +// private String callTo_460; +// private String callTo_461; +// private String callTo_462; +// private String callTo_463; +// private String callTo_464; +// private String callTo_465; +// private String callTo_466; +// private String callTo_467; +// private String callTo_468; +// private String callTo_469; +// private String callTo_470; +// private String callTo_471; +// private String callTo_472; +// private String callTo_473; +// private String callTo_474; +// private String callTo_475; +// private String callTo_476; +// private String callTo_477; +// private String callTo_478; +// private String callTo_479; +// private String callTo_480; +// private String callTo_481; +// private String callTo_482; +// private String callTo_483; +// private String callTo_484; +// private String callTo_485; +// private String callTo_486; +// private String callTo_487; +// private String callTo_488; +// private String callTo_489; +// private String callTo_490; +// private String callTo_491; +// private String callTo_492; +// private String callTo_493; +// private String callTo_494; +// private String callTo_495; +// private String callTo_496; +// private String callTo_497; +// private String callTo_498; +// private String callTo_499; +// private String callTo_500; + + // 메세지 _1~_500 + +// private String smsTxt_101; +// private String smsTxt_102; +// private String smsTxt_103; +// private String smsTxt_104; +// private String smsTxt_105; +// private String smsTxt_106; +// private String smsTxt_107; +// private String smsTxt_108; +// private String smsTxt_109; +// private String smsTxt_110; +// private String smsTxt_111; +// private String smsTxt_112; +// private String smsTxt_113; +// private String smsTxt_114; +// private String smsTxt_115; +// private String smsTxt_116; +// private String smsTxt_117; +// private String smsTxt_118; +// private String smsTxt_119; +// private String smsTxt_120; +// private String smsTxt_121; +// private String smsTxt_122; +// private String smsTxt_123; +// private String smsTxt_124; +// private String smsTxt_125; +// private String smsTxt_126; +// private String smsTxt_127; +// private String smsTxt_128; +// private String smsTxt_129; +// private String smsTxt_130; +// private String smsTxt_131; +// private String smsTxt_132; +// private String smsTxt_133; +// private String smsTxt_134; +// private String smsTxt_135; +// private String smsTxt_136; +// private String smsTxt_137; +// private String smsTxt_138; +// private String smsTxt_139; +// private String smsTxt_140; +// private String smsTxt_141; +// private String smsTxt_142; +// private String smsTxt_143; +// private String smsTxt_144; +// private String smsTxt_145; +// private String smsTxt_146; +// private String smsTxt_147; +// private String smsTxt_148; +// private String smsTxt_149; +// private String smsTxt_150; +// private String smsTxt_151; +// private String smsTxt_152; +// private String smsTxt_153; +// private String smsTxt_154; +// private String smsTxt_155; +// private String smsTxt_156; +// private String smsTxt_157; +// private String smsTxt_158; +// private String smsTxt_159; +// private String smsTxt_160; +// private String smsTxt_161; +// private String smsTxt_162; +// private String smsTxt_163; +// private String smsTxt_164; +// private String smsTxt_165; +// private String smsTxt_166; +// private String smsTxt_167; +// private String smsTxt_168; +// private String smsTxt_169; +// private String smsTxt_170; +// private String smsTxt_171; +// private String smsTxt_172; +// private String smsTxt_173; +// private String smsTxt_174; +// private String smsTxt_175; +// private String smsTxt_176; +// private String smsTxt_177; +// private String smsTxt_178; +// private String smsTxt_179; +// private String smsTxt_180; +// private String smsTxt_181; +// private String smsTxt_182; +// private String smsTxt_183; +// private String smsTxt_184; +// private String smsTxt_185; +// private String smsTxt_186; +// private String smsTxt_187; +// private String smsTxt_188; +// private String smsTxt_189; +// private String smsTxt_190; +// private String smsTxt_191; +// private String smsTxt_192; +// private String smsTxt_193; +// private String smsTxt_194; +// private String smsTxt_195; +// private String smsTxt_196; +// private String smsTxt_197; +// private String smsTxt_198; +// private String smsTxt_199; +// private String smsTxt_200; +// private String smsTxt_201; +// private String smsTxt_202; +// private String smsTxt_203; +// private String smsTxt_204; +// private String smsTxt_205; +// private String smsTxt_206; +// private String smsTxt_207; +// private String smsTxt_208; +// private String smsTxt_209; +// private String smsTxt_210; +// private String smsTxt_211; +// private String smsTxt_212; +// private String smsTxt_213; +// private String smsTxt_214; +// private String smsTxt_215; +// private String smsTxt_216; +// private String smsTxt_217; +// private String smsTxt_218; +// private String smsTxt_219; +// private String smsTxt_220; +// private String smsTxt_221; +// private String smsTxt_222; +// private String smsTxt_223; +// private String smsTxt_224; +// private String smsTxt_225; +// private String smsTxt_226; +// private String smsTxt_227; +// private String smsTxt_228; +// private String smsTxt_229; +// private String smsTxt_230; +// private String smsTxt_231; +// private String smsTxt_232; +// private String smsTxt_233; +// private String smsTxt_234; +// private String smsTxt_235; +// private String smsTxt_236; +// private String smsTxt_237; +// private String smsTxt_238; +// private String smsTxt_239; +// private String smsTxt_240; +// private String smsTxt_241; +// private String smsTxt_242; +// private String smsTxt_243; +// private String smsTxt_244; +// private String smsTxt_245; +// private String smsTxt_246; +// private String smsTxt_247; +// private String smsTxt_248; +// private String smsTxt_249; +// private String smsTxt_250; +// private String smsTxt_251; +// private String smsTxt_252; +// private String smsTxt_253; +// private String smsTxt_254; +// private String smsTxt_255; +// private String smsTxt_256; +// private String smsTxt_257; +// private String smsTxt_258; +// private String smsTxt_259; +// private String smsTxt_260; +// private String smsTxt_261; +// private String smsTxt_262; +// private String smsTxt_263; +// private String smsTxt_264; +// private String smsTxt_265; +// private String smsTxt_266; +// private String smsTxt_267; +// private String smsTxt_268; +// private String smsTxt_269; +// private String smsTxt_270; +// private String smsTxt_271; +// private String smsTxt_272; +// private String smsTxt_273; +// private String smsTxt_274; +// private String smsTxt_275; +// private String smsTxt_276; +// private String smsTxt_277; +// private String smsTxt_278; +// private String smsTxt_279; +// private String smsTxt_280; +// private String smsTxt_281; +// private String smsTxt_282; +// private String smsTxt_283; +// private String smsTxt_284; +// private String smsTxt_285; +// private String smsTxt_286; +// private String smsTxt_287; +// private String smsTxt_288; +// private String smsTxt_289; +// private String smsTxt_290; +// private String smsTxt_291; +// private String smsTxt_292; +// private String smsTxt_293; +// private String smsTxt_294; +// private String smsTxt_295; +// private String smsTxt_296; +// private String smsTxt_297; +// private String smsTxt_298; +// private String smsTxt_299; +// private String smsTxt_300; +// private String smsTxt_301; +// private String smsTxt_302; +// private String smsTxt_303; +// private String smsTxt_304; +// private String smsTxt_305; +// private String smsTxt_306; +// private String smsTxt_307; +// private String smsTxt_308; +// private String smsTxt_309; +// private String smsTxt_310; +// private String smsTxt_311; +// private String smsTxt_312; +// private String smsTxt_313; +// private String smsTxt_314; +// private String smsTxt_315; +// private String smsTxt_316; +// private String smsTxt_317; +// private String smsTxt_318; +// private String smsTxt_319; +// private String smsTxt_320; +// private String smsTxt_321; +// private String smsTxt_322; +// private String smsTxt_323; +// private String smsTxt_324; +// private String smsTxt_325; +// private String smsTxt_326; +// private String smsTxt_327; +// private String smsTxt_328; +// private String smsTxt_329; +// private String smsTxt_330; +// private String smsTxt_331; +// private String smsTxt_332; +// private String smsTxt_333; +// private String smsTxt_334; +// private String smsTxt_335; +// private String smsTxt_336; +// private String smsTxt_337; +// private String smsTxt_338; +// private String smsTxt_339; +// private String smsTxt_340; +// private String smsTxt_341; +// private String smsTxt_342; +// private String smsTxt_343; +// private String smsTxt_344; +// private String smsTxt_345; +// private String smsTxt_346; +// private String smsTxt_347; +// private String smsTxt_348; +// private String smsTxt_349; +// private String smsTxt_350; +// private String smsTxt_351; +// private String smsTxt_352; +// private String smsTxt_353; +// private String smsTxt_354; +// private String smsTxt_355; +// private String smsTxt_356; +// private String smsTxt_357; +// private String smsTxt_358; +// private String smsTxt_359; +// private String smsTxt_360; +// private String smsTxt_361; +// private String smsTxt_362; +// private String smsTxt_363; +// private String smsTxt_364; +// private String smsTxt_365; +// private String smsTxt_366; +// private String smsTxt_367; +// private String smsTxt_368; +// private String smsTxt_369; +// private String smsTxt_370; +// private String smsTxt_371; +// private String smsTxt_372; +// private String smsTxt_373; +// private String smsTxt_374; +// private String smsTxt_375; +// private String smsTxt_376; +// private String smsTxt_377; +// private String smsTxt_378; +// private String smsTxt_379; +// private String smsTxt_380; +// private String smsTxt_381; +// private String smsTxt_382; +// private String smsTxt_383; +// private String smsTxt_384; +// private String smsTxt_385; +// private String smsTxt_386; +// private String smsTxt_387; +// private String smsTxt_388; +// private String smsTxt_389; +// private String smsTxt_390; +// private String smsTxt_391; +// private String smsTxt_392; +// private String smsTxt_393; +// private String smsTxt_394; +// private String smsTxt_395; +// private String smsTxt_396; +// private String smsTxt_397; +// private String smsTxt_398; +// private String smsTxt_399; +// private String smsTxt_400; +// private String smsTxt_401; +// private String smsTxt_402; +// private String smsTxt_403; +// private String smsTxt_404; +// private String smsTxt_405; +// private String smsTxt_406; +// private String smsTxt_407; +// private String smsTxt_408; +// private String smsTxt_409; +// private String smsTxt_410; +// private String smsTxt_411; +// private String smsTxt_412; +// private String smsTxt_413; +// private String smsTxt_414; +// private String smsTxt_415; +// private String smsTxt_416; +// private String smsTxt_417; +// private String smsTxt_418; +// private String smsTxt_419; +// private String smsTxt_420; +// private String smsTxt_421; +// private String smsTxt_422; +// private String smsTxt_423; +// private String smsTxt_424; +// private String smsTxt_425; +// private String smsTxt_426; +// private String smsTxt_427; +// private String smsTxt_428; +// private String smsTxt_429; +// private String smsTxt_430; +// private String smsTxt_431; +// private String smsTxt_432; +// private String smsTxt_433; +// private String smsTxt_434; +// private String smsTxt_435; +// private String smsTxt_436; +// private String smsTxt_437; +// private String smsTxt_438; +// private String smsTxt_439; +// private String smsTxt_440; +// private String smsTxt_441; +// private String smsTxt_442; +// private String smsTxt_443; +// private String smsTxt_444; +// private String smsTxt_445; +// private String smsTxt_446; +// private String smsTxt_447; +// private String smsTxt_448; +// private String smsTxt_449; +// private String smsTxt_450; +// private String smsTxt_451; +// private String smsTxt_452; +// private String smsTxt_453; +// private String smsTxt_454; +// private String smsTxt_455; +// private String smsTxt_456; +// private String smsTxt_457; +// private String smsTxt_458; +// private String smsTxt_459; +// private String smsTxt_460; +// private String smsTxt_461; +// private String smsTxt_462; +// private String smsTxt_463; +// private String smsTxt_464; +// private String smsTxt_465; +// private String smsTxt_466; +// private String smsTxt_467; +// private String smsTxt_468; +// private String smsTxt_469; +// private String smsTxt_470; +// private String smsTxt_471; +// private String smsTxt_472; +// private String smsTxt_473; +// private String smsTxt_474; +// private String smsTxt_475; +// private String smsTxt_476; +// private String smsTxt_477; +// private String smsTxt_478; +// private String smsTxt_479; +// private String smsTxt_480; +// private String smsTxt_481; +// private String smsTxt_482; +// private String smsTxt_483; +// private String smsTxt_484; +// private String smsTxt_485; +// private String smsTxt_486; +// private String smsTxt_487; +// private String smsTxt_488; +// private String smsTxt_489; +// private String smsTxt_490; +// private String smsTxt_491; +// private String smsTxt_492; +// private String smsTxt_493; +// private String smsTxt_494; +// private String smsTxt_495; +// private String smsTxt_496; +// private String smsTxt_497; +// private String smsTxt_498; +// private String smsTxt_499; +// private String smsTxt_500; + + +} diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java b/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java index 3dfc942..acf3e22 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java @@ -1,10 +1,13 @@ package com.itn.mjonApi.mjon.api.send.service; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; +import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgsRequestVO; import org.springframework.http.ResponseEntity; public interface SendService { ResponseEntity sendMsgData(MsgRequestVO msgRequestVO) throws Exception; + + ResponseEntity sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception; } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java index 45d18ee..b67ff36 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java @@ -6,6 +6,7 @@ import com.itn.mjonApi.cmn.msg.SendSuccessRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.SendMapper; import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; +import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgsRequestVO; import com.itn.mjonApi.mjon.api.send.service.SendService; import com.itn.mjonApi.util.MunjaUtil; import lombok.extern.slf4j.Slf4j; @@ -16,7 +17,10 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -113,13 +117,156 @@ public class SendServiceImpl implements SendService { } //step5.발송일시 정상여부 확인 // 1050 - //step6.문자 타입에 따른 비용 처리 가능 여부 확인 // 1060 } + @Override + public ResponseEntity sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception { + + List msgRequestVOList = this.getDataCleaning(msgsRequestVO); + + log.info("msgRequestVOList.size() :: [{}]", msgRequestVOList.size()); + msgRequestVOList.forEach(msgRequestVO -> { + log.info("msgRequestVO getCallToList() :: [{}]", msgRequestVO.getCallToList()); + log.info("msgRequestVO getSmsTxt() :: [{}]", msgRequestVO.getSmsTxt()); + log.info("======================"); + }); + //step1.발신자 전화번호 사용 가능 여부 체크(해당 사용자의 기 등록된 번호만 발송 가능) + // 1010 + if(!sendMapper.findByCallFrom(msgRequestVOList.get(0))){ + return ResponseEntity.ok().body(_falseRetunDate("STAT_1010")); + } + + List mjonResponseVOList = new ArrayList(); + for(MsgRequestVO msgRequestVO : msgRequestVOList){ + + + //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) + // 1020 + // 폰번호 확인 - 빈 값 -> 유효성 정규식 + if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ + FailRestResponse failRestResponse = _falseRetunDate("STAT_1020"); + String returnMsg = failRestResponse.getMessage(); + returnMsg = returnMsg.replace("수신자", "수신자(" + msgRequestVO.getCallToList()[0] + ")"); + failRestResponse.setMessage(returnMsg); + + return ResponseEntity.ok().body(failRestResponse); +// return ResponseEntity.ok().body(_falseRetunDate("STAT_1020")); + } + //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 30분 지연으로 처리됨 + // 1030 => 현재 사용안함 + // 스팸체크 하는 부분 + MjonResponseVO spamChkEntity = apiService.postForEntity( + "/web/user/login/selectSpamTxtChkAjax.do" + , msgRequestVO + , String.class + ); + // 스팸체크 결과값이 spams 이면 스팸문자로 처리 + if("spams".equals(spamChkEntity.getResult())){ + msgRequestVO.setSpamStatus("Y"); + }; + + // 문자 전송하는 부분 + // apiService.postForEntity => restTemplate.postForEntity 호출 후 MjonResponseVO에 맞게 데이터 정제하는 메소드 + MjonResponseVO munjaSendResponse = apiService.postForEntity( + "/web/user/login/sendMsgDataAjax.do" + , msgRequestVO + , String.class + ); + // + mjonResponseVOList.add(munjaSendResponse); + } + + + return ResponseEntity.ok().body(SendSuccessRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList)); + } + + /** + * @description + * @param msgsRequestVO + * @return + */ + private static List getDataCleaning(MsgsRequestVO msgsRequestVO) { + + + List msgRequestVOList = new ArrayList<>(); + + // Reflection으로 Object Field에 접근한다. + Field[] declaredFields = msgsRequestVO.getClass().getDeclaredFields(); + + String mberId = null; // 사용자 ID + String accessKey = null; // accessKey + String callFrom = null; // 발신자 번호 + String callTo = null; // 수신자 번호 + + for (Field field : declaredFields) { + + Object value = null; + // private Field일 경우 접근을 허용한다. + field.setAccessible(true); + + try { + // Field Value를 참조한다. + value = field.get(msgsRequestVO); + } catch (IllegalAccessException e) { + log.info("Reflection Error. {}", e); + } + + // nullPointException 방지 + if(value != null) + { + log.info(field.getName()); + + if("mberId".equals(field.getName())){ // 사용자 ID + mberId = value.toString(); + }else if("accessKey".equals(field.getName())){ // accessKey + accessKey = value.toString(); + }else if("callFrom".equals(field.getName())){ // 발신자 번호 + callFrom = value.toString(); + }else if(field.getName().startsWith("callTo")){ // 수신자 번호 + callTo = value.toString(); + }else if(field.getName().startsWith("smsTxt")){ // 문자 내용 + + // 값이 비여 있으면 다음 반복문으로 넘어간다. + if(StringUtils.isEmpty(value.toString())){ + continue; + } + +// MsgRequestVO msgRequestVO = new MsgRequestVO(); + +// msgRequestVO.setMberId(mberId); +// msgRequestVO.setAccessKey(accessKey); +// msgRequestVO.setCallFrom(callFrom); +// msgRequestVO.setCallToList(new String[]{callTo}); +// msgRequestVO.setSmsTxt(value.toString()); + + + + msgRequestVOList.add( + MsgRequestVO.builder() + .mberId(mberId) + .accessKey(accessKey) + .callFrom(callFrom) + .callToList(new String[]{callTo}) + .smsTxt(value.toString()) + .build() + ); + + + // 초기화 + callTo = ""; + + } + + + } + } + return msgRequestVOList; + } + /** * 리턴 데이터 메소드 * @return diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java index b1c4871..67dc062 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java @@ -1,6 +1,7 @@ package com.itn.mjonApi.mjon.api.send.web; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; +import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgsRequestVO; import com.itn.mjonApi.mjon.api.send.service.SendService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -42,16 +43,28 @@ public class SendRestController { /** * * @param msgRequestVO - * @Discription 문자 발송 테스트 + * @Discription [문자 발송] 같은 내용으로 여려명에게 보냄 * @return */ @CrossOrigin("*") // 모든 요청에 접근 허용 @PostMapping("/api/send/sendMsg") @ApiOperation(value= "단문 문자 전송", notes = "같은 내용으로 여러명에게 보냄") public ResponseEntity sendMsg(MsgRequestVO msgRequestVO) throws Exception { - return sendService.sendMsgData(msgRequestVO); + } + /** + * + * @param msgsRequestVO + * @description [문자 발송] 다른 내용으로 여려명에게 보냄 + * @return + * @throws Exception + */ + @CrossOrigin("*") // 모든 요청에 접근 허용 + @PostMapping("/api/send/sendMsgs") + @ApiOperation(value= "문자 전송", notes = "[문자 발송] 다른 내용으로 여려명에게 보냄") + public ResponseEntity sendMsgs(MsgsRequestVO msgsRequestVO) throws Exception { + return sendService.sendMsgsData(msgsRequestVO); }