From e68657d7235aee1ce23c8de6742f43c5039b665c Mon Sep 17 00:00:00 2001 From: ThreeeJ <2171266@hansung.ac.kr> Date: Tue, 12 May 2026 13:12:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=ED=9B=84=EB=B3=B4=EC=A7=80=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D/=EC=82=AD=EC=A0=9C=20=EC=8B=9C=20=EC=95=BD?= =?UTF-8?q?=EC=86=8D=20=EC=83=81=ED=83=9C=20=EC=9E=90=EB=8F=99=20=EC=A0=84?= =?UTF-8?q?=ED=99=98=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hansung/zigma/domain/promise/entity/Promise.java | 12 ++++++++++++ .../promise/repository/CandidateRepository.java | 2 ++ .../domain/promise/service/CandidateServiceImpl.java | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/src/main/java/org/hansung/zigma/domain/promise/entity/Promise.java b/src/main/java/org/hansung/zigma/domain/promise/entity/Promise.java index bde4fdf..13aa3d4 100644 --- a/src/main/java/org/hansung/zigma/domain/promise/entity/Promise.java +++ b/src/main/java/org/hansung/zigma/domain/promise/entity/Promise.java @@ -85,6 +85,18 @@ public void confirm() { this.status = PromiseStatus.CONFIRMED; } + public void proceed() { + if (this.status == PromiseStatus.PENDING) { + this.status = PromiseStatus.PROCEEDING; + } + } + + public void pend() { + if (this.status == PromiseStatus.PROCEEDING) { + this.status = PromiseStatus.PENDING; + } + } + public void startRevote(LocalDateTime endAt) { this.isMultipleVoting = false; this.endAt = endAt; diff --git a/src/main/java/org/hansung/zigma/domain/promise/repository/CandidateRepository.java b/src/main/java/org/hansung/zigma/domain/promise/repository/CandidateRepository.java index 43e80be..374f7a9 100644 --- a/src/main/java/org/hansung/zigma/domain/promise/repository/CandidateRepository.java +++ b/src/main/java/org/hansung/zigma/domain/promise/repository/CandidateRepository.java @@ -15,4 +15,6 @@ public interface CandidateRepository extends JpaRepository { List findAllByPromiseIdAndIsActiveTrue(Long promiseId); Optional findByIdAndPromiseId(Long candidateId, Long promiseId); + + long countByPromiseId(Long promiseId); } diff --git a/src/main/java/org/hansung/zigma/domain/promise/service/CandidateServiceImpl.java b/src/main/java/org/hansung/zigma/domain/promise/service/CandidateServiceImpl.java index 02335a9..4ed58a8 100644 --- a/src/main/java/org/hansung/zigma/domain/promise/service/CandidateServiceImpl.java +++ b/src/main/java/org/hansung/zigma/domain/promise/service/CandidateServiceImpl.java @@ -57,6 +57,9 @@ public CandidateRes createCandidate(Long userId, Long promiseId, CandidateCreate ); Candidate savedCandidate = candidateRepository.save(candidate); + // 첫 후보지가 등록되면 약속 상태를 진행 중으로 전환 + pm.getPromise().proceed(); + return CandidateRes.of(savedCandidate, userId); } @@ -106,6 +109,11 @@ public void deleteCandidate(Long userId, Long promiseId, Long candidateId) { } candidateRepository.delete(candidate); + + // 마지막 후보지 삭제 시 약속 상태를 다시 장소 미정으로 되돌림 + if (candidateRepository.countByPromiseId(promiseId) == 0) { + candidate.getPromise().pend(); + } } @Override From 6607b5e52f72abc4cd40ea8b51d2e94ec104e9bb Mon Sep 17 00:00:00 2001 From: ThreeeJ <2171266@hansung.ac.kr> Date: Tue, 12 May 2026 13:35:54 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=ED=86=A0=ED=81=B0=20=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=20=EC=8B=9C=20CORS=20=EC=97=90=EB=9F=AC=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/hansung/zigma/global/config/SecurityConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/hansung/zigma/global/config/SecurityConfig.java b/src/main/java/org/hansung/zigma/global/config/SecurityConfig.java index 8cacb61..ec110c2 100644 --- a/src/main/java/org/hansung/zigma/global/config/SecurityConfig.java +++ b/src/main/java/org/hansung/zigma/global/config/SecurityConfig.java @@ -9,6 +9,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.http.SessionCreationPolicy; @@ -29,6 +30,7 @@ public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http + .cors(Customizer.withDefaults()) .csrf(csrf -> csrf.disable()) // CSRF 비활성화 .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 세션 비활성화 .authorizeHttpRequests(auth -> auth