Skip to content

Commit af27b21

Browse files
authored
Merge pull request #130 from UMCWegg/feature/#15
Feature/#15
2 parents a1ec545 + ae72c9c commit af27b21

File tree

9 files changed

+27
-174
lines changed

9 files changed

+27
-174
lines changed

src/main/java/umc/wegg/controller/MapRestController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,10 @@ public ApiResponse<MapResponseDTO.UnbookmarkDTO> unbookmarkAddress(
8282
@GetMapping("/details")
8383
@Operation(summary = "장소 상세 조회", description = "placeName을 기준으로 장소 상세 정보를 조회하는 API")
8484
public ApiResponse<MapResponseDTO.DetailListDTO> getPlaceDetails(
85-
@Valid @ModelAttribute MapRequestDTO.SearchDetailDTO request) {
85+
@Valid @ModelAttribute MapRequestDTO.SearchDetailDTO request, @AuthenticationPrincipal AuthenticatedUser authenticatedUser) {
8686

87-
MapResponseDTO.DetailListDTO response = mapCommandService.getPlaceDetails(request);
87+
Long userId = authenticatedUser.getUserId();
88+
MapResponseDTO.DetailListDTO response = mapCommandService.getPlaceDetails(userId, request);
8889
return ApiResponse.onSuccess(response);
8990
}
9091

src/main/java/umc/wegg/converter/PostConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public static PostResponseDTO.PostDetailResponseDTO toPostDetailResponseDTO(
6464
.map(comment -> PostResponseDTO.PostDetailResponseDTO.CommentDTO.builder()
6565
.commentId(comment.getId())
6666
.content(comment.getComment()) // Comment 엔티티의 content 필드
67-
.username(comment.getUser() != null ? comment.getUser().getName() : "Unknown") // User의 닉네임
67+
.accountId(comment.getUser() != null ? comment.getUser().getAccountId() : "Unknown") // User의 닉네임
6868
.commenterProfileUrl(comment.getUser() != null ? comment.getUser().getProfileImage() : null) // User의 프로필 URL
6969
.createdAt(comment.getCreatedAt()) // 댓글 생성 시간
7070
.build())

src/main/java/umc/wegg/dto/MapResponseDTO.java

Lines changed: 3 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -8,90 +8,6 @@
88

99
public class MapResponseDTO {
1010

11-
// @Builder
12-
// @Getter
13-
// @NoArgsConstructor
14-
// @AllArgsConstructor
15-
// public static class ReverseGeocodingDTO {
16-
// @JsonProperty("documents")
17-
// private List<AddressDTO> reverseGeocodingist; // 검색 결과 리스트
18-
//
19-
// @Getter
20-
// @Setter
21-
// @NoArgsConstructor
22-
// public static class AddressDTO {
23-
// @JsonProperty("road_address")
24-
// private RoadAddress roadAddress; // 도로명 주소
25-
//
26-
// @JsonProperty("address")
27-
// private Address address; // 지번 주소
28-
// }
29-
//
30-
// @Getter
31-
// @Setter
32-
// @NoArgsConstructor
33-
// public static class RoadAddress {
34-
// @JsonProperty("address_name")
35-
// private String addressName;
36-
//
37-
// @JsonProperty("region_1depth_name")
38-
// private String region1DepthName;
39-
//
40-
// @JsonProperty("region_2depth_name")
41-
// private String region2DepthName;
42-
//
43-
// @JsonProperty("region_3depth_name")
44-
// private String region3DepthName;
45-
//
46-
// @JsonProperty("road_name")
47-
// private String roadName;
48-
//
49-
// @JsonProperty("underground_yn")
50-
// private String undergroundYn;
51-
//
52-
// @JsonProperty("main_building_no")
53-
// private String mainBuildingNo;
54-
//
55-
// @JsonProperty("sub_building_no")
56-
// private String subBuildingNo;
57-
//
58-
// @JsonProperty("building_name")
59-
// private String buildingName;
60-
//
61-
// @JsonProperty("zone_no")
62-
// private String zoneNo; // 우편번호
63-
// }
64-
//
65-
// @Getter
66-
// @Setter
67-
// @NoArgsConstructor
68-
// public static class Address {
69-
// @JsonProperty("address_name")
70-
// private String addressName;
71-
//
72-
// @JsonProperty("region_1depth_name")
73-
// private String region1DepthName;
74-
//
75-
// @JsonProperty("region_2depth_name")
76-
// private String region2DepthName;
77-
//
78-
// @JsonProperty("region_3depth_name")
79-
// private String region3DepthName;
80-
//
81-
// @JsonProperty("mountain_yn")
82-
// private String mountainYn;
83-
//
84-
// @JsonProperty("main_address_no")
85-
// private String mainAddressNo;
86-
//
87-
// @JsonProperty("sub_address_no")
88-
// private String subAddressNo;
89-
//
90-
// @JsonProperty("zip_code")
91-
// private String zipCode; // 우편번호
92-
// }
93-
// }
94-
9511
@Builder
9612
@Getter
9713
@NoArgsConstructor
@@ -209,6 +125,9 @@ public static class DetailListDTO {
209125
public static class DetailDTO {
210126
private Long addressId;
211127
private String placeName;
128+
private Float latitude;
129+
private Float longitude;
130+
private Boolean savedStatus;
212131
private Long authPeople;
213132
private Long authCount;
214133
private Long saveCount;

src/main/java/umc/wegg/dto/PostResponseDTO.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static class CommentResponseDTO {
5151
private Long commentId; // 댓글 ID
5252
private Long parentId; // 부모댓글 ID
5353
private Long userId; // 댓글 작성자 ID
54-
private String username; // 댓글 작성자 닉네임
54+
private String accountId; // 댓글 작성자 accountId
5555
private String content; // 댓글 내용
5656
private String commenterProfileUrl; // 댓글 작성자 프로필 이미지 URL
5757
private LocalDateTime createdAt; // 댓글 작성 시간
@@ -118,7 +118,7 @@ public static class CommentDTO {
118118
private Long commentId; // 댓글 ID
119119
private Long parentId; // 부모댓글 ID
120120
private Long userId; // 댓글 작성자 ID
121-
private String username; // 댓글 작성자 닉네임
121+
private String accountId; // 댓글 작성자 accountId
122122
private String content; // 댓글 내용
123123
private String commenterProfileUrl; // 댓글 작성자 프로필 이미지
124124
private LocalDateTime createdAt; // 댓글 작성 시간
@@ -138,15 +138,6 @@ public static class TemplateDTO {
138138
// 사용자에게 전달될 때는 이 ENUM을 기반으로 이름이 설정됩니다.
139139
}
140140

141-
// @Getter
142-
// @Builder
143-
// @NoArgsConstructor
144-
// @AllArgsConstructor
145-
// public static class BrowsePostsResponse {
146-
// private AccountVisibility accountVisibility; // 계정 공개 여부
147-
// private List<List<PostResponseDTO.PostPreviewResponseDTO>> posts; // 기존 게시물 리스트
148-
// }
149-
150141
@Getter
151142
@Builder
152143
@NoArgsConstructor

src/main/java/umc/wegg/repository/MyAddressRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public interface MyAddressRepository extends JpaRepository<MyAddress, Long> {
99
Long countByAddressId(Long addressId);
1010

1111
Optional<MyAddress> findByUserIdAndAddressId(Long userId, Long addressId);
12+
13+
Boolean existsByUserIdAndAddressId(Long userId, Long id);
1214
}

src/main/java/umc/wegg/service/MapService/MapCommandService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ public interface MapCommandService {
1111
MapResponseDTO.BookmarkDTO bookmarkAddress(AuthenticatedUser authenticatedUser, Long addressId);
1212
MapResponseDTO.UnbookmarkDTO unbookmarkAddress(AuthenticatedUser authenticatedUser, Long addressId);
1313
MapResponseDTO.BookmarkPlaceListDTO getUserBookmarks(AuthenticatedUser authenticatedUser, Integer page, Integer size);
14-
MapResponseDTO.DetailListDTO getPlaceDetails(MapRequestDTO.SearchDetailDTO request);
14+
MapResponseDTO.DetailListDTO getPlaceDetails(Long userId, MapRequestDTO.SearchDetailDTO request);
1515
}

src/main/java/umc/wegg/service/MapService/MapCommandServiceImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ public MapResponseDTO.UnbookmarkDTO unbookmarkAddress(AuthenticatedUser authenti
237237
}
238238

239239
@Override
240-
public MapResponseDTO.DetailListDTO getPlaceDetails(MapRequestDTO.SearchDetailDTO request) {
240+
public MapResponseDTO.DetailListDTO getPlaceDetails(Long userId, MapRequestDTO.SearchDetailDTO request) {
241241
// placeName을 기준으로 Address 조회
242242
Address address = addressRepository.findByPlaceName(request.getPlaceName())
243243
.orElseThrow(() -> new NoSuchElementException("해당 장소를 찾을 수 없습니다."));
@@ -269,10 +269,15 @@ public MapResponseDTO.DetailListDTO getPlaceDetails(MapRequestDTO.SearchDetailDT
269269
// 저장된 횟수 계산 (my_address 테이블에서 address_id로 저장된 레코드 수 조회)
270270
Long saveCount = myAddressRepository.countByAddressId(address.getId());
271271

272+
Boolean savedStatus = myAddressRepository.existsByUserIdAndAddressId(userId, address.getId());
273+
272274
// 응답 DTO 생성
273275
MapResponseDTO.DetailListDTO.DetailDTO detailDTO = new MapResponseDTO.DetailListDTO.DetailDTO(
274276
address.getId(),
275277
address.getPlaceName(),
278+
address.getLatitude(),
279+
address.getLongitude(),
280+
savedStatus,
276281
authPeople, // 중복 없는 사용자 수
277282
authCount, // 인증 게시물 수
278283
saveCount, // 저장된 횟수

src/main/java/umc/wegg/service/PlanService/PlanQueryServiceImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,13 @@ public PlanResponseDTO.LocationVerificationResponseDTO isUserInPlan(Long planId,
5353
if (isWithinBoundary && now.isAfter(startTime.minusMinutes(5)) && now.isBefore(endTime)) {
5454
message = "장소 인증에 성공했습니다!";
5555
plan.setStatus(PlanStatus.STARTED);
56-
} else {
56+
} else if (!now.isAfter(startTime.minusMinutes(5))) {
57+
message = "장소 인증 시간이 아닙니다!";
58+
} else if (!now.isBefore(endTime)) {
59+
message = "장소 인증을 늦었습니다!";
60+
failPlan(plan);
61+
}
62+
else {
5763
message = "장소 인증에 실패했습니다!";
5864
failPlan(plan);
5965
}

src/main/java/umc/wegg/service/PostService/PostCommandServiceImpl.java

Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -262,77 +262,6 @@ public void deleteEmoji(Long userId,Long postId, String emojiType) {
262262
emojiRepository.delete(emoji);
263263
}
264264

265-
// @Override
266-
// public List<List<PostResponseDTO.PostPreviewResponseDTO>> browsePosts(int page, int size) {
267-
// // 1. 현재 사용자 조회
268-
// Long userId = 1L; // 로그인 구현 시 변경
269-
// User currentUser = userRepository.findById(userId)
270-
// .orElseThrow(() -> new IllegalArgumentException("User not found with id: " + userId));
271-
//
272-
// // 2. 페이징된 게시물 조회
273-
// Pageable pageable = PageRequest.of(page, size);
274-
// Page<Post> postPage = postRepository.findAll(pageable);
275-
// List<Post> allPosts = postPage.getContent();
276-
//
277-
// // 3. 현재 사용자가 팔로우하는 사용자 목록 조회
278-
// Set<Long> followingUserIds = currentUser.getFollowingList().stream()
279-
// .map(follow -> follow.getFollowee().getId())
280-
// .collect(Collectors.toSet());
281-
//
282-
// // 4. 게시물 정렬
283-
// List<Post> followingPosts = new ArrayList<>();
284-
// List<Post> nonFollowingPosts = new ArrayList<>();
285-
//
286-
// for (Post post : allPosts) {
287-
// if (post.getPlan() == null) continue; // Plan이 없는 게시물 제외
288-
// User postUser = post.getPlan().getUser();
289-
// if (followingUserIds.contains(postUser.getId())) {
290-
// followingPosts.add(post);
291-
// } else {
292-
// nonFollowingPosts.add(post);
293-
// }
294-
// }
295-
//
296-
// Comparator<Post> postComparator = (post1, post2) -> {
297-
// User user1 = post1.getPlan().getUser();
298-
// User user2 = post2.getPlan().getUser();
299-
//
300-
// boolean sameJob1 = user1.getJob() != null && user1.getJob().equals(currentUser.getJob());
301-
// boolean sameJob2 = user2.getJob() != null && user2.getJob().equals(currentUser.getJob());
302-
//
303-
// int emojiCount1 = emojiRepository.countByPost(post1);
304-
// int emojiCount2 = emojiRepository.countByPost(post2);
305-
//
306-
// if (sameJob1 && !sameJob2) return -1;
307-
// if (!sameJob1 && sameJob2) return 1;
308-
// return Integer.compare(emojiCount2, emojiCount1);
309-
// };
310-
//
311-
// // 5. 정렬 수행
312-
// List<Post> sortedFollowingPosts = followingPosts.stream().sorted(postComparator).collect(Collectors.toList());
313-
// List<Post> sortedNonFollowingPosts = nonFollowingPosts.stream().sorted(postComparator).collect(Collectors.toList());
314-
//
315-
// // 6. DTO 변환
316-
// List<PostResponseDTO.PostPreviewResponseDTO> followingPostDTOs = sortedFollowingPosts.stream()
317-
// .map(post -> convertToDTO(post)).collect(Collectors.toList());
318-
//
319-
// List<PostResponseDTO.PostPreviewResponseDTO> nonFollowingPostDTOs = sortedNonFollowingPosts.stream()
320-
// .map(post -> convertToDTO(post)).collect(Collectors.toList());
321-
//
322-
// // 7. 결과 반환 (팔로잉 게시물과 비팔로잉 게시물을 리스트로 구분)
323-
// return Arrays.asList(followingPostDTOs, nonFollowingPostDTOs);
324-
// }
325-
//
326-
// private PostResponseDTO.PostPreviewResponseDTO convertToDTO(Post post) {
327-
// User postUser = post.getPlan().getUser();
328-
// return PostResponseDTO.PostPreviewResponseDTO.builder()
329-
// .postId(post.getId())
330-
// .profileImageUrl(postUser.getProfileImage())
331-
// .accountId(postUser.getAccountId())
332-
// .postImageUrl(post.getImageUrl())
333-
// .createdAt(post.getCreatedAt())
334-
// .build();
335-
// }
336265
@Override
337266
public List<List<PostResponseDTO.PostPreviewResponseDTO>> browsePosts(Long userId,int page, int size) {
338267
// 1. 현재 사용자 조회
@@ -437,7 +366,7 @@ public PostResponseDTO.PostDetailResponseDTO viewPostDetails(Long userId,Long po
437366
.commentId(comment.getId()) // 댓글 ID
438367
.parentId(comment.getParentId()) // 부모댓글 ID
439368
.userId(comment.getUser().getId()) // 댓글 작성자 ID
440-
.username(comment.getUser().getName()) // 댓글 작성자 닉네임
369+
.accountId(comment.getUser().getAccountId()) // 댓글 작성자 닉네임
441370
.content(comment.getComment()) // 댓글 내용
442371
.commenterProfileUrl(comment.getUser().getProfileImage()) // 댓글 작성자 프로필 이미지
443372
.createdAt(comment.getCreatedAt()) // 댓글 작성 시간
@@ -501,7 +430,7 @@ public List<PostResponseDTO.PostDetailResponseDTO.CommentDTO> getComments(Long u
501430
.commentId(comment.getId()) // 댓글 ID
502431
.parentId(comment.getParentId()) // 부모댓글 ID
503432
.userId(comment.getUser().getId()) // 작성자 ID
504-
.username(comment.getUser().getName()) // 작성자 닉네임
433+
.accountId(comment.getUser().getAccountId()) // 작성자 닉네임
505434
.content(comment.getComment()) // 댓글 내용
506435
.commenterProfileUrl(comment.getUser().getProfileImage()) // 작성자 프로필 이미지
507436
.createdAt(comment.getCreatedAt()) // 작성 시간

0 commit comments

Comments
 (0)