Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -158,23 +158,11 @@ public SocialLoginResponse loginWithSocial(String provider, String idToken) {
? socialUser.getEmail()
: provider.toLowerCase() + socialUser.getProviderId() + "@example.com";

// Optional<User> optionalUser = userRepository.findByEmail(email);

User user = userRepository.findByEmail(email).
orElseGet(()->createNewUser(socialUser, email, provider));


boolean isFirstLogin= !user.isOnboardingCompleted();

// if (optionalUser.isPresent()) {
// user = optionalUser.get();
// isFirstLogin = false; // 기존 사용자
// } else {
// user = createNewUser(socialUser, email, provider);
// isFirstLogin = true; // 신규 생성
// }
// log.info("user:{}",user);

JwtToken jwt = jwtGenerator.generateToken(user, user.getRole());

refreshTokenRedisRepository.save(
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/org/atdev/artrip/domain/exhibit/data/Exhibit.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,20 @@ public class Exhibit {
@Column(name = "ticket_url")
private String ticketUrl;

@Builder.Default
@Column(name = "favorite_count")
private long favoriteCount = 0;

public void increaseFavoriteCount() {
this.favoriteCount++;
}

public void decreaseFavoriteCount() {
if (this.favoriteCount > 0) {
this.favoriteCount--;
}
}

@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.atdev.artrip.domain.exhibit.data.QExhibit;
import org.atdev.artrip.domain.exhibit.web.dto.request.ExhibitFilterRequest;
import org.atdev.artrip.domain.exhibitHall.data.QExhibitHall;
import org.atdev.artrip.domain.favortie.data.QFavoriteExhibit;
import org.atdev.artrip.domain.home.response.HomeListResponse;
import org.atdev.artrip.domain.home.web.dto.request.RandomExhibitRequest;
import org.atdev.artrip.domain.keyword.data.QKeyword;
Expand All @@ -36,49 +35,34 @@ public Slice<Exhibit> findExhibitByFilters(ExhibitFilterRequest dto, Long size,
QExhibit e = QExhibit.exhibit;
QExhibitHall h = QExhibitHall.exhibitHall;
QKeyword k = QKeyword.keyword;
QFavoriteExhibit f = QFavoriteExhibit.favoriteExhibit;

Exhibit cursor = null;

long cursorFavoriteCount = 0;
if (cursorId != null) {
cursor = queryFactory.selectFrom(e)
.where(e.exhibitId.eq(cursorId))
.fetchOne();

if (cursor != null && dto.getSortType() == SortType.POPULAR) {
Long count = queryFactory
.select(f.favoriteId.count())
.from(f)
.where(f.exhibit.eq(cursor))
.fetchOne();

cursorFavoriteCount = count != null ? count : 0L;
}
}

List<Exhibit> content = queryFactory
.select(e)
.selectDistinct(e)
.from(e)
.join(e.exhibitHall, h)
.leftJoin(e.keywords, k)
.leftJoin(f).on(f.exhibit.eq(e))
.where(
e.status.ne(Status.FINISHED),
isDomesticEq(dto.getIsDomestic()),
dateFilter(dto.getStartDate(), dto.getEndDate(),e),
cursorCondition(cursor, cursorFavoriteCount, dto.getSortType(), e, f),
cursorCondition(cursor, dto.getSortType(), e),
countryEq(dto.getCountry()),
regionEq(dto.getRegion()),
genreIn(dto.getGenres()),
styleIn(dto.getStyles())
)
.orderBy(sortFilter(dto, e, f))
.orderBy(sortFilter(dto, e))
.limit(size+1)
.groupBy(e.exhibitId)
.fetch();


boolean hasNext = content.size() > size;

if (hasNext)
Expand Down Expand Up @@ -127,27 +111,27 @@ public List<HomeListResponse> findRandomExhibits(RandomExhibitRequest c) {
.fetch();
}

private BooleanExpression cursorCondition(Exhibit cursor, long cursorFavoriteCount, SortType sortType, QExhibit e, QFavoriteExhibit f) {
private BooleanExpression cursorCondition(Exhibit cursor, SortType sortType, QExhibit e) {
if (cursor == null) return null;
if (sortType == null) sortType = SortType.LATEST;

return switch (sortType) {

case POPULAR -> f.favoriteId.count().loe(cursorFavoriteCount)//<=
.or(f.favoriteId.count().eq(cursorFavoriteCount)
.and(e.exhibitId.lt(cursor.getExhibitId())));//<
case POPULAR -> e.favoriteCount.lt(cursor.getFavoriteCount())
.or(e.favoriteCount.eq(cursor.getFavoriteCount())
.and(e.exhibitId.lt(cursor.getExhibitId())));

case LATEST -> e.startDate.lt(cursor.getStartDate())
case LATEST -> e.startDate.lt(cursor.getStartDate())//<
.or(e.startDate.eq(cursor.getStartDate())
.and(e.exhibitId.lt(cursor.getExhibitId())));

default -> e.endDate.gt(cursor.getEndDate())
default -> e.endDate.gt(cursor.getEndDate())//>
.or(e.endDate.eq(cursor.getEndDate())
.and(e.exhibitId.lt(cursor.getExhibitId())));
};
}

private OrderSpecifier<?>[] sortFilter(ExhibitFilterRequest dto, QExhibit e, QFavoriteExhibit f) {
private OrderSpecifier<?>[] sortFilter(ExhibitFilterRequest dto, QExhibit e) {

if (dto.getSortType() == null) {
return new OrderSpecifier[]{e.startDate.desc(), e.exhibitId.desc()};
Expand All @@ -156,7 +140,7 @@ private OrderSpecifier<?>[] sortFilter(ExhibitFilterRequest dto, QExhibit e, QFa
switch (dto.getSortType()) {
case POPULAR:
return new OrderSpecifier[]{
f.favoriteId.count().desc().nullsLast(),
e.favoriteCount.desc().nullsLast(),
e.exhibitId.desc()
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public FavoriteResponse addFavorite(Long userId, Long exhibitId) {
return toFavoriteResponse(favorite);
}
favorite.setStatus(true);
exhibit.increaseFavoriteCount();
log.info("Reactivating favorite exhibit: {}", favorite.getFavoriteId());
} else {
favorite = FavoriteExhibit.builder()
Expand All @@ -60,6 +61,8 @@ public FavoriteResponse addFavorite(Long userId, Long exhibitId) {
.status(true)
.createdAt(LocalDateTime.now())
.build();
exhibit.increaseFavoriteCount();

log.info("Creating new favorite");
}

Expand Down Expand Up @@ -165,6 +168,7 @@ public void removeFavorite(Long userId, Long exhibitId) {
.orElseThrow(() -> new GeneralException(UserError._USER_NOT_FOUND));

favorite.setStatus(false);
favorite.getExhibit().decreaseFavoriteCount();

favoriteExhibitRepository.save(favorite);
log.info("Favorite exhibit removed successfully. favoriteId: {}", favorite.getFavoriteId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public MypageResponse getMypage(Long userId, ImageResizeRequest resize){

String profileImage = s3Service.buildResizeUrl(user.getProfileImageUrl(), resize.getW(), resize.getH(), resize.getF());

return new MypageResponse(user.getNickName(), profileImage);
return new MypageResponse(user.getNickName(), profileImage, user.getEmail());
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ public class MypageResponse {

private String nickName;
private String profileImage;
private String email;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE exhibit
RENAME COLUMN favoriteCount TO favorite_count;
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE exhibit
ADD COLUMN favoriteCount BIGINT NOT NULL DEFAULT 0;
Loading