11package com .example .cake_way .home .search .service ;
22
3+ import com .example .cake_way .cake .dto .CakeDTO ;
4+ import com .example .cake_way .cake .repository .CakeRepository ;
35import com .example .cake_way .cakeshop .entity .CakeShop ;
46import com .example .cake_way .cakeshop .repository .CakeShopRepository ;
57import com .example .cake_way .common .util .DistanceCalculator ;
911import java .util .Comparator ;
1012import java .util .List ;
1113import java .util .stream .Collectors ;
14+
1215@ Service
1316public class MapSearchService {
1417
1518 private final CakeShopRepository cakeShopRepository ;
19+ private final CakeRepository cakeRepository ;
1620
17- public MapSearchService (CakeShopRepository cakeShopRepository ) {
21+ public MapSearchService (CakeShopRepository cakeShopRepository , CakeRepository cakeRepository ) {
1822 this .cakeShopRepository = cakeShopRepository ;
23+ this .cakeRepository = cakeRepository ;
1924 }
2025
2126 public List <CakeShopSearchDTO > searchCakeShops (String keyword , double latitude , double longitude , boolean isSameDay ) {
@@ -33,18 +38,33 @@ public List<CakeShopSearchDTO> searchCakeShops(String keyword, double latitude,
3338 : cakeShopRepository .findByKeyword (keyword );
3439 }
3540
36- // 거리 계산 및 정렬
41+ // 거리 계산 및 케이크 정보 추가
3742 return shops .stream ()
38- .map (shop -> CakeShopSearchDTO .builder ()
39- .shopId (shop .getShopId ())
40- .name (shop .getName ())
41- .address (shop .getAddress ())
42- .contact (shop .getContact ())
43- .thumbnailImage (shop .getThumbnailImage ())
44- .distance (DistanceCalculator .calculateDistance (
45- shop .getLatitude (), shop .getLongitude (), latitude , longitude ))
46- .build ())
43+ .map (shop -> {
44+ List <CakeDTO > cakes = cakeRepository .findByCakeShop (shop ).stream ()
45+ .map (cake -> CakeDTO .builder ()
46+ .cakeId (cake .getCakeId ())
47+ .name (cake .getName ())
48+ .price (cake .getPrice ())
49+ .imageUrl (cake .getImageUrl ())
50+ .build ())
51+ .collect (Collectors .toList ());
52+
53+ return CakeShopSearchDTO .builder ()
54+ .shopId (shop .getShopId ())
55+ .name (shop .getName ())
56+ .address (shop .getAddress ())
57+ .contact (shop .getContact ())
58+ .thumbnailImage (shop .getThumbnailImage ())
59+ .distance (DistanceCalculator .calculateDistance (
60+ shop .getLatitude (), shop .getLongitude (), latitude , longitude ))
61+ .latitude (shop .getLatitude ()) // 위도 추가
62+ .longitude (shop .getLongitude ()) // 경도 추가
63+ .cakes (cakes ) // 케이크 리스트 추가
64+ .build ();
65+ })
4766 .sorted (Comparator .comparingDouble (CakeShopSearchDTO ::getDistance )) // 가까운 순으로 정렬
4867 .collect (Collectors .toList ());
4968 }
5069}
70+
0 commit comments