Skip to content

Commit 981b229

Browse files
Merge pull request #104 from prgrms-web-devcourse-final-project/feat/#99
[Concert] 공연 좋아요 / 공연 조회수 안올라가는 것 수정
2 parents 0f4f4f9 + f19d62b commit 981b229

2 files changed

Lines changed: 37 additions & 5 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/repository/ConcertRepository.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import com.back.web7_9_codecrete_be.domain.concerts.entity.ConcertPlace;
77
import com.back.web7_9_codecrete_be.domain.concerts.entity.ConcertTime;
88
import com.back.web7_9_codecrete_be.domain.users.entity.User;
9+
import jakarta.persistence.ManyToOne;
910
import org.springframework.data.domain.Page;
1011
import org.springframework.data.domain.Pageable;
1112
import org.springframework.data.jpa.repository.JpaRepository;
13+
import org.springframework.data.jpa.repository.Modifying;
1214
import org.springframework.data.jpa.repository.Query;
1315
import org.springframework.data.repository.query.Param;
1416
import org.springframework.stereotype.Repository;
@@ -176,6 +178,33 @@ List<ConcertItem> getConcertItemsByKeyword(
176178
ConcertDetailResponse getConcertDetailById(@Param("concertId")long concertId);
177179

178180

181+
@Modifying
182+
@Query("""
183+
UPDATE
184+
Concert c
185+
SET c.viewCount = c.viewCount + 1
186+
where c.concertId = :concertId
187+
""")
188+
Integer concertViewCountUp(@Param("concertId") long concertId);
189+
190+
@Modifying
191+
@Query("""
192+
UPDATE
193+
Concert c
194+
SET c.likeCount = c.likeCount + 1
195+
where c.concertId = :concertId
196+
""")
197+
Integer concertLikeCountUp(@Param("concertId") long concertId);
198+
199+
@Modifying
200+
@Query("""
201+
UPDATE
202+
Concert c
203+
SET c.likeCount = c.likeCount - 1
204+
where c.concertId = :concertId
205+
""")
206+
Integer concertLikeCountDown(@Param("concertId") long concertId);
207+
179208

180209
Concert getConcertByConcertId(Long concertId);
181210
}

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/service/ConcertService.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@
55
import com.back.web7_9_codecrete_be.domain.concerts.entity.*;
66
import com.back.web7_9_codecrete_be.domain.concerts.repository.*;
77
import com.back.web7_9_codecrete_be.domain.users.entity.User;
8-
import com.back.web7_9_codecrete_be.domain.users.repository.UserRepository;
9-
import com.back.web7_9_codecrete_be.global.error.code.AuthErrorCode;
108
import com.back.web7_9_codecrete_be.global.error.code.ConcertErrorCode;
11-
import com.back.web7_9_codecrete_be.global.error.code.ErrorCode;
129
import com.back.web7_9_codecrete_be.global.error.exception.BusinessException;
1310
import lombok.RequiredArgsConstructor;
1411
import org.springframework.data.domain.Pageable;
15-
import org.springframework.security.core.parameters.P;
1612
import org.springframework.stereotype.Service;
13+
import org.springframework.transaction.annotation.Transactional;
1714

1815
import java.time.LocalDate;
1916
import java.util.ArrayList;
@@ -57,14 +54,17 @@ public List<ConcertItem> getConcertListByKeyword(String keyword, Pageable pageab
5754
return concertRepository.getConcertItemsByKeyword(keyword, pageable);
5855
}
5956

57+
@Transactional
6058
public ConcertDetailResponse getConcertDetail(long concertId) {
6159
ConcertDetailResponse concertDetailResponse = concertRepository.getConcertDetailById(concertId);
6260
List<ConcertImage> concertImages = concertImageRepository.getConcertImagesByConcert_ConcertId(concertId);
6361
List<String> concertImageUrls = new ArrayList<>();
6462
for(ConcertImage concertImage : concertImages){
6563
concertImageUrls.add(concertImage.getImageUrl());
6664
}
65+
concertRepository.concertViewCountUp(concertId);
6766
concertDetailResponse.setConcertImageUrls(concertImageUrls);
67+
concertDetailResponse.setViewCount(concertDetailResponse.getViewCount() + 1);
6868
return concertDetailResponse;
6969
}
7070

@@ -103,22 +103,26 @@ public ConcertLikeResponse isLikeConcert(Long concertId, User user) {
103103
return concertLikeResponse;
104104
}
105105

106+
@Transactional
106107
public void likeConcert(long concertId, User user) {
107108
Concert concert = concertRepository.findById(concertId).orElseThrow();
108109
if(concertLikeRepository.existsConcertLikeByConcertAndUser(concert,user)){
109110
throw new BusinessException(ConcertErrorCode.LIKE_CONFLICT);
110111
}
111112
ConcertLike concertLike = new ConcertLike(concert, user);
112113
concertLikeRepository.save(concertLike);
114+
concertRepository.concertLikeCountUp(concertId);
113115
}
114116

117+
@Transactional
115118
public void dislikeConcert(long concertId, User user) {
116119
Concert concert = concertRepository.findById(concertId).orElseThrow();
117120
ConcertLike concertLike = concertLikeRepository.findConcertLikeByConcertAndUser(concert, user);
118121
if(concertLike == null){
119122
throw new BusinessException(ConcertErrorCode.NOT_FOUND_CONCERTLIKE);
120123
}
121124
concertLikeRepository.delete(concertLike);
125+
concertRepository.concertLikeCountDown(concertId);
122126
}
123127

124128
public ConcertItem updateConcert(long concertId, ConcertUpdateRequest concertUpdateRequest) {
@@ -141,5 +145,4 @@ public void deleteConcert(long concertId) {
141145
concertRepository.deleteById(concertId);
142146
}
143147

144-
145148
}

0 commit comments

Comments
 (0)