diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java index 2de9112..27be6c8 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java @@ -5,7 +5,6 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -24,8 +23,6 @@ import com.palnet.biz.api.comn.file.model.LaancPdfModel; import com.palnet.biz.api.comn.file.service.ComnFileService; import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel; import com.palnet.biz.api.comn.sms.service.ComnSmsService; -import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetCoordRq; -import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetRs; import com.palnet.biz.api.external.model.PilotValidRq; import com.palnet.biz.api.external.model.PilotValidRs; import com.palnet.biz.api.external.service.TsService; @@ -84,7 +81,6 @@ public class BasLaancService { private final FltPlanPilotRepository fltPlanPilotRepository; private final PtyCstmrQueryRepository ptyCstmrQueryRepository; private final PtyTermsAgreeTxnRepository ptyTermsAgreeTxnRepository; - private final ComRiseSetQueryRepository comRiseSetQueryRepository; private final TsService tsService; private final CtrTrnsLctnService ctrTrnsLctnService; private final ComnFileService comnFileService; @@ -92,8 +88,6 @@ public class BasLaancService { private final JwtTokenUtil jwtTokenUtil; private final AreaUtils areaUtils; - private final String FILE_DOWNLOAD_URL = "/api/comn/file/download"; - // LAANC 검증 public BasLaancValidatedRs validationLaanc(BasLaancPlanRq rq) { if (!this.laancParamValid(rq)) throw new CustomException(ErrorCode.NON_VALID_PARAMETER); @@ -131,7 +125,7 @@ public class BasLaancService { .build(); }).collect(Collectors.toList()); - List pilotValidRsList = tsService.callPilotValid(pilotValidRqList); + List pilotValidRsList = tsService.getAccountValidate(pilotValidRqList); if (pilotValidRsList.isEmpty()) { rs.setPilotQlfc(false); rs.setArcrftInsurance(false); @@ -639,25 +633,22 @@ public class BasLaancService { // TS 연동 public BasLaancTsRs getTsValid(List idntfNumList) { -// List idntfNumList = rq.getIdntfNumList(); Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); AnctCstmrModel cstmrInfo = ptyCstmrQueryRepository.findByCstmrSno(cstmrSno); String userCi = cstmrInfo.getIpinCi(); - List pilotValidRqList = idntfNumList.stream().map(declarationnum -> { - // TODO 기체보험 확인, 조종사 자격 확인 - return PilotValidRq.builder() - .pilotci(userCi) - .declarationnum(declarationnum) - .build(); - }).collect(Collectors.toList()); - - List pilotValidRsList = tsService.callPilotValid(pilotValidRqList); + List pilotValidRqList = idntfNumList.stream().map( + declarationnum -> PilotValidRq.builder() + .pilotci(userCi) + .declarationnum(declarationnum) + .build() + ).collect(Collectors.toList()); + + List pilotValidRsList = tsService.getAccountValidate(pilotValidRqList); boolean isValid = pilotValidRsList.stream().noneMatch(pilotValidRs -> !"Y".equals(pilotValidRs.getPilotcredentialyn()) || !"Y".equals(pilotValidRs.getArcrftinsuranceyn())); - BasLaancTsRs rs = BasLaancTsRs.builder() + return BasLaancTsRs.builder() .isValid(isValid) .pilotValidRsList(pilotValidRsList) .build(); - return rs; } // 관제권 포함 여부 diff --git a/pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java b/pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java index e233ab7..9254692 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java @@ -5,7 +5,6 @@ import com.palnet.biz.api.external.model.SunRiseSetXmlRs; import com.palnet.biz.jpa.entity.ComRiseSetBas; import com.palnet.biz.jpa.entity.ComRiseSetBasPK; import com.palnet.biz.jpa.repository.com.ComRiseSetBasRepository; -import com.palnet.comn.utils.InstantUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -17,11 +16,8 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.util.UriComponentsBuilder; import java.lang.reflect.Field; -import java.time.Instant; import java.time.LocalDate; -import java.time.Period; import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -73,7 +69,7 @@ public class SunRiseSetService { for (String location : locations) { try { cnt++; - List results = getSunRiseSet(locdate, location); + List results = callSunRiseSet(locdate, location); // trim 제거 및 6자리로 맞추기 results.forEach(result -> { Class aClass = result.getClass(); @@ -123,7 +119,7 @@ public class SunRiseSetService { } - public List getSunRiseSet(String locdate, String location) { + public List callSunRiseSet(String locdate, String location) { String uriStr = UriComponentsBuilder.fromUriString(AREA_RISE_SEET_INFO_URL) .queryParam("serviceKey", SUN_KEY) diff --git a/pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java b/pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java index 56f12f4..4c89c8c 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java @@ -4,8 +4,17 @@ import com.palnet.biz.api.external.model.PilotValidRq; import com.palnet.biz.api.external.model.PilotValidRs; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.DefaultUriBuilderFactory; +import org.springframework.web.util.UriComponentsBuilder; +import org.springframework.web.util.UriUtils; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -25,25 +34,56 @@ import java.util.List; @Service public class TsService { - public List callPilotValid(List rqList) { -// if(rq.getPilotci() == null || rq.getDeclarationnum() == null) { -// return null; -// } - // TODO: call pilot valid api + @Value("${external.ts.url}") + private String TS_HOST; + private final String ACCOUNT_VALIDATE_URI = "/api/account/getValidate"; + + + public List getAccountValidate(List rqList) { - // RS 임시코드 - 추후 조건에 따른 TRUE/FALSE 처리 필요 List rsList = new ArrayList<>(); for (PilotValidRq rq : rqList) { - PilotValidRs pilotValidRs = new PilotValidRs(); - pilotValidRs.setRspCode("200"); - pilotValidRs.setRspMessage("success"); - pilotValidRs.setPilotcredentialyn("Y"); - pilotValidRs.setArcrftinsuranceyn("Y"); - pilotValidRs.setArcrftdeclaration("Y"); - pilotValidRs.setCorpregyn("Y"); + PilotValidRs pilotValidRs = this.callAccountValidate(rq); + if (pilotValidRs == null) { + pilotValidRs = new PilotValidRs(); + } pilotValidRs.setRq(rq); rsList.add(pilotValidRs); } return rsList; -} + + } + + public PilotValidRs callAccountValidate(PilotValidRq rq) { + + String pilotciEnc = UriUtils.encode(rq.getPilotci(), StandardCharsets.UTF_8); + + String uriStr = UriComponentsBuilder.fromUriString(ACCOUNT_VALIDATE_URI) + .queryParam("pilotci", pilotciEnc) + .queryParam("declarationnum", rq.getDeclarationnum()) + .build() + .toUriString(); + + DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(TS_HOST); + factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE); + + WebClient client = WebClient.builder() + .uriBuilderFactory(factory) + .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .build(); + + ResponseEntity resp = client.get() + .uri(uriStr) + .retrieve() + .toEntity(PilotValidRs.class) + .block(); + + PilotValidRs rs = null; + if (resp != null) { + rs = resp.getBody(); + } + + return rs; + } + } diff --git a/pav-server/src/main/resources/application.properties b/pav-server/src/main/resources/application.properties index 6a13ea4..0c10bc9 100644 --- a/pav-server/src/main/resources/application.properties +++ b/pav-server/src/main/resources/application.properties @@ -15,6 +15,9 @@ external.sunriseset.url=http://apis.data.go.kr/B090041/openapi/service/RiseSetIn #external.sunriseset.key=b%2FStm6AMT3EwXc5kOvwnjK%2FPB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ%2Fur45GrnVOZKs2sfIWKUX3BTl8eYwVFw%3D%3D external.sunriseset.key=b/Stm6AMT3EwXc5kOvwnjK/PB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ/ur45GrnVOZKs2sfIWKUX3BTl8eYwVFw== +### TS ### +external.ts.url=http://121.137.95.45:8170 + ### Token key ###### spring.jwt.secret=jwtsecretkey spring.jwt.prefix=palnet diff --git a/pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java b/pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java index 73cc092..1c0a8e5 100644 --- a/pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java +++ b/pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java @@ -14,7 +14,7 @@ class SunRiseSetServiceTest { @Test void getSunRiseSet() { - service.getSunRiseSet("20231231", "김포"); + service.callSunRiseSet("20231231", "김포"); } @Test diff --git a/pav-server/src/test/java/com/palnet/biz/api/external/service/TsServiceTest.java b/pav-server/src/test/java/com/palnet/biz/api/external/service/TsServiceTest.java new file mode 100644 index 0000000..1379171 --- /dev/null +++ b/pav-server/src/test/java/com/palnet/biz/api/external/service/TsServiceTest.java @@ -0,0 +1,36 @@ +package com.palnet.biz.api.external.service; + +import com.palnet.biz.api.external.model.PilotValidRq; +import com.palnet.biz.api.external.model.PilotValidRs; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +@Slf4j +@ActiveProfiles("local") +@SpringBootTest +class TsServiceTest { + + @Autowired + private TsService service; + + + @Value("${external.ts.url}") + private String TS_HOST; + private final String ACCOUNT_VALIDATE_URI = "/api/account/getValidate"; + + @Test + void callAccountValidate() { + PilotValidRq rq = PilotValidRq.builder() + .pilotci("wEi9oYSuekQGxT9MV4rKHG4CO+Zrp+onhLIIuembI8jx/0PLF5Ne3oMBxvUFlN4UmsgjeNErZfmpCVUFHsv8nq==") + .declarationnum("PA0001") + .build(); + PilotValidRs rs = service.callAccountValidate(rq); + log.info(">>> rs : {}", rs); + } + + +} \ No newline at end of file