11package goodspace .backend .delivery .service ;
22
33import com .fasterxml .jackson .core .JsonProcessingException ;
4- import com .fasterxml .jackson .databind .ObjectMapper ;
54import com .fasterxml .jackson .dataformat .xml .XmlMapper ;
65import goodspace .backend .delivery .domain .DeliveryHistory ;
76import goodspace .backend .delivery .domain .DeliveryStatus ;
87import goodspace .backend .delivery .dto .DeliveryHistoryDto ;
9- import goodspace .backend .delivery .dto .DeliveryStatusDto ;
10- import goodspace .backend .delivery .dto .OnlyHistoryWrapper ;
8+ import goodspace .backend .delivery .dto .DeliveryResponseDto ;
119import goodspace .backend .order .domain .Order ;
1210import goodspace .backend .order .repository .OrderRepository ;
1311import org .springframework .beans .factory .annotation .Value ;
1412import org .springframework .http .*;
1513import org .springframework .stereotype .Service ;
14+ import org .springframework .transaction .annotation .Transactional ;
1615import org .springframework .web .client .RestTemplate ;
1716
1817import java .util .List ;
19-
2018@ Service
19+ @ Transactional
2120public class DeliveryService {
2221 private final OrderRepository orderRepository ;
22+
2323 @ Value ("${api.epost.service-key}" )
2424 String serviceKey ;
2525
@@ -39,52 +39,45 @@ public String RegistrationMappingWithOrderIdAfterCallTrace(Long orderId, String
3939
4040 ResponseEntity <String > response = restTemplate .exchange (url , HttpMethod .GET , request , String .class );
4141
42- ObjectMapper xmlMapper = new XmlMapper ();
42+ XmlMapper xmlMapper = new XmlMapper ();
43+
44+ // 최상위 DTO로 한번에 파싱
45+ DeliveryResponseDto deliveryResponseDto = xmlMapper .readValue (response .getBody (), DeliveryResponseDto .class );
4346
44- DeliveryStatusDto deliveryStatusDto = xmlMapper .readValue (response .getBody (), DeliveryStatusDto .class );
45- OnlyHistoryWrapper parsed = xmlMapper .readValue (response .getBody (), OnlyHistoryWrapper .class );
46- List <DeliveryHistoryDto > historyList = parsed .getLongitudinalDomesticList ();
47+ List <DeliveryHistoryDto > historyList = deliveryResponseDto .getLongitudinalDomesticList ();
4748
4849 Order order = orderRepository .findById (orderId ).orElseThrow (() -> new IllegalStateException ("Order not found" ));
4950
50- orderMappingWithDeliveryDtos (order , deliveryStatusDto , historyList );
51+ // DeliveryStatusDto 대신 LongitudinalDomesticListResponseDto에서 필요한 필드를 꺼내서 사용
52+ mapOrderWithResponseDto (order , deliveryResponseDto , historyList );
5153
5254 if (order .getDeliveryHistorys () != null && !order .getDeliveryHistorys ().isEmpty ()) {
5355 return "save completed" ;
54- }
55-
56- else {
57- return "save failed" ;
56+ } else {
57+ return deliveryResponseDto .getLongitudinalDomesticList ().toString ();
5858 }
5959 }
6060
61-
62- private void orderMappingWithDeliveryDtos (Order order , DeliveryStatusDto deliveryStatusDto , List <DeliveryHistoryDto > deliveryHistoryDtos ) throws JsonProcessingException {
63- if (order != null && deliveryStatusDto != null && deliveryHistoryDtos != null ) {
61+ private void mapOrderWithResponseDto (Order order , DeliveryResponseDto responseDto , List <DeliveryHistoryDto > deliveryHistoryDtos ) {
62+ if (order != null && responseDto != null && deliveryHistoryDtos != null ) {
6463 order .setDeliveryStatus (DeliveryStatus .builder ()
65- .sender (deliveryStatusDto .getSender ())
66- .receiver (deliveryStatusDto .getReceiver ())
67- .completeDate (deliveryStatusDto .getCompleteDate ())
68- .status (deliveryStatusDto .getStatus ())
69- .postType (deliveryStatusDto .getPostType ())
70- .registrationNumber (deliveryStatusDto .getRegistrationNumber ())
71- .treatType (deliveryStatusDto .getTreatType ())
64+ .sender (responseDto .getSender ())
65+ .receiver (responseDto .getReceiver ())
66+ .completeDate (responseDto .getCompleteDate ())
67+ .status (responseDto .getStatus ())
68+ .postType (responseDto .getPostType ())
69+ .registrationNumber (responseDto .getRegistrationNumber ())
70+ .treatType (responseDto .getTreatType ())
7271 .build ());
7372
74- for (DeliveryHistoryDto deliveryHistoryDto : deliveryHistoryDtos ) {
73+ for (DeliveryHistoryDto deliveryHistoryDto : deliveryHistoryDtos ) {
7574 order .addDeliveryHistory (DeliveryHistory .builder ()
76- .date (deliveryHistoryDto .getDate ())
77- .time (deliveryHistoryDto .getTime ())
78- .location (deliveryHistoryDto .getLocation ())
79- .processStatus (deliveryHistoryDto .getProcessStatus ())
75+ .date (deliveryHistoryDto .getDate ())
76+ .time (deliveryHistoryDto .getTime ())
77+ .location (deliveryHistoryDto .getLocation ())
78+ .processStatus (deliveryHistoryDto .getProcessStatus ())
8079 .build ());
8180 }
8281 }
83-
84-
8582 }
86- }
87-
88-
89-
90-
83+ }
0 commit comments