Skip to content

Commit 5594bc6

Browse files
committed
Merge branch 'develop' into feat/PRODUCT-257
2 parents b3dab1a + e21ba4e commit 5594bc6

23 files changed

+483
-30
lines changed

src/main/java/eatda/controller/cheer/CheerController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import lombok.RequiredArgsConstructor;
1313
import org.springframework.http.HttpStatus;
1414
import org.springframework.http.ResponseEntity;
15+
import org.springframework.validation.annotation.Validated;
1516
import org.springframework.web.bind.annotation.GetMapping;
1617
import org.springframework.web.bind.annotation.PathVariable;
1718
import org.springframework.web.bind.annotation.PostMapping;
@@ -20,6 +21,7 @@
2021
import org.springframework.web.bind.annotation.RestController;
2122
import org.springframework.web.multipart.MultipartFile;
2223

24+
@Validated
2325
@RestController
2426
@RequiredArgsConstructor
2527
public class CheerController {

src/main/java/eatda/controller/store/StoreController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@
1010
import java.util.List;
1111
import lombok.RequiredArgsConstructor;
1212
import org.springframework.http.ResponseEntity;
13+
import org.springframework.validation.annotation.Validated;
1314
import org.springframework.web.bind.annotation.GetMapping;
1415
import org.springframework.web.bind.annotation.PathVariable;
1516
import org.springframework.web.bind.annotation.RequestParam;
1617
import org.springframework.web.bind.annotation.RestController;
1718

19+
@Validated
1820
@RestController
1921
@RequiredArgsConstructor
2022
public class StoreController {
@@ -42,6 +44,12 @@ public ResponseEntity<StoreResponse> getStore(@PathVariable long storeId) {
4244
return ResponseEntity.ok(response);
4345
}
4446

47+
@GetMapping("/api/shops/cheered-member")
48+
public ResponseEntity<StoresInMemberResponse> getStoresByCheeredMember(LoginMember member) {
49+
StoresInMemberResponse response = storeService.getStoresByCheeredMember(member.id());
50+
return ResponseEntity.ok(response);
51+
}
52+
4553
@GetMapping("/api/shop/search")
4654
public ResponseEntity<StoreSearchResponses> searchStore(@RequestParam String query, LoginMember member) {
4755
List<StoreSearchResult> storeSearchResults = storeSearchService.searchStores(query);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package eatda.controller.store;
2+
3+
import eatda.domain.store.Store;
4+
5+
public record StoreInMemberResponse(
6+
long id,
7+
String name,
8+
String district,
9+
String neighborhood,
10+
long cheerCount
11+
) {
12+
public StoreInMemberResponse(Store store, int cheerCount) {
13+
this(
14+
store.getId(),
15+
store.getName(),
16+
store.getAddressDistrict(),
17+
store.getAddressNeighborhood(),
18+
cheerCount
19+
);
20+
}
21+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package eatda.controller.store;
2+
3+
import java.util.List;
4+
5+
public record StoresInMemberResponse(List<StoreInMemberResponse> stores) {
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package eatda.controller.story;
2+
3+
import java.util.List;
4+
5+
public record StoriesInMemberResponse(List<StoryInMemberResponse> stories) {
6+
}

src/main/java/eatda/controller/story/StoryController.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import lombok.RequiredArgsConstructor;
1313
import org.springframework.http.HttpStatus;
1414
import org.springframework.http.ResponseEntity;
15+
import org.springframework.validation.annotation.Validated;
1516
import org.springframework.web.bind.annotation.GetMapping;
1617
import org.springframework.web.bind.annotation.PathVariable;
1718
import org.springframework.web.bind.annotation.PostMapping;
@@ -20,6 +21,7 @@
2021
import org.springframework.web.bind.annotation.RestController;
2122
import org.springframework.web.multipart.MultipartFile;
2223

24+
@Validated
2325
@RestController
2426
@RequiredArgsConstructor
2527
public class StoryController {
@@ -54,6 +56,17 @@ public ResponseEntity<StoryResponse> getStory(@PathVariable long storyId) {
5456
.body(storyService.getStory(storyId));
5557
}
5658

59+
@GetMapping("/api/stories/member")
60+
public ResponseEntity<StoriesInMemberResponse> getStoriesByMemberId(
61+
@RequestParam(defaultValue = "0") @Min(0) int page,
62+
@RequestParam(defaultValue = "5") @Min(1) @Max(50) int size,
63+
LoginMember member
64+
) {
65+
StoriesInMemberResponse response = storyService.getPagedStoryByMemberId(member.id(), page, size);
66+
return ResponseEntity.status(HttpStatus.OK)
67+
.body(response);
68+
}
69+
5770
@GetMapping("/api/stories/kakao/{kakaoId}")
5871
public ResponseEntity<StoriesDetailResponse> getStoriesByKakaoId(
5972
@PathVariable String kakaoId,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package eatda.controller.story;
2+
3+
import eatda.domain.story.Story;
4+
5+
public record StoryInMemberResponse(
6+
Long id,
7+
String imageUrl,
8+
String storeName
9+
) {
10+
11+
public StoryInMemberResponse(Story story, String imageUrl) {
12+
this(story.getId(), imageUrl, story.getStoreName());
13+
}
14+
}

src/main/java/eatda/repository/cheer/CheerRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@ public interface CheerRepository extends JpaRepository<Cheer, Long> {
3434

3535
int countByMember(Member member);
3636

37+
int countByStore(Store store);
38+
3739
boolean existsByMemberAndStoreKakaoId(Member member, String storeKakaoId);
3840
}

src/main/java/eatda/repository/store/StoreRepository.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Optional;
99
import org.springframework.data.domain.Pageable;
1010
import org.springframework.data.jpa.repository.JpaRepository;
11+
import org.springframework.data.jpa.repository.Query;
1112

1213
public interface StoreRepository extends JpaRepository<Store, Long> {
1314

@@ -22,4 +23,12 @@ default Store getById(Long id) {
2223
List<Store> findAllByOrderByCreatedAtDesc(Pageable pageable);
2324

2425
List<Store> findAllByCategoryOrderByCreatedAtDesc(StoreCategory category, Pageable pageable);
26+
27+
@Query("""
28+
SELECT s FROM Store s
29+
JOIN Cheer c ON s.id = c.store.id
30+
WHERE c.member.id = :memberId
31+
ORDER BY c.createdAt DESC
32+
""")
33+
List<Store> findAllByCheeredMemberId(long memberId);
2534
}

src/main/java/eatda/repository/story/StoryRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
import eatda.domain.story.Story;
44
import org.springframework.data.domain.Page;
55
import org.springframework.data.domain.Pageable;
6+
import org.springframework.data.jpa.repository.EntityGraph;
67
import org.springframework.data.jpa.repository.JpaRepository;
78

89
public interface StoryRepository extends JpaRepository<Story, Long> {
910

1011
Page<Story> findAllByOrderByCreatedAtDesc(Pageable pageable);
1112

13+
Page<Story> findAllByMemberIdOrderByCreatedAtDesc(Long memberId, Pageable pageable);
14+
15+
@EntityGraph(attributePaths = {"member"})
1216
Page<Story> findAllByStoreKakaoIdOrderByCreatedAtDesc(String storeKakaoId, Pageable pageable);
1317
}

0 commit comments

Comments
 (0)