diff --git a/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripItemMsg.java b/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripItemMsg.java index 204b0ed..204aff6 100644 --- a/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripItemMsg.java +++ b/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripItemMsg.java @@ -1,32 +1,33 @@ package org.tenten.tentenstomp.domain.trip.dto.response; import org.tenten.tentenstomp.domain.trip.dto.request.TripItemPriceUpdateMsg; -import org.tenten.tentenstomp.domain.trip.entity.Trip; import org.tenten.tentenstomp.domain.trip.entity.TripItem; import org.tenten.tentenstomp.global.common.enums.Category; +import org.tenten.tentenstomp.global.common.enums.Transportation; -import java.time.LocalDate; import java.util.ArrayList; import java.util.List; public record TripItemMsg( Long tripId, String visitDate, + Transportation transportation, List tripItems ) { - public static TripItemMsg fromTripItemList(Long tripId, String visitDate, List tripItems) { - return new TripItemMsg(tripId, visitDate, tripItems.stream().map(t-> new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice())).toList()); + public static TripItemMsg fromTripItemList(Long tripId, String visitDate, Transportation transportation, List tripItems) { + + return new TripItemMsg(tripId, visitDate, transportation, tripItems.stream().map(t -> new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice())).toList()); } - public static TripItemMsg fromTripItemList(Long tripId, String visitDate, List tripItems, Long tripItemId, TripItemPriceUpdateMsg updateMsg) { + public static TripItemMsg fromTripItemList(Long tripId, String visitDate, List tripItems, Long tripItemId, Transportation transportation, TripItemPriceUpdateMsg updateMsg) { List tripItemInfoMsgs = new ArrayList<>(); for (TripItem t : tripItems) { if (t.getId().equals(tripItemId)) { - tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), updateMsg.price())); + tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getSeqNum(), t.getVisitDate().toString(), updateMsg.price())); } else { - tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice())); + tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice())); } } - return new TripItemMsg(tripId, visitDate, tripItemInfoMsgs); + return new TripItemMsg(tripId, visitDate, transportation, tripItemInfoMsgs ); } } diff --git a/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripPathMsg.java b/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripPathMsg.java index 2edc043..a70de51 100644 --- a/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripPathMsg.java +++ b/src/main/java/org/tenten/tentenstomp/domain/trip/dto/response/TripPathMsg.java @@ -1,11 +1,13 @@ package org.tenten.tentenstomp.domain.trip.dto.response; -import java.time.LocalDate; +import org.tenten.tentenstomp.global.common.enums.Transportation; + import java.util.List; public record TripPathMsg( Long tripId, String visitDate, + Transportation transportation, List paths ) { } diff --git a/src/main/java/org/tenten/tentenstomp/domain/trip/repository/MessageProxyRepositoryImpl.java b/src/main/java/org/tenten/tentenstomp/domain/trip/repository/MessageProxyRepositoryImpl.java index ffb1e09..53d97cf 100644 --- a/src/main/java/org/tenten/tentenstomp/domain/trip/repository/MessageProxyRepositoryImpl.java +++ b/src/main/java/org/tenten/tentenstomp/domain/trip/repository/MessageProxyRepositoryImpl.java @@ -64,11 +64,14 @@ public TripItemMsg getTripItemMsg(Long tripId, String visitDate) { return objectMapper.convertValue(cached, TripItemMsg.class); } + Trip trip = tripRepository.getReferenceById(tripId); + Map tripTransportationMap = trip.getTripTransportationMap(); + Transportation transportation = tripTransportationMap.getOrDefault(visitDate, CAR); List tripInfos = tripItemRepository.getTripItemInfoByTripIdAndVisitDate(tripId, LocalDate.parse(visitDate)); List tripItemInfoMsgs = tripInfos.stream().map(t -> new TripItemInfoMsg( t.tripItemId(), t.tourItemId(), t.name(), t.thumbnailUrl(), Category.fromCode(t.contentTypeId()).getName(), t.seqNum(), t.visitDate().toString(), t.price() )).toList(); - TripItemMsg tripItemMsg = new TripItemMsg(tripId, visitDate, tripItemInfoMsgs); + TripItemMsg tripItemMsg = new TripItemMsg(tripId, visitDate, transportation, tripItemInfoMsgs); redisCache.save(TRIP_ITEM, Long.toString(tripId), visitDate, tripItemMsg); return tripItemMsg; @@ -83,7 +86,7 @@ public TripPathMsg getTripPathMsg(Long tripId, String visitDate) { Map tripTransportationMap = trip.getTripTransportationMap(); Transportation transportation = tripTransportationMap.getOrDefault(visitDate, CAR); TripPathCalculationResult tripPath = pathComponent.getTripPath(tripItemRepository.findTripPlaceByTripIdAndVisitDate(tripId, LocalDate.parse(visitDate)), transportation); - TripPathMsg tripPathMsg = new TripPathMsg(tripId, visitDate, tripPath.tripPathInfoMsgs()); + TripPathMsg tripPathMsg = new TripPathMsg(tripId, visitDate, transportation, tripPath.tripPathInfoMsgs()); redisCache.save(PATH, Long.toString(tripId), visitDate, tripPathMsg); return tripPathMsg; diff --git a/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripItemService.java b/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripItemService.java index 9204644..bcf5b7c 100644 --- a/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripItemService.java +++ b/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripItemService.java @@ -51,11 +51,12 @@ public void updateTripItemPrice(String tripItemId, TripItemPriceUpdateMsg priceU Long oldPrice = tripItem.getPrice(); Long newPrice = priceUpdateMsg.price(); Trip trip = tripItem.getTrip(); + Transportation transportation = trip.getTripTransportationMap().getOrDefault(priceUpdateMsg.visitDate(), CAR); trip.updateTripItemPriceSum(oldPrice, newPrice); tripItem.updatePrice(newPrice); List tripItems = tripItemRepository.findTripItemByTripIdAndVisitDate(tripItem.getTrip().getId(), LocalDate.parse(priceUpdateMsg.visitDate())); TripBudgetMsg tripBudgetMsg = new TripBudgetMsg(trip.getId(), trip.getBudget(), trip.getTripItemPriceSum() + trip.getTransportationPriceSum()); - TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), tripItem.getVisitDate().toString(), tripItems, tripItem.getId(), priceUpdateMsg); + TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), tripItem.getVisitDate().toString(), tripItems, tripItem.getId(), transportation, priceUpdateMsg); kafkaProducer.sendAndSaveToRedis(tripBudgetMsg, tripItemMsg); } @@ -112,10 +113,10 @@ public void updateTripItemVisitDate(String tripItemId, TripItemVisitDateUpdateMs tripPathPriceMap.put(newDate.toString(), newDateTripPath.pathPriceSum()); tripRepository.save(trip); - TripItemMsg pastDateTripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), pastDate.toString(), newPastDateTripItems); - TripItemMsg newDateTripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), newDate.toString(), newDateTripItems); - TripPathMsg pastDateTripPathMsg = new TripPathMsg(trip.getId(), pastDate.toString(), pastDateTripPath.tripPathInfoMsgs()); - TripPathMsg newDateTripPathMsg = new TripPathMsg(trip.getId(), newDate.toString(), newDateTripPath.tripPathInfoMsgs()); + TripItemMsg pastDateTripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), pastDate.toString(), pastDateTransportation, newPastDateTripItems); + TripItemMsg newDateTripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), newDate.toString(), newDateTransportation, newDateTripItems); + TripPathMsg pastDateTripPathMsg = new TripPathMsg(trip.getId(), pastDate.toString(), pastDateTransportation, pastDateTripPath.tripPathInfoMsgs()); + TripPathMsg newDateTripPathMsg = new TripPathMsg(trip.getId(), newDate.toString(), newDateTransportation, newDateTripPath.tripPathInfoMsgs()); TripBudgetMsg tripBudgetMsg = new TripBudgetMsg(trip.getId(), trip.getBudget(), trip.getTripItemPriceSum() + trip.getTransportationPriceSum()); kafkaProducer.sendAndSaveToRedis(pastDateTripItemMsg, newDateTripItemMsg, pastDateTripPathMsg, newDateTripPathMsg, tripBudgetMsg); @@ -161,8 +162,8 @@ public void deleteTripItem(String tripItemId, TripItemDeleteMsg tripItemDeleteMs tripPathPriceMap.put(visitDate.toString(), tripPath.pathPriceSum()); tripRepository.save(trip); - TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate.toString(), newTripItems); - TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate.toString(), tripPath.tripPathInfoMsgs()); + TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate.toString(), transportation, newTripItems); + TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate.toString(), transportation, tripPath.tripPathInfoMsgs()); TripBudgetMsg tripBudgetMsg = new TripBudgetMsg(trip.getId(), trip.getBudget(), trip.getTripItemPriceSum() + trip.getTransportationPriceSum()); kafkaProducer.sendAndSaveToRedis(tripItemMsg, tripPathMsg, tripBudgetMsg); diff --git a/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripService.java b/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripService.java index 81dbbe5..09b8a54 100644 --- a/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripService.java +++ b/src/main/java/org/tenten/tentenstomp/domain/trip/service/TripService.java @@ -138,8 +138,8 @@ private void updateBudgetAndItemsAndPath(Trip trip, List tripItems, St tripRepository.save(trip); TripBudgetMsg tripBudgetMsg = new TripBudgetMsg(trip.getId(), trip.getBudget(), trip.getTripItemPriceSum() + trip.getTransportationPriceSum()); - TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate, tripItems); - TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate, tripPath.tripPathInfoMsgs()); + TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate, transportation, tripItems); + TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate, transportation, tripPath.tripPathInfoMsgs()); kafkaProducer.sendAndSaveToRedis(tripBudgetMsg, tripItemMsg, tripPathMsg); } @@ -203,8 +203,8 @@ public void updateTripTransportation(String tripId, TripTransportationUpdateMsg tripRepository.save(trip); TripBudgetMsg tripBudgetMsg = new TripBudgetMsg(trip.getId(), trip.getBudget(), trip.getTripItemPriceSum() + trip.getTransportationPriceSum()); - TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate, tripItems); - TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate, tripPath.tripPathInfoMsgs()); + TripItemMsg tripItemMsg = TripItemMsg.fromTripItemList(trip.getId(), visitDate, tripTransportationUpdateMsg.transportation(), tripItems); + TripPathMsg tripPathMsg = new TripPathMsg(trip.getId(), visitDate, tripTransportationUpdateMsg.transportation(), tripPath.tripPathInfoMsgs()); kafkaProducer.sendAndSaveToRedis(tripBudgetMsg, tripItemMsg, tripPathMsg); }