Skip to content

Commit 4a8e99b

Browse files
feat : 공연 예매 종료 시간 추가
1 parent 723428c commit 4a8e99b

8 files changed

Lines changed: 81 additions & 53 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/dto/concert/ConcertDetailResponse.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public class ConcertDetailResponse {
4040
@Schema(description = "콘서트 예매 시작 날짜입니다.")
4141
private LocalDateTime ticketTime;
4242

43+
@JsonSerialize(using = LocalDateTimeSerializer.class)
44+
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
45+
@Schema(description = "콘서트 예매 종료 날짜입니다.")
46+
private LocalDateTime ticketEndTime;
47+
4348
@JsonSerialize(using = LocalDateSerializer.class)
4449
@JsonDeserialize(using = LocalDateDeserializer.class)
4550
@Schema(description = "콘서트 시작 날짜입니다.",format = "yyyy-MM-dd")
@@ -69,4 +74,5 @@ public class ConcertDetailResponse {
6974
private List<String> concertImageUrls;
7075

7176

77+
7278
}

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/dto/concert/ConcertItem.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ public class ConcertItem {
3434
@Schema(description = "콘서트 예매 시작 날짜입니다.",format = "yyyy-MM-ddThh:mm:ss")
3535
private LocalDateTime ticketTime;
3636

37+
@JsonSerialize(using = LocalDateTimeSerializer.class)
38+
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
39+
@Schema(description = "콘서트 예매 종료 날짜입니다.")
40+
private LocalDateTime ticketEndTime;
41+
3742
@JsonSerialize(using = LocalDateSerializer.class)
3843
@JsonDeserialize(using = LocalDateDeserializer.class)
3944
@Schema(description = "콘서트 시작 날짜입니다.",format = "yyyy-MM-dd")
@@ -64,6 +69,7 @@ public ConcertItem(Concert concert) {
6469
this.name = concert.getName();
6570
this.placeName = concert.getConcertPlace().getPlaceName();
6671
this.ticketTime = concert.getTicketTime();
72+
this.ticketEndTime = concert.getTicketEndTime();
6773
this.startDate = concert.getStartDate();
6874
this.endDate =concert.getEndDate();
6975
this.posterUrl = concert.getPosterUrl();

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/dto/concert/ConcertTicketTimeSetRequest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public class ConcertTicketTimeSetRequest {
1313
@NotNull(message = "예매 시작 시간 입력시 해당 공연의 ID 값 입력은 필수입니다.")
1414
private Long concertId;
1515

16-
@Schema(description = "티켓팅 시간입니다.")
16+
@Schema(description = "티켓팅 시작 시간입니다.")
1717
@NotNull(message = "예매 시작 시간 설정시 시간 입력은 필수입니다.")
1818
private LocalDateTime ticketTime;
19+
20+
21+
@Schema(description = "티켓팅 종료 시간입니다.")
22+
@NotNull(message = "예매 종료 시간 설정시 시간 입력은 필수입니다.")
23+
private LocalDateTime ticketEndTime;
1924
}

src/main/java/com/back/web7_9_codecrete_be/domain/concerts/entity/Concert.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public class Concert {
3838
@Column(name = "ticket_time", nullable = true)
3939
private LocalDateTime ticketTime;
4040

41+
@Column(name = "ticket_end_time", nullable = true)
42+
private LocalDateTime ticketEndTime;
43+
4144
@Column(name = "created_date", nullable = false)
4245
private LocalDateTime createdDate;
4346

@@ -62,11 +65,12 @@ public class Concert {
6265

6366

6467

65-
public Concert(ConcertPlace concertPlace, String name, String content, LocalDate startDate, LocalDate endDate, LocalDateTime ticketTime, int maxPrice, int minPrice, String posterUrl,String apiConcertId) {
68+
public Concert(ConcertPlace concertPlace, String name, String content, LocalDate startDate, LocalDate endDate, LocalDateTime ticketTime,LocalDateTime ticketEndTime, int maxPrice, int minPrice, String posterUrl,String apiConcertId) {
6669
this.concertPlace = concertPlace;
6770
this.name = name;
6871
this.content = content;
6972
this.ticketTime = ticketTime;
73+
this.ticketEndTime = ticketTime;
7074
this.startDate = startDate;
7175
this.endDate = endDate;
7276
this.createdDate = LocalDateTime.now();
@@ -109,8 +113,9 @@ public Concert update(ConcertUpdateRequest concertUpdateRequest,ConcertPlace con
109113
return this;
110114
}
111115

112-
public Concert ticketTimeSet(LocalDateTime ticketTime){
116+
public Concert ticketTimeSet(LocalDateTime ticketTime, LocalDateTime ticketEndTime) {
113117
this.ticketTime = ticketTime;
118+
this.ticketEndTime = ticketEndTime;
114119
return this;
115120
}
116121

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ List<ConcertItem> getConcertItemsByKeyword(
173173
c.concertPlace.placeName as placeName,
174174
c.concertPlace.address as placeAddress,
175175
c.ticketTime as ticketTime,
176+
c.ticketEndTime as ticketEndTime,
176177
c.startDate as startDate,
177178
c.endDate as endDate,
178179
c.posterUrl as posterUrl,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public ConcertItem updateConcert(long concertId, ConcertUpdateRequest concertUpd
211211
// 공연 시간 설정
212212
public ConcertDetailResponse setConcertTicketingTime(ConcertTicketTimeSetRequest concertTicketTimeSetRequest) {
213213
Concert concert = findConcertByConcertId(concertTicketTimeSetRequest.getConcertId());
214-
concert.ticketTimeSet(concertTicketTimeSetRequest.getTicketTime());
214+
concert.ticketTimeSet(concertTicketTimeSetRequest.getTicketTime(), concertTicketTimeSetRequest.getTicketEndTime());
215215
Concert savedConcert = concertRepository.save(concert);
216216
return concertRepository.getConcertDetailById(savedConcert.getConcertId());
217217
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ public void setConcertsList() throws InterruptedException {
156156
dateStringToDateTime(concertDetail.getStartDate()),
157157
dateStringToDateTime(concertDetail.getEndDate()),
158158
null,
159+
null,
159160
ticketPrice.maxPrice,
160161
ticketPrice.minPrice,
161162
concertDetail.getPosterUrl(),
@@ -261,6 +262,7 @@ public SetResultResponse updateConcertData() throws InterruptedException {
261262
dateStringToDateTime(concertDetail.getStartDate()),
262263
dateStringToDateTime(concertDetail.getEndDate()),
263264
null,
265+
null,
264266
ticketPrice.maxPrice,
265267
ticketPrice.minPrice,
266268
concertDetail.getPosterUrl(),

src/main/java/com/back/web7_9_codecrete_be/global/initData/BaseInitData.java

Lines changed: 52 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -85,68 +85,71 @@ private void createConcertsForChatTest() {
8585
}
8686

8787
ConcertPlace place = concertPlaceRepository.findAll().stream()
88-
.findFirst()
89-
.orElseGet(() ->
90-
concertPlaceRepository.save(
91-
new ConcertPlace(
92-
"테스트 공연장",
93-
"서울특별시 중구 테스트로 123",
94-
37.5665,
95-
126.9780,
96-
5000,
97-
"API-CONCERT-PLACE-1"
98-
)
99-
)
100-
);
88+
.findFirst()
89+
.orElseGet(() ->
90+
concertPlaceRepository.save(
91+
new ConcertPlace(
92+
"테스트 공연장",
93+
"서울특별시 중구 테스트로 123",
94+
37.5665,
95+
126.9780,
96+
5000,
97+
"API-CONCERT-PLACE-1"
98+
)
99+
)
100+
);
101101

102102
LocalDateTime now = LocalDateTime.now();
103103

104104
// 채팅 가능 (정책 기간 중)
105105
concertRepository.save(
106-
new Concert(
107-
place,
108-
"채팅 가능 공연",
109-
"채팅 테스트용 공연 (정책 기간 중)",
110-
LocalDate.now(),
111-
LocalDate.now().plusDays(2),
112-
LocalDateTime.of(2025, 12, 19, 0, 0),
113-
150000,
114-
50000,
115-
"https://example.com/poster1.jpg",
116-
"API-CONCERT-CHAT-1"
117-
)
106+
new Concert(
107+
place,
108+
"채팅 가능 공연",
109+
"채팅 테스트용 공연 (정책 기간 중)",
110+
LocalDate.now(),
111+
LocalDate.now().plusDays(2),
112+
LocalDateTime.of(2025, 12, 19, 0, 0),
113+
LocalDateTime.of(2025, 12, 21, 0, 0),
114+
150000,
115+
50000,
116+
"https://example.com/poster1.jpg",
117+
"API-CONCERT-CHAT-1"
118+
)
118119
);
119120

120121
// 채팅 불가 (정책 시작 전)
121122
concertRepository.save(
122-
new Concert(
123-
place,
124-
"채팅 불가 공연 - 시작 전",
125-
"아직 채팅이 오픈되지 않은 공연",
126-
LocalDate.now().plusDays(5),
127-
LocalDate.now().plusDays(7),
128-
LocalDateTime.of(2025, 12, 25, 0, 0),
129-
120000,
130-
40000,
131-
"https://example.com/poster2.jpg",
132-
"API-CONCERT-CHAT-2"
133-
)
123+
new Concert(
124+
place,
125+
"채팅 불가 공연 - 시작 전",
126+
"아직 채팅이 오픈되지 않은 공연",
127+
LocalDate.now().plusDays(5),
128+
LocalDate.now().plusDays(7),
129+
LocalDateTime.of(2025, 12, 25, 0, 0),
130+
LocalDateTime.of(2025, 12, 30, 0, 0),
131+
120000,
132+
40000,
133+
"https://example.com/poster2.jpg",
134+
"API-CONCERT-CHAT-2"
135+
)
134136
);
135137

136138
// 채팅 불가 (정책 종료 후)
137139
concertRepository.save(
138-
new Concert(
139-
place,
140-
"채팅 종료된 공연",
141-
"채팅 가능 기간이 지난 공연",
142-
LocalDate.now().minusDays(10),
143-
LocalDate.now().minusDays(7),
144-
LocalDateTime.of(2025, 11, 1, 0, 0),
145-
100000,
146-
30000,
147-
"https://example.com/poster3.jpg",
148-
"API-CONCERT-CHAT-3"
149-
)
140+
new Concert(
141+
place,
142+
"채팅 종료된 공연",
143+
"채팅 가능 기간이 지난 공연",
144+
LocalDate.now().minusDays(10),
145+
LocalDate.now().minusDays(7),
146+
LocalDateTime.of(2025, 11, 1, 0, 0),
147+
LocalDateTime.of(2025, 11, 15, 0, 0),
148+
100000,
149+
30000,
150+
"https://example.com/poster3.jpg",
151+
"API-CONCERT-CHAT-3"
152+
)
150153
);
151154
}
152155
}

0 commit comments

Comments
 (0)