From e02aa32c7e51041a5b94128c71a7e34d37f575d6 Mon Sep 17 00:00:00 2001 From: juno-junho Date: Thu, 26 Oct 2023 17:45:41 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20Event=20=EB=8F=84=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/spaceclub/event/domain/Event.java | 9 ++++++++- src/main/java/com/spaceclub/event/domain/EventInfo.java | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/spaceclub/event/domain/Event.java b/src/main/java/com/spaceclub/event/domain/Event.java index cfe9e1dd..bf1ad5d8 100644 --- a/src/main/java/com/spaceclub/event/domain/Event.java +++ b/src/main/java/com/spaceclub/event/domain/Event.java @@ -26,6 +26,7 @@ public class Event extends BaseTimeEntity { @Enumerated(EnumType.STRING) private Category category; + @Getter @Embedded private EventInfo eventInfo; @@ -38,10 +39,11 @@ public class Event extends BaseTimeEntity { @Embedded private FormInfo formInfo; + @Getter private Long clubId; @Builder - public Event(Category category, + private Event(Category category, EventInfo eventInfo, BankInfo bankInfo, TicketInfo ticketInfo, @@ -55,4 +57,9 @@ public Event(Category category, this.clubId = clubId; } + public String getClubHost() { + // TODO Club과 연관관계 설정 후 HOST (주최자) 반환하는 메서드 + return "host"; + } + } diff --git a/src/main/java/com/spaceclub/event/domain/EventInfo.java b/src/main/java/com/spaceclub/event/domain/EventInfo.java index 00c1d25b..4c398311 100644 --- a/src/main/java/com/spaceclub/event/domain/EventInfo.java +++ b/src/main/java/com/spaceclub/event/domain/EventInfo.java @@ -4,6 +4,7 @@ import lombok.AccessLevel; import lombok.Builder; import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NoArgsConstructor; import java.time.LocalDate; @@ -13,12 +14,15 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class EventInfo { + @Getter private String title; + @Getter private String content; private LocalDate startDate; + @Getter private String location; private int capacity; @@ -26,7 +30,7 @@ public class EventInfo { private String poster; @Builder - public EventInfo(String title, String content, LocalDate startDate, String location, int capacity, String poster) { + private EventInfo(String title, String content, LocalDate startDate, String location, int capacity, String poster) { this.title = title; this.content = content; this.startDate = startDate; From 602be307355dfe5c818000b0bca6cf0e5e76d5a9 Mon Sep 17 00:00:00 2001 From: juno-junho Date: Thu, 26 Oct 2023 17:46:32 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=EC=9D=BC=EB=B0=98=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EA=B0=80=20=EC=8B=A0=EC=B2=AD=ED=95=9C=20?= =?UTF-8?q?=ED=96=89=EC=82=AC=20=ED=98=84=ED=99=A9=20=ED=99=95=EC=9D=B8=20?= =?UTF-8?q?dto=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/dto/EventPageResponse.java | 55 +++++++++++++++++++ .../user/controller/dto/EventResponse.java | 16 ++++++ 2 files changed, 71 insertions(+) create mode 100644 src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java create mode 100644 src/main/java/com/spaceclub/user/controller/dto/EventResponse.java diff --git a/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java b/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java new file mode 100644 index 00000000..cb7893aa --- /dev/null +++ b/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java @@ -0,0 +1,55 @@ +package com.spaceclub.user.controller.dto; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort; + +import java.util.List; + +public record EventPageResponse( + List data, + PageableResponse pageData +) { + + public EventPageResponse(List data, Page page) { + this(data, new PageableResponse<>(page)); + } + + private record PageableResponse( + boolean first, + boolean last, + int pageNumber, + int size, + SortResponse sort, + int totalPages, + long totalElements + ) { + + public PageableResponse(Page page) { + this( + page.isFirst(), + page.isLast(), + page.getNumber(), + page.getSize(), + new SortResponse(page.getSort()), + page.getTotalPages(), + page.getTotalElements() + ); + } + + } + + private record SortResponse( + boolean empty, + boolean sorted + ) { + + public SortResponse(Sort sort) { + this( + sort.isEmpty(), + sort.isSorted() + ); + } + + } + +} diff --git a/src/main/java/com/spaceclub/user/controller/dto/EventResponse.java b/src/main/java/com/spaceclub/user/controller/dto/EventResponse.java new file mode 100644 index 00000000..1714c493 --- /dev/null +++ b/src/main/java/com/spaceclub/user/controller/dto/EventResponse.java @@ -0,0 +1,16 @@ +package com.spaceclub.user.controller.dto; + +import com.spaceclub.event.domain.Event; + +public record EventResponse(Long id, String title, String location, String host) { + + public static EventResponse from(Event event) { + return new EventResponse( + event.getId(), + event.getEventInfo().getTitle(), + event.getEventInfo().getLocation(), + event.getClubHost() + ); + } + +} From d6a0baf8951d42ed40356c2b3d7e844c4c02fe41 Mon Sep 17 00:00:00 2001 From: juno-junho Date: Thu, 26 Oct 2023 17:47:18 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20user=20controller=20=EB=B0=8F=20moc?= =?UTF-8?q?k=20User=20service=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 35 +++++++++++++++++++ .../spaceclub/user/service/UserService.java | 14 ++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/main/java/com/spaceclub/user/controller/UserController.java create mode 100644 src/main/java/com/spaceclub/user/service/UserService.java diff --git a/src/main/java/com/spaceclub/user/controller/UserController.java b/src/main/java/com/spaceclub/user/controller/UserController.java new file mode 100644 index 00000000..582f2def --- /dev/null +++ b/src/main/java/com/spaceclub/user/controller/UserController.java @@ -0,0 +1,35 @@ +package com.spaceclub.user.controller; + +import com.spaceclub.event.domain.Event; +import com.spaceclub.user.controller.dto.EventPageResponse; +import com.spaceclub.user.controller.dto.EventResponse; +import com.spaceclub.user.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/users") +@RequiredArgsConstructor +public class UserController { + + private final UserService userService; + + @GetMapping("/{userId}/events") + public EventPageResponse getAllEvents(@PathVariable Long userId, Pageable pageable) { + Page eventPages = userService.findAllEventPages(userId, pageable); + List eventResponses = eventPages.getContent() + .stream() + .map(EventResponse::from) + .toList(); + + return new EventPageResponse<>(eventResponses, eventPages); + } + +} diff --git a/src/main/java/com/spaceclub/user/service/UserService.java b/src/main/java/com/spaceclub/user/service/UserService.java new file mode 100644 index 00000000..13d36f89 --- /dev/null +++ b/src/main/java/com/spaceclub/user/service/UserService.java @@ -0,0 +1,14 @@ +package com.spaceclub.user.service; + +import com.spaceclub.event.domain.Event; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +@Service +public interface UserService { + + Page findAllEventPages(Long userId, Pageable pageable); + + +} From 88912a3018e9dc845bbcc124e8da36d177e8dffd Mon Sep 17 00:00:00 2001 From: juno-junho Date: Thu, 26 Oct 2023 17:51:23 +0900 Subject: [PATCH 4/6] =?UTF-8?q?chore:=20=EA=B3=B5=EB=B0=B1=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/spaceclub/user/service/UserService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/spaceclub/user/service/UserService.java b/src/main/java/com/spaceclub/user/service/UserService.java index 13d36f89..3767e9ff 100644 --- a/src/main/java/com/spaceclub/user/service/UserService.java +++ b/src/main/java/com/spaceclub/user/service/UserService.java @@ -10,5 +10,4 @@ public interface UserService { Page findAllEventPages(Long userId, Pageable pageable); - } From f4f2133c5b4cd3785ce82cffad2288dcf8634033 Mon Sep 17 00:00:00 2001 From: juno-junho Date: Thu, 26 Oct 2023 18:11:36 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C?= =?UTF-8?q?=20sort=20=EC=A0=95=EB=B3=B4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/dto/EventPageResponse.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java b/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java index cb7893aa..1a153237 100644 --- a/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java +++ b/src/main/java/com/spaceclub/user/controller/dto/EventPageResponse.java @@ -1,7 +1,6 @@ package com.spaceclub.user.controller.dto; import org.springframework.data.domain.Page; -import org.springframework.data.domain.Sort; import java.util.List; @@ -19,7 +18,6 @@ private record PageableResponse( boolean last, int pageNumber, int size, - SortResponse sort, int totalPages, long totalElements ) { @@ -30,7 +28,6 @@ public PageableResponse(Page page) { page.isLast(), page.getNumber(), page.getSize(), - new SortResponse(page.getSort()), page.getTotalPages(), page.getTotalElements() ); @@ -38,18 +35,4 @@ public PageableResponse(Page page) { } - private record SortResponse( - boolean empty, - boolean sorted - ) { - - public SortResponse(Sort sort) { - this( - sort.isEmpty(), - sort.isSorted() - ); - } - - } - } From 39dbfa4dd486b0c2ce369d01d79c4f0b1f205a1d Mon Sep 17 00:00:00 2001 From: juno-junho Date: Fri, 27 Oct 2023 14:42:29 +0900 Subject: [PATCH 6/6] =?UTF-8?q?chore:=20endpoint=20=EB=88=84=EB=9D=BD=20?= =?UTF-8?q?=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/spaceclub/user/controller/UserController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/spaceclub/user/controller/UserController.java b/src/main/java/com/spaceclub/user/controller/UserController.java index 582f2def..6c9537c4 100644 --- a/src/main/java/com/spaceclub/user/controller/UserController.java +++ b/src/main/java/com/spaceclub/user/controller/UserController.java @@ -15,7 +15,7 @@ import java.util.List; @RestController -@RequestMapping("/api/users") +@RequestMapping("/api/v1/users") @RequiredArgsConstructor public class UserController {