Skip to content

Commit dc6e669

Browse files
seungwookc97lkw9241seok6555MEOHINGerHerMo
authored
[chore] main 브랜치 병합 (#344)
* fix : bug (#324) * [feat] 카테고리 초기화 데이터 추가 * fix:auth/me추가 * fix:share 인증 해제 * refactor:h2 인증 해제 * [chore] 불필요한 Init Data 삭제 #334 (#335) * Revert "chore: initData용 이미지 추가" This reverts commit ef30eef. * . * chore: 수정사항 없음 * feat: MyHistoryPostItemDto에 상세 정보 필드 추가 및 매핑 로직 업데이트 * refactor: 게시글 좋아요 알림 메시지에 게시글 제목 추가 * chore: 수정사항 없음 * chore: 불필요한 Init Data 삭제 * fix : url bug (#337) * fix:Token update * [refactor] 내활동: 내가 좋아요한 게시글 목록 응답 DTO 필드 추가 #341 (#342) * Revert "chore: initData용 이미지 추가" This reverts commit ef30eef. * . * chore: 수정사항 없음 * feat: MyHistoryPostItemDto에 상세 정보 필드 추가 및 매핑 로직 업데이트 * refactor: 게시글 좋아요 알림 메시지에 게시글 제목 추가 * chore: 수정사항 없음 * chore: 수정사항 없음 * refactor: MyHistoryLikedPostItemDto에 상세 필드 및 로직 개선 추가 * test: MyHistoryControllerTest 내 getMyLikedPosts 테스트 필드 검증 추가 * chore: 브랜치 병합 --------- Co-authored-by: flatCheese <[email protected]> Co-authored-by: SeokGeunHo <[email protected]> Co-authored-by: SeokGeunHo <[email protected]> Co-authored-by: MEOHIN <[email protected]> Co-authored-by: GerHerMo <[email protected]> Co-authored-by: GerHerMo <[email protected]>
1 parent 2cbedce commit dc6e669

File tree

13 files changed

+117
-404
lines changed

13 files changed

+117
-404
lines changed

src/main/java/com/back/domain/chatbot/service/ChatbotService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ private List<String> analyzeCocktailRequest(String userQuestion) {
299299
.user(analysisPrompt)
300300
.options(OpenAiChatOptions.builder()
301301
.withTemperature(0.7)
302-
.withMaxTokens(150)
302+
.withMaxTokens(400)
303303
.build())
304304
.call()
305305
.content();
@@ -345,7 +345,7 @@ private String generateRecommendationMessage(String userQuestion, List<CocktailS
345345
.user(messagePrompt)
346346
.options(OpenAiChatOptions.builder()
347347
.withTemperature(0.8)
348-
.withMaxTokens(100)
348+
.withMaxTokens(150)
349349
.build())
350350
.call()
351351
.content();
@@ -610,11 +610,11 @@ private OpenAiChatOptions getOptionsForMessageType(InternalMessageType type) {
610610
.build();
611611
case RECOMMENDATION -> OpenAiChatOptions.builder()
612612
.withTemperature(0.9)
613-
.withMaxTokens(250)
613+
.withMaxTokens(400)
614614
.build();
615615
case QUESTION -> OpenAiChatOptions.builder()
616616
.withTemperature(0.7)
617-
.withMaxTokens(200)
617+
.withMaxTokens(maxTokens)
618618
.build();
619619
default -> OpenAiChatOptions.builder()
620620
.withTemperature(temperature)

src/main/java/com/back/domain/cocktail/comment/repository/CocktailCommentRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.back.domain.cocktail.comment.repository;
22

33
import com.back.domain.cocktail.comment.entity.CocktailComment;
4+
import com.back.domain.cocktail.entity.Cocktail;
45
import com.back.domain.post.comment.enums.CommentStatus;
56
import org.springframework.data.jpa.repository.JpaRepository;
67
import org.springframework.stereotype.Repository;
@@ -19,4 +20,6 @@ List<CocktailComment> findTop10ByCocktailIdAndStatusInAndIdLessThanOrderByIdDesc
1920
);
2021

2122
boolean existsByCocktailIdAndUserIdAndStatusNot(Long cocktailId, Long id, CommentStatus status);
23+
24+
Long countByCocktail(Cocktail cocktail);
2225
}

src/main/java/com/back/domain/cocktail/comment/service/CocktailCommentService.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import com.back.domain.cocktail.repository.CocktailRepository;
1010
import com.back.domain.post.comment.enums.CommentStatus;
1111
import com.back.domain.user.entity.User;
12-
import com.back.global.exception.UnauthorizedException;
1312
import com.back.global.rq.Rq;
1413
import lombok.RequiredArgsConstructor;
1514
import org.springframework.stereotype.Service;
@@ -56,31 +55,29 @@ public CocktailCommentResponseDto createCocktailComment(Long cocktailId, Cocktai
5655
// 칵테일 댓글 다건 조회 로직 (무한스크롤)
5756
@Transactional(readOnly = true)
5857
public List<CocktailCommentResponseDto> getCocktailComments(Long cocktailId, Long lastId) {
59-
User actor = rq.getActor(); // 서비스에서 호출 가능
58+
User actor = rq.getActor(); // 로그인 사용자 (null일 수 있음)
59+
Long currentUserId = (actor != null) ? actor.getId() : null;
6060

61-
if (actor == null) {
62-
throw new UnauthorizedException("로그인이 필요합니다.");
63-
}
64-
Long currentUserId = actor.getId();
6561
List<CocktailComment> comments;
6662

6763
if (lastId == null) {
68-
comments = cocktailCommentRepository
69-
.findTop10ByCocktailIdAndStatusInOrderByIdDesc(cocktailId, List.of(CommentStatus.PUBLIC, CommentStatus.PRIVATE)
70-
);
64+
comments = cocktailCommentRepository.findTop10ByCocktailIdAndStatusInOrderByIdDesc(
65+
cocktailId,
66+
List.of(CommentStatus.PUBLIC, CommentStatus.PRIVATE)
67+
);
7168
} else {
72-
comments = cocktailCommentRepository
73-
.findTop10ByCocktailIdAndStatusInAndIdLessThanOrderByIdDesc(cocktailId, List.of(CommentStatus.PUBLIC, CommentStatus.PRIVATE),
74-
lastId);
69+
comments = cocktailCommentRepository.findTop10ByCocktailIdAndStatusInAndIdLessThanOrderByIdDesc(
70+
cocktailId,
71+
List.of(CommentStatus.PUBLIC, CommentStatus.PRIVATE),
72+
lastId
73+
);
7574
}
7675

7776
return comments.stream()
78-
.filter(comment ->{
79-
if(comment.getStatus() == CommentStatus.PUBLIC) return true;
80-
if(comment.getStatus() == CommentStatus.PRIVATE) {
81-
return comment.getUser().getId().equals(currentUserId);
82-
}
83-
return false;
77+
.filter(comment -> {
78+
if (comment.getStatus() == CommentStatus.PUBLIC) return true;
79+
// PRIVATE 댓글은 로그인한 본인만
80+
return currentUserId != null && comment.getUser().getId().equals(currentUserId);
8481
})
8582
.map(CocktailCommentResponseDto::new)
8683
.toList();

src/main/java/com/back/domain/cocktail/controller/CocktailShareController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ResponseEntity<RsData<CocktailShareResponseDto>> getShareLink(@PathVariab
2626
Cocktail cocktail = cocktailService.getCocktailById(id);
2727

2828
CocktailShareResponseDto responseDto = new CocktailShareResponseDto(
29-
frontUrl + "/cocktails/" + cocktail.getId(),
29+
frontUrl + "/recipe/" + cocktail.getId(),
3030
cocktail.getCocktailNameKo(),
3131
cocktail.getCocktailImgUrl()
3232
);
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.back.domain.cocktail.dto;
22

3-
import com.back.domain.cocktail.entity.Cocktail;
4-
53
public record CocktailSummaryResponseDto(
64
Long cocktailId,
75
String cocktailName,
86
String cocktailNameKo,
97
String cocktailImgUrl,
10-
String alcoholStrength // Enum 대신 String
8+
String alcoholStrength,
9+
Long keepCount,
10+
Long commentCount
1111
) {
12-
public CocktailSummaryResponseDto(Cocktail cocktail) {
13-
this(
14-
cocktail.getId(),
15-
cocktail.getCocktailName(),
16-
cocktail.getCocktailNameKo(),
17-
cocktail.getCocktailImgUrl(),
18-
cocktail.getAlcoholStrength().getDescription() // 설명으로 변환
19-
);
12+
13+
//5개 필드만 사용하는 경우 (keepCount, commentCount 기본값 0)
14+
15+
public CocktailSummaryResponseDto(Long cocktailId,
16+
String cocktailName,
17+
String cocktailNameKo,
18+
String cocktailImgUrl,
19+
String alcoholStrength) {
20+
this(cocktailId, cocktailName, cocktailNameKo, cocktailImgUrl, alcoholStrength, 0L, 0L);
2021
}
2122
}

src/main/java/com/back/domain/cocktail/service/CocktailService.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.cocktail.service;
22

3+
import com.back.domain.cocktail.comment.repository.CocktailCommentRepository;
34
import com.back.domain.cocktail.dto.CocktailDetailResponseDto;
45
import com.back.domain.cocktail.dto.CocktailSearchRequestDto;
56
import com.back.domain.cocktail.dto.CocktailSearchResponseDto;
@@ -9,6 +10,8 @@
910
import com.back.domain.cocktail.enums.AlcoholStrength;
1011
import com.back.domain.cocktail.enums.CocktailType;
1112
import com.back.domain.cocktail.repository.CocktailRepository;
13+
import com.back.domain.mybar.enums.KeepStatus;
14+
import com.back.domain.mybar.repository.MyBarRepository;
1215
import lombok.RequiredArgsConstructor;
1316
import org.springframework.data.domain.Page;
1417
import org.springframework.data.domain.PageRequest;
@@ -27,6 +30,9 @@
2730
public class CocktailService {
2831

2932
private final CocktailRepository cocktailRepository;
33+
private final MyBarRepository myBarRepository;
34+
private final CocktailCommentRepository cocktailCommentRepository;
35+
3036

3137
private static final int DEFAULT_SIZE = 20;
3238

@@ -64,13 +70,23 @@ public List<CocktailSummaryResponseDto> getCocktails(Long lastValue, Long lastId
6470
}
6571

6672
return cocktails.stream()
67-
.map(c -> new CocktailSummaryResponseDto(
68-
c.getId(),
69-
c.getCocktailName(),
70-
c.getCocktailNameKo(),
71-
c.getCocktailImgUrl(),
72-
c.getAlcoholStrength().getDescription()
73-
))
73+
.map(c -> {
74+
// 해당 칵테일의 ACTIVE Keep 수
75+
Long keepCount = myBarRepository.countByCocktailAndStatus(c, KeepStatus.ACTIVE);
76+
77+
// 해당 칵테일 댓글 수
78+
Long commentCount = cocktailCommentRepository.countByCocktail(c);
79+
80+
return new CocktailSummaryResponseDto(
81+
c.getId(),
82+
c.getCocktailName(),
83+
c.getCocktailNameKo(),
84+
c.getCocktailImgUrl(),
85+
c.getAlcoholStrength().getDescription(),
86+
keepCount,
87+
commentCount
88+
);
89+
})
7490
.collect(Collectors.toList());
7591
}
7692

src/main/java/com/back/domain/mybar/repository/MyBarRepository.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.mybar.repository;
22

3+
import com.back.domain.cocktail.entity.Cocktail;
34
import com.back.domain.mybar.entity.MyBar;
45
import com.back.domain.mybar.enums.KeepStatus;
56
import org.springframework.data.domain.Page;
@@ -9,9 +10,9 @@
910
import org.springframework.data.jpa.repository.Query;
1011
import org.springframework.stereotype.Repository;
1112

12-
import java.util.Optional;
13-
import java.util.List;
1413
import java.time.LocalDateTime;
14+
import java.util.List;
15+
import java.util.Optional;
1516

1617
@Repository
1718
public interface MyBarRepository extends JpaRepository<MyBar, Long> {
@@ -56,4 +57,7 @@ public interface MyBarRepository extends JpaRepository<MyBar, Long> {
5657
and m.status = 'ACTIVE'
5758
""")
5859
int softDeleteByUserAndCocktail(Long userId, Long cocktailId);
60+
61+
// 특정 칵테일의 ACTIVE Keep 개수
62+
Long countByCocktailAndStatus(Cocktail cocktail, KeepStatus status);
5963
}

src/main/java/com/back/domain/myhistory/dto/MyHistoryLikedPostItemDto.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,54 @@
33
import com.back.domain.post.post.entity.Post;
44
import com.back.domain.post.post.entity.PostImage;
55
import com.back.domain.post.post.entity.PostLike;
6-
import java.time.LocalDateTime;
7-
import java.util.List;
6+
import com.back.domain.post.post.enums.PostStatus;
87
import lombok.Builder;
98
import lombok.Getter;
109

10+
import java.time.LocalDateTime;
11+
import java.util.List;
12+
1113
@Getter
1214
@Builder
1315
public class MyHistoryLikedPostItemDto {
1416
private Long id;
17+
private Long postId;
18+
private String categoryName;
19+
private String userNickName;
1520
private String title;
21+
private String content;
1622
private List<String> imageUrls;
17-
private LocalDateTime likedAt;
23+
private LocalDateTime createdAt;
24+
private LocalDateTime updatedAt;
25+
private PostStatus status;
1826
private Integer likeCount;
1927
private Integer commentCount;
28+
private Integer viewCount;
29+
private LocalDateTime likedAt;
2030

2131
public static MyHistoryLikedPostItemDto from(PostLike pl) {
2232
Post p = pl.getPost();
33+
List<String> imageUrls = p.getImages() == null
34+
? List.of()
35+
: p.getImages().stream()
36+
.map(PostImage::getUrl)
37+
.toList();
38+
2339
return MyHistoryLikedPostItemDto.builder()
24-
.id(p.getId())
40+
.id(pl.getId())
41+
.postId(p.getId())
42+
.categoryName(p.getCategory() != null ? p.getCategory().getName() : null)
43+
.userNickName(p.getUser() != null ? p.getUser().getNickname() : null)
2544
.title(p.getTitle())
26-
.imageUrls(p.getImages().stream()
27-
.map(PostImage::getUrl)
28-
.toList())
29-
.likedAt(pl.getCreatedAt())
45+
.content(p.getContent())
46+
.imageUrls(imageUrls)
47+
.createdAt(p.getCreatedAt())
48+
.updatedAt(p.getUpdatedAt())
49+
.status(p.getStatus())
3050
.likeCount(p.getLikeCount())
3151
.commentCount(p.getCommentCount())
52+
.viewCount(p.getViewCount())
53+
.likedAt(pl.getCreatedAt())
3254
.build();
3355
}
3456
}

0 commit comments

Comments
 (0)