Skip to content

Commit 4a53698

Browse files
committed
refactor: User - Favorite Artist/Portfolio 연관관계 수정
1 parent 414804a commit 4a53698

13 files changed

+38
-32
lines changed

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/converter/FavoriteConverter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class FavoriteConverter {
1313
public static FavoriteArtist toFavoriteArtist(Artist artist, Model model){
1414
return FavoriteArtist.builder()
1515
.model(model)
16-
.artistId(artist.getUserId())
16+
.artist(artist)
1717
.build();
1818
}
1919

@@ -31,7 +31,7 @@ public static FavoriteArtist toFavoriteArtist(Artist artist, Model model){
3131
// favoritePortfolio
3232
public static FavoritePortfolio toFavoritePortfolio(Model model, Portfolio portfolio){
3333
return FavoritePortfolio.builder()
34-
.model(model.getUser())
34+
.model(model)
3535
.portfolio(portfolio)
3636
.build();
3737
}

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/converter/ReviewConverter.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public static ReviewResponse.ReviewDto toReviewDto(Review review){
3030

3131
return ReviewResponse.ReviewDto.builder()
3232
.reviewId(review.getReviewId())
33-
.modelNickName(review.getModel().getNickname())
34-
.modelProfileImg(review.getModel().getProfileImg())
33+
.modelNickName(review.getModel().getUser().getNickname())
34+
.modelProfileImg(review.getModel().getUser().getProfileImg())
3535
.star(review.getStar())
3636
.comment(review.getComment())
3737
.createdAt(review.getCreatedAt())
@@ -46,7 +46,7 @@ public static ReviewResponse.ReviewDetailsDto toReviewDetailDto(Review review){
4646
.toList();
4747

4848
return ReviewResponse.ReviewDetailsDto.builder()
49-
.artistNickName(review.getPortfolio().getArtist().getNickname())
49+
.artistNickName(review.getPortfolio().getArtist().getUser().getNickname())
5050
.makeupName(review.getPortfolio().getMakeupName())
5151
.star(review.getStar())
5252
.comment(review.getComment())
@@ -57,7 +57,7 @@ public static ReviewResponse.ReviewDetailsDto toReviewDetailDto(Review review){
5757
public static ReviewResponse.MyReviewDto toMyReviewDto(Review review){
5858
return ReviewResponse.MyReviewDto.builder()
5959
.reviewId(review.getReviewId())
60-
.artistNickName(review.getPortfolio().getArtist().getNickname())
60+
.artistNickName(review.getPortfolio().getArtist().getUser().getNickname())
6161
.makeupName(review.getPortfolio().getMakeupName())
6262
.portfolioImg(review.getPortfolio().getPortfolioImgList().get(0).getSrc()) //첫 번째 포트폴리오 이미지
6363
.location(review.getPortfolio().getArtist().getShopLocation())
@@ -69,7 +69,7 @@ public static ReviewResponse.ReviewAvailableListDto toReviewAvailableListDto(Res
6969
return ReviewResponse.ReviewAvailableListDto.builder()
7070
.reservationId(reservation.getReservationId())
7171
.portfolioId(reservation.getReservationId())
72-
.artistNickName(reservation.getPortfolio().getArtist().getNickname())
72+
.artistNickName(reservation.getPortfolio().getArtist().getUser().getNickname())
7373
.makeupName(reservation.getPortfolio().getMakeupName())
7474
.portfolioImg(reservation.getPortfolio().getPortfolioImgList().get(0).getSrc())
7575
.reservationYear(reservation.getYear())

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/entity/FavoriteArtist.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class FavoriteArtist extends BaseEntity {
2323
@JoinColumn(name="user_id", nullable = false)
2424
private Model model;
2525

26-
private Long artistId;
26+
@OneToOne
27+
private Artist artist;
2728

2829
}

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/entity/FavoritePortfolio.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class FavoritePortfolio extends BaseEntity {
2323

2424
@ManyToOne
2525
@JoinColumn(name="user_id", nullable = false)
26-
private User model;
26+
private Model model;
2727

2828
@ManyToOne
2929
@JoinColumn(name="portfolio_id", nullable = false)

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/entity/Review.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class Review extends BaseEntity {
2424

2525
@ManyToOne
2626
@JoinColumn(name="user_id", nullable = false)
27-
private User model;
27+
private Model model;
2828

2929
@OneToMany(cascade = CascadeType.ALL, mappedBy = "review")
3030
private List<ReviewImg> reviewImgList;

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/repository/ArtistRepository.java

-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@
88

99
@Repository
1010
public interface ArtistRepository extends JpaRepository<Artist, Long> {
11-
Optional<Artist> findByEmail(String email);
1211

1312
}

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/repository/FavoriteArtistRepository.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.meme.service.domain.repository;
22

3+
import org.meme.service.domain.entity.Artist;
34
import org.meme.service.domain.entity.FavoriteArtist;
45
import org.meme.service.domain.entity.Model;
56
import org.springframework.data.jpa.repository.JpaRepository;
@@ -11,7 +12,7 @@
1112
@Repository
1213
public interface FavoriteArtistRepository extends JpaRepository<FavoriteArtist, Long> {
1314
List<FavoriteArtist> findByModel(Model model);
14-
boolean existsByModelAndArtistId(Model model, Long userId);
15-
Optional<FavoriteArtist> findByModelAndArtistId(Model model, Long userId);
16-
Long countByArtistId(Long artistId);
15+
boolean existsByModelAndArtist(Model model, Artist artist);
16+
Optional<FavoriteArtist> findByModelAndArtist(Model model, Artist artist);
17+
Long countByArtist(Artist artist);
1718
}

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/repository/ModelRepository.java

-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@
99
@Repository
1010
public interface ModelRepository extends JpaRepository<Model, Long> {
1111

12-
Optional<Model> findByEmail(String email);
1312
}

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/service/ArtistService.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import org.springframework.stereotype.Service;
1313
import org.meme.service.domain.entity.Artist;
1414
import org.meme.service.common.exception.GeneralException;
15+
import org.springframework.transaction.annotation.Transactional;
1516

1617
import java.util.Optional;
1718

1819
@Service
1920
@RequiredArgsConstructor
21+
@Transactional(readOnly = true)
2022
public class ArtistService {
2123
private final ArtistRepository artistRepository;
2224
private final ModelRepository modelRepository;
@@ -29,7 +31,7 @@ public ArtistResponse.ArtistDto getArtistProfile(Long userId, Long artistId){
2931
Artist artist = findArtistById(artistId);
3032

3133
boolean isFavorite = false;
32-
Optional<FavoriteArtist> favoriteArtist = favoriteArtistRepository.findByModelAndArtistId(model, artistId);
34+
Optional<FavoriteArtist> favoriteArtist = favoriteArtistRepository.findByModelAndArtist(model, artist);
3335
if(favoriteArtist.isPresent())
3436
isFavorite = true;
3537

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/service/FavoriteService.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.meme.service.domain.service;
22

3-
import jakarta.transaction.Transactional;
43
import lombok.RequiredArgsConstructor;
54
import org.meme.service.common.exception.GeneralException;
65
import org.meme.service.common.status.ErrorStatus;
@@ -16,12 +15,14 @@
1615
import org.springframework.data.domain.PageRequest;
1716
import org.springframework.data.domain.Pageable;
1817
import org.springframework.stereotype.Service;
18+
import org.springframework.transaction.annotation.Transactional;
1919

2020
import java.util.List;
2121
import java.util.stream.Collectors;
2222

2323
@Service
2424
@RequiredArgsConstructor
25+
@Transactional(readOnly = true)
2526
public class FavoriteService {
2627
private final ModelRepository modelRepository;
2728
private final ArtistRepository artistRepository;
@@ -42,9 +43,9 @@ public FavoriteResponse.FavoriteArtistPageDto getFavoriteArtist(Long modelId, in
4243
//관심 아티스트 리스트
4344
List<ArtistResponse.ArtistSimpleDto> content = favoriteArtistPage.getContent().stream()
4445
.map(favoriteArtist -> {
45-
Artist artist = findArtistById(favoriteArtist.getArtistId());
46+
Artist artist = favoriteArtist.getArtist();
4647
//해당 아티스트를 관심 아티스트로 설정한 모델 수 카운트
47-
Long modelCount = favoriteArtistRepository.countByArtistId(artist.getUserId());
48+
Long modelCount = favoriteArtistRepository.countByArtist(artist);
4849
return ArtistConverter.toArtistSimpleDto(artist, modelCount);
4950
})
5051
.collect(Collectors.toList());
@@ -71,7 +72,7 @@ public void addFavoriteArtist(FavoriteRequest.FavoriteArtistDto favoriteArtistDt
7172
Artist artist = findArtistById(favoriteArtistDto.getArtistId());
7273

7374
//이미 관심 아티스트가 존재하는 경우
74-
if (favoriteArtistRepository.existsByModelAndArtistId(model, artist.getUserId())) {
75+
if (favoriteArtistRepository.existsByModelAndArtist(model, artist)) {
7576
throw new GeneralException(ErrorStatus.ALREADY_EXIST_FAVORITE_ARTIST);
7677
}
7778

@@ -102,7 +103,7 @@ public void deleteFavoriteArtist(FavoriteRequest.FavoriteArtistDto favoriteArtis
102103
Model model = findModelById(favoriteArtistDto.getModelId());
103104
Artist artist = findArtistById(favoriteArtistDto.getArtistId());
104105

105-
FavoriteArtist favoriteArtist = findFavoriteArtistByModelAndArtistId(model, artist.getUserId());
106+
FavoriteArtist favoriteArtist = findFavoriteArtistByModelAndArtist(model, artist);
106107
favoriteArtistRepository.delete(favoriteArtist);
107108
}
108109

@@ -136,8 +137,8 @@ private FavoritePortfolio findFavoritePortfolioByModelAndPortfolio(Model model,
136137
.orElseThrow(() -> new GeneralException(ErrorStatus.NOT_EXIST_FAVORITE_PORTFOLIO));
137138
}
138139

139-
private FavoriteArtist findFavoriteArtistByModelAndArtistId(Model model, Long artistId){
140-
return favoriteArtistRepository.findByModelAndArtistId(model, artistId)
140+
private FavoriteArtist findFavoriteArtistByModelAndArtist(Model model, Artist artist){
141+
return favoriteArtistRepository.findByModelAndArtist(model, artist)
141142
.orElseThrow(() -> new GeneralException(ErrorStatus.NOT_EXIST_FAVORITE_ARTIST));
142143
}
143144

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/service/MypageService.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.meme.service.domain.service;
22

3-
import jakarta.transaction.Transactional;
43
import lombok.RequiredArgsConstructor;
54
import org.meme.service.common.exception.GeneralException;
65
import org.meme.service.common.status.ErrorStatus;
@@ -16,11 +15,13 @@
1615
import org.meme.service.domain.dto.request.MypageRequest;
1716
import org.meme.service.domain.dto.response.MypageResponse;
1817
import org.springframework.stereotype.Service;
18+
import org.springframework.transaction.annotation.Transactional;
1919

2020
import java.util.List;
2121

2222
@Service
2323
@RequiredArgsConstructor
24+
@Transactional(readOnly = true)
2425
public class MypageService {
2526
private final ModelRepository modelRepository;
2627
private final ArtistRepository artistRepository;

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/service/PortfolioService.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.meme.service.domain.service;
22

3-
import jakarta.transaction.Transactional;
43
import lombok.RequiredArgsConstructor;
54
import org.meme.service.domain.dto.request.PortfolioRequest;
65
import org.meme.service.domain.dto.response.PortfolioResponse;
@@ -15,6 +14,7 @@
1514
import org.meme.service.domain.repository.PortfolioRepository;
1615
import org.meme.service.common.status.ErrorStatus;
1716
import org.meme.service.common.exception.GeneralException;
17+
import org.springframework.transaction.annotation.Transactional;
1818

1919

2020
import java.util.ArrayList;
@@ -23,6 +23,7 @@
2323

2424
@Service
2525
@RequiredArgsConstructor
26+
@Transactional(readOnly = true)
2627
public class PortfolioService {
2728
private final ArtistRepository artistRepository;
2829
private final PortfolioRepository portfolioRepository;

Diff for: MEME-SERVICE/src/main/java/org/meme/service/domain/service/ReviewService.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.meme.service.domain.service;
22

3-
import jakarta.transaction.Transactional;
43
import lombok.RequiredArgsConstructor;
54
import org.meme.service.common.exception.GeneralException;
65
import org.meme.service.domain.entity.*;
@@ -16,13 +15,16 @@
1615
import org.springframework.data.domain.Pageable;
1716
import org.springframework.stereotype.Service;
1817
import org.meme.service.common.status.ErrorStatus;
18+
import org.springframework.transaction.annotation.Transactional;
1919

2020
import java.util.ArrayList;
2121
import java.util.List;
22+
import java.util.Objects;
2223
import java.util.Optional;
2324

2425
@Service
2526
@RequiredArgsConstructor
27+
@Transactional(readOnly = true)
2628
public class ReviewService {
2729
private final ModelRepository modelRepository;
2830
private final ReviewRepository reviewRepository;
@@ -110,15 +112,15 @@ public ReviewResponse.ReviewDetailsDto updateReview(ReviewRequest.UpdateReviewDt
110112
Model model = findModelById(updateReviewDto.getModelId());
111113
Review review = findReviewById(updateReviewDto.getReviewId());
112114

113-
if (!review.getModel().equals(model))
115+
if (!review.getModel().getUserId().equals(model.getUserId()))
114116
throw new GeneralException(ErrorStatus.INVALID_MODEL_FOR_REVIEW);
115117

116118
// 리뷰 이미지 수정
117119
if (!updateReviewDto.getReviewImgSrcList().isEmpty())
118120
updateReviewImgList(review, updateReviewDto.getReviewImgSrcList());
119121

120122
// 리뷰 수정
121-
updateReviewEntity(review, updateReviewDto);
123+
updateReview(review, updateReviewDto);
122124
return ReviewConverter.toReviewDetailDto(review);
123125
}
124126

@@ -160,18 +162,17 @@ public void updateReviewImgList(Review review, List<String> reviewImgSrcList){
160162
public void deleteReview(ReviewRequest.DeleteReviewDto reviewDto){
161163
Model model = findModelById(reviewDto.getModelId());
162164
Review review = findReviewById(reviewDto.getReviewId());
163-
if(!review.getModel().equals(model))
165+
166+
if(!Objects.equals(review.getModel().getUserId(), model.getUserId()))
164167
throw new GeneralException(ErrorStatus.INVALID_MODEL_FOR_REVIEW);
165168

166169
reviewRepository.delete(review);
167170
}
168171

169172
private void validateReservationStatus(Reservation reservation) {
170-
// 이미 리뷰 작성 완료
171173
if (reservation.isReviewed())
172174
throw new GeneralException(ErrorStatus.ALREADY_REVIEWED);
173175

174-
// 예약 미완료
175176
if (!reservation.isCompleted())
176177
throw new GeneralException(ErrorStatus.INVALID_REVIEW_REQUEST);
177178
}
@@ -207,7 +208,7 @@ private Page<Review> getPage(int page, List<Review> list){
207208
pageable, list.size());
208209
}
209210

210-
private void updateReviewEntity(Review review, ReviewRequest.UpdateReviewDto updateReviewDto){
211+
private void updateReview(Review review, ReviewRequest.UpdateReviewDto updateReviewDto){
211212
if(updateReviewDto.getStar() > 0)
212213
review.setStar(updateReviewDto.getStar());
213214
if(updateReviewDto.getComment() != null)

0 commit comments

Comments
 (0)