Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
990fd78
Article Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
276613b
Article Custom Error Exception 구현
qowl880 May 28, 2025
5035b8f
Auditing 설정 추가
qowl880 May 28, 2025
c0a4c06
Article Create Controller 구현
qowl880 May 28, 2025
6440b7c
Article Delete Controller 구현
qowl880 May 28, 2025
078e792
Article Controller CUD 구현
qowl880 May 28, 2025
e604d2a
Comment Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
b174084
Comment Controller Create 구현
qowl880 May 28, 2025
bba671d
application yml파일 배포/로컬 분리
qowl880 May 28, 2025
6d5ae70
Article Create Controller 구현
qowl880 May 28, 2025
6689db3
Article Delete Controller 구현
qowl880 May 28, 2025
908b0f6
Article Controller CUD 구현
qowl880 May 28, 2025
c96e18a
application.yml 통합
qowl880 May 28, 2025
8cdbabe
Article Repository 설정
qowl880 Jun 3, 2025
4434bb4
Comment Error Exception 생성
qowl880 Jun 4, 2025
47f6496
구조 변경
qowl880 Jun 4, 2025
37b8758
Comment Read 전용 Dao 생성
qowl880 Jun 4, 2025
1d4b0c8
application yml파일 배포/로컬 분리
qowl880 May 28, 2025
7394014
Article Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
888c0a8
Article Create Controller 구현
qowl880 May 28, 2025
b26ab85
Article Delete Controller 구현
qowl880 May 28, 2025
426ab91
Article Controller CUD 구현
qowl880 May 28, 2025
3230b49
application.yml 통합
qowl880 May 28, 2025
83a0f7c
Article Repository 설정
qowl880 Jun 3, 2025
7cb6312
개행 추가
qowl880 Jun 6, 2025
c0436b6
ErrorException 통합
qowl880 Jun 8, 2025
b91f9e4
Dao -> QueryResult 파일명 변경
qowl880 Jun 8, 2025
57df086
Update IdolApplication.java
qowl880 Jun 10, 2025
52f93c3
유저 인증 검사 추가
qowl880 Jun 14, 2025
5b86509
Article Entity 구현
qowl880 May 28, 2025
5ec089f
Article Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
43e7618
Article Custom Error Exception 구현
qowl880 May 28, 2025
89da2e0
Auditing 설정 추가
qowl880 May 28, 2025
759a78e
Article Create Controller 구현
qowl880 May 28, 2025
ef0d4f3
Article Delete Controller 구현
qowl880 May 28, 2025
045ad48
Article Controller CUD 구현
qowl880 May 28, 2025
30c9782
S3 관련 이미지 업로드 및 호출 기능 구현
qowl880 May 28, 2025
b180b02
Comment Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
56c3dce
Comment Controller Create 구현
qowl880 May 28, 2025
3426422
application yml파일 배포/로컬 분리
qowl880 May 28, 2025
9dfd016
Article Create Controller 구현
qowl880 May 28, 2025
fb0fef4
Article Delete Controller 구현
qowl880 May 28, 2025
4c70b48
Article Controller CUD 구현
qowl880 May 28, 2025
165e816
application.yml 통합
qowl880 May 28, 2025
6846f94
Article Repository 설정
qowl880 Jun 3, 2025
efadaf1
Comment Error Exception 생성
qowl880 Jun 4, 2025
b802357
구조 변경
qowl880 Jun 4, 2025
e1639a7
Comment Read 전용 Dao 생성
qowl880 Jun 4, 2025
131c16f
application yml파일 배포/로컬 분리
qowl880 May 28, 2025
5a0974f
Article Repository Jpa / Query 전용 구분
qowl880 May 28, 2025
bd1f654
Article Create Controller 구현
qowl880 May 28, 2025
135985d
Article Delete Controller 구현
qowl880 May 28, 2025
b17a092
Article Controller CUD 구현
qowl880 May 28, 2025
4b9847a
application.yml 통합
qowl880 May 28, 2025
a2c658a
SoftDelete 추가
qowl880 Jun 3, 2025
c982e95
Article Repository 설정
qowl880 Jun 3, 2025
5fd1d14
개행 추가
qowl880 Jun 6, 2025
53b35d4
ErrorException 통합
qowl880 Jun 8, 2025
602fc88
Dao -> QueryResult 파일명 변경
qowl880 Jun 8, 2025
b6d8a08
S3 의존성 변경에 따른 구조 변경
qowl880 Jun 8, 2025
0230779
Update IdolApplication.java
qowl880 Jun 10, 2025
b50c490
유저 인증 검사 추가
qowl880 Jun 14, 2025
d2ab968
@Where 삭제
qowl880 Jun 17, 2025
c9b6d6c
오류로 인한 주석처리
qowl880 Jun 18, 2025
1b8eaf8
aws 관련 설정 추가
qowl880 Jun 19, 2025
6300370
Transactional Read, Write 분리
qowl880 Jun 23, 2025
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
@@ -0,0 +1,49 @@
package com.idol.board.service.article.query;

import com.idol.board.domain.OpenStatus;
import com.idol.board.domain.entity.Article;
import com.idol.board.repository.article.ArticleRepository;
import com.idol.global.exception.NotFoundException;
import jakarta.persistence.EntityManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.sql.Timestamp;
import java.util.Date;

@Service
@RequiredArgsConstructor
public class ArticleStatusService {
private final ArticleRepository articleRepository;
private final EntityManager entityManager;

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void validateCheckOpenStatus(Article article) {
if(article.getCurrentPerson() >= article.getMinPerson()){
if(article.getOpenStatus().equals(OpenStatus.PENDING_STATUS)) {
article.updateOpenStatus(OpenStatus.CONFIRMED_STATUS);
}
}
}


@Transactional(propagation = Propagation.REQUIRES_NEW)
public OpenStatus validateCheckDeadlineStatus(Long articleId, OpenStatus status, Date deadline) {
Article article = articleRepository.findByArticleId(articleId)
.orElseThrow(() -> new NotFoundException("Article", articleId));

Timestamp deadlineTime = new Timestamp(deadline.getTime());
if(deadlineTime.before(new Timestamp(System.currentTimeMillis()))){
if(status.equals(OpenStatus.CONFIRMED_STATUS)) {
article.updateOpenStatus(OpenStatus.DEADLINE_STATUS);
return OpenStatus.DEADLINE_STATUS;
}else if(status.equals(OpenStatus.PENDING_STATUS)){
article.updateOpenStatus(OpenStatus.CANCELED_STATUS);
return OpenStatus.CANCELED_STATUS;
}
}
return status;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ public class ReadArticleService implements ReadArticleUseCase {
private final MemberJpaRepository memberJpaRepository;
private final ParticipantRepository participantRepository;
private final WishRepository wishRepository;
private final ArticleStatusService articleStatusService;

@Override
@Transactional()
@Transactional(readOnly = true)
public ArticleReadResponseDto readArticle(Long articleId, Long userId) {
Article article = articleRepository.findByArticleId(articleId)
.orElseThrow(() -> new NotFoundException("Article", articleId));
Expand Down Expand Up @@ -83,7 +84,7 @@ public ArticleReadResponseDto readArticle(Long articleId, Long userId) {
Location location = validateLocation(article.getLocationId());


validateCheckOpenStatus(article);
articleStatusService.validateCheckOpenStatus(article);

boolean wish = wishCheck(articleId,userId);

Expand All @@ -94,7 +95,7 @@ public ArticleReadResponseDto readArticle(Long articleId, Long userId) {


@Override
@Transactional()
@Transactional(readOnly = true)
public List<ArticleListImgResponseDto> searchArticleList(
BigCategory bigCategory, SmallCategory smallCategory, String location,
Long date, String sort, boolean sortAsc, Long limit, Long page, Long memberId) {
Expand All @@ -110,7 +111,7 @@ public List<ArticleListImgResponseDto> searchArticleList(
ArticleListImgResponseDto.from(
result,
validateLocation(result.locationId()).getRoadNameAddress(),
validateCheckDeadlineStatus(result.articleId(), result.openStatus(), result.deadLine()),
articleStatusService.validateCheckDeadlineStatus(result.articleId(), result.openStatus(), result.deadLine()),
wishCheck(result.articleId(), memberId),
result.imageKey().equals("")? "" : getS3Url(result.imageKey()).preSignedUrl(),
validateUser(result.writerId()).getNickname(),
Expand All @@ -125,34 +126,10 @@ public List<ArticleListImgResponseDto> searchArticleList(



private void validateCheckOpenStatus(Article article) {
if(article.getCurrentPerson() >= article.getMinPerson()){
if(article.getOpenStatus().equals(OpenStatus.PENDING_STATUS)) {
article.updateOpenStatus(OpenStatus.CONFIRMED_STATUS);
articleRepository.save(article);
}
}
}


private OpenStatus validateCheckDeadlineStatus(Long articleId, OpenStatus status, Date deadline) {
Article article = articleRepository.findByArticleId(articleId)
.orElseThrow(() -> new NotFoundException("Article", articleId));

Timestamp deadlineTime = new Timestamp(deadline.getTime());
if(deadlineTime.before(new Timestamp(System.currentTimeMillis()))){
if(status.equals(OpenStatus.CONFIRMED_STATUS)) {
article.updateOpenStatus(OpenStatus.DEADLINE_STATUS);
articleRepository.save(article);
return OpenStatus.DEADLINE_STATUS;
}else if(status.equals(OpenStatus.PENDING_STATUS)){
article.updateOpenStatus(OpenStatus.CANCELED_STATUS);
articleRepository.save(article);
return OpenStatus.CANCELED_STATUS;
}
}
return status;
}


private Location validateLocation(Long locationId) {
return locationRepository.findByLocationId(locationId)
Expand Down