Browse Source

feat: 드론원스톱 외부 연동 api test용 controller(data parsing 테스트)

feature/address-coordinate
지대한 5 months ago
parent
commit
56967078c1
  1. 2
      pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtAuthenticationEntryPoint.java
  2. 76
      pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalDronOneStopController.java
  3. 61
      pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java
  4. 9
      pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java
  5. 2
      pav-server/src/main/java/com/palnet/comn/utils/JsonUtils.java
  6. 2
      pav-server/src/main/resources/config/log/logback-spring.xml

2
pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtAuthenticationEntryPoint.java

@ -13,8 +13,8 @@ import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@Component
public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable {
private static final long serialVersionUID = -7858869558953243875L;

76
pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalDronOneStopController.java vendored

@ -0,0 +1,76 @@
package com.palnet.biz.api.external.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.palnet.biz.api.external.model.DosPlanRq;
import com.palnet.biz.api.external.model.TsPlanRq;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.JsonUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Tag(name = "외부 연동 API - 드론원스톱", description = "외부 연동 API - 드론원스톱")
@RequiredArgsConstructor
@RestController
public class ExternalDronOneStopController {
private final ObjectMapper objectMapper;
@Operation(summary = "TS로 부터 비행 신청 정보", description = "TS로 부터 비행 신청 정보")
@PostMapping({"/api/external/dos/plan/laanc", "/api/laanc/flight/plan"})
public ResponseEntity<?> saveFltPlan(@RequestBody String rq) {
log.info(">>>> dos body: {}", rq);
DosPlanRq paln;
try {
paln = JsonUtils.fromJson(rq, DosPlanRq.class);
log.info(">>>> dos plan: {}", paln);
log.info(">>>> dos json: {}", JsonUtils.toJson(paln));
} catch (Exception e) {
ErrorCode errorCode = ErrorCode.TS_PARAM;
Map<String, String> error = new HashMap<>();
error.put("rspCode", "300");
error.put("rspMessage", errorCode.message());
return ResponseEntity.status(300).body(error);
}
try {
// basLaancService.createPlanDos(tsPlanRq);
} catch (CustomException e) {
log.error("IGNORE: ", e);
ErrorCode errorCode = ErrorCode.fromCode(e.getErrorCode());
if (errorCode == null) errorCode = ErrorCode.TS_ETC;
String tsErrorCode = errorCode.code().replaceAll("TS", "");
Map<String, String> error = new HashMap<>();
error.put("rspCode", tsErrorCode);
error.put("rspMessage", errorCode.message());
return ResponseEntity.status(Integer.parseInt(tsErrorCode)).body(error);
} catch (Exception e) {
log.error("IGNORE: ", e);
Map<String, String> error = new HashMap<>();
error.put("rspCode", ErrorCode.TS_ETC.code());
error.put("rspMessage", ErrorCode.TS_ETC.message());
return ResponseEntity.status(700).body(error);
}
Map<String, String> successRs = new HashMap<>();
successRs.put("rspCode", ErrorCode.TS_SUCCESS.code().replaceAll("TS", ""));
successRs.put("rspMessage", ErrorCode.TS_SUCCESS.message());
return ResponseEntity.ok().body(successRs);
}
}

61
pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java vendored

@ -0,0 +1,61 @@
package com.palnet.biz.api.external.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DosPlanRq {
private DosPlan fltaplylist;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DosPlan {
private String aplyno;
@JsonFormat(pattern = "yyyyMMdd")
private LocalDate aplyymd;
private String fbctnno;
@JsonFormat(pattern = "yyyyMMdd")
private LocalDate fltstymd;
@JsonFormat(pattern = "yyyyMMdd")
private LocalDate fltendymd;
private List<DosPlanArea> zone;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DosPlanArea {
private Double elev;
private Double radius;
private List<DosPlanAreaCoords> coords;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DosPlanAreaCoords {
private Double lat;
private Double lon;
}
}
}
}

9
pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java

@ -1,6 +1,8 @@
package com.palnet.biz.config;
import com.palnet.biz.api.acnt.jwt.filter.JwtAuthenticationEntryPoint;
import com.palnet.biz.api.acnt.jwt.filter.JwtRequestFilter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@ -18,13 +20,9 @@ import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import com.palnet.biz.api.acnt.jwt.filter.JwtAuthenticationEntryPoint;
import com.palnet.biz.api.acnt.jwt.filter.JwtRequestFilter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Arrays;
@ -45,7 +43,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
"/api/server/**",
"/api/comn/file/download",
"/api/comn/file/download/**",
// 외부 연동
"/api/external/laanc/**",
"/api/external/dos/**",
"/api/laanc/flight/plan",
// TEST
"/api/v1/utm",
/* swagger v2 */

2
pav-server/src/main/java/com/palnet/comn/utils/JsonUtils.java

@ -7,6 +7,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ -15,6 +16,7 @@ public class JsonUtils {
public static ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.registerModule(new JavaTimeModule());
return mapper;
}

2
pav-server/src/main/resources/config/log/logback-spring.xml

@ -39,7 +39,7 @@
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%-5p][$thread] %logger{40} [%F]%M\(%L\) : %m%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%-5p][thread:%t] %logger{40} [%F]%M\(%L\) : %m%n</pattern>
</layout>
</appender>
<!-- JDBC -->

Loading…
Cancel
Save