From 529eff09ae319aece15002beaaa1619e573d88c1 Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:13:50 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stepperbackend/domain/WeeklyMission.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/domain/WeeklyMission.java diff --git a/src/main/java/com/example/stepperbackend/domain/WeeklyMission.java b/src/main/java/com/example/stepperbackend/domain/WeeklyMission.java new file mode 100644 index 0000000..7699c3f --- /dev/null +++ b/src/main/java/com/example/stepperbackend/domain/WeeklyMission.java @@ -0,0 +1,23 @@ +package com.example.stepperbackend.domain; + +import jakarta.persistence.Entity; +import lombok.*; +import jakarta.persistence.*; +import java.time.LocalDate; + +@Entity +@Setter +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class WeeklyMission { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String missionTitle; + private String missionDescription; + +} \ No newline at end of file From 8bb08abfb14c483fdcf5f692335b28671339d26c Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:14:01 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20DTO=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dto/WeeklyMissionDto.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/web/dto/WeeklyMissionDto.java diff --git a/src/main/java/com/example/stepperbackend/web/dto/WeeklyMissionDto.java b/src/main/java/com/example/stepperbackend/web/dto/WeeklyMissionDto.java new file mode 100644 index 0000000..e0b040c --- /dev/null +++ b/src/main/java/com/example/stepperbackend/web/dto/WeeklyMissionDto.java @@ -0,0 +1,24 @@ +package com.example.stepperbackend.web.dto; + + +import lombok.Builder; +import lombok.Data; + +public class WeeklyMissionDto { + + @Data + public static class WeeklyMissionRequestDto { + private String missionTitle; + private String missionDescription; + + } + + @Data + @Builder + public static class WeeklyMissionResponseDto { + private Long id; + private String missionTitle; + private String missionDescription; + + } +} \ No newline at end of file From d11649751cf3df892d50db48032ee7b020050cc9 Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:14:09 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20=EC=BB=A8=EB=B2=84?= =?UTF-8?q?=ED=84=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converter/WeeklyMissionConverter.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/converter/WeeklyMissionConverter.java diff --git a/src/main/java/com/example/stepperbackend/converter/WeeklyMissionConverter.java b/src/main/java/com/example/stepperbackend/converter/WeeklyMissionConverter.java new file mode 100644 index 0000000..8ff9b92 --- /dev/null +++ b/src/main/java/com/example/stepperbackend/converter/WeeklyMissionConverter.java @@ -0,0 +1,22 @@ +package com.example.stepperbackend.converter; + +import com.example.stepperbackend.domain.WeeklyMission; +import com.example.stepperbackend.web.dto.WeeklyMissionDto; + +public class WeeklyMissionConverter { + + public static WeeklyMission toEntity(WeeklyMissionDto.WeeklyMissionRequestDto dto) { + return WeeklyMission.builder() + .missionTitle(dto.getMissionTitle()) + .missionDescription(dto.getMissionDescription()) + .build(); + } + + public static WeeklyMissionDto.WeeklyMissionResponseDto toDto(WeeklyMission weeklyMission) { + return WeeklyMissionDto.WeeklyMissionResponseDto.builder() + .id(weeklyMission.getId()) + .missionTitle(weeklyMission.getMissionTitle()) + .missionDescription(weeklyMission.getMissionDescription()) + .build(); + } +} \ No newline at end of file From ba8d6d26520f432d1dfcc345ef363e1abd2611cd Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:14:39 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[FEAT]=20POST=20=EC=97=90=20WeeklyMission?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/stepperbackend/converter/PostConverter.java | 6 +++++- src/main/java/com/example/stepperbackend/domain/Post.java | 4 ++++ .../java/com/example/stepperbackend/web/dto/PostDto.java | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/stepperbackend/converter/PostConverter.java b/src/main/java/com/example/stepperbackend/converter/PostConverter.java index 1635c40..5a14bda 100644 --- a/src/main/java/com/example/stepperbackend/converter/PostConverter.java +++ b/src/main/java/com/example/stepperbackend/converter/PostConverter.java @@ -2,11 +2,12 @@ import com.example.stepperbackend.domain.Member; import com.example.stepperbackend.domain.Post; +import com.example.stepperbackend.domain.WeeklyMission; import com.example.stepperbackend.web.dto.PostDto; public class PostConverter { - public static Post toEntity(PostDto.PostRequestDto dto, Member member) { + public static Post toEntity(PostDto.PostRequestDto dto, Member member, WeeklyMission weeklyMission) { return Post.builder() .imageUrl(dto.getImageUrl()) .title(dto.getTitle()) @@ -14,6 +15,7 @@ public static Post toEntity(PostDto.PostRequestDto dto, Member member) { .categoryId(dto.getCategoryId()) .subCategory(dto.getSubCategory()) .member(member) + .weeklyMission(weeklyMission) .build(); } @@ -26,6 +28,8 @@ public static PostDto.PostResponseDto toDto(Post post) { .authorEmail(post.getMember().getEmail()) .categoryId(post.getCategoryId()) .subCategory(post.getSubCategory()) + //.weeklyMissionTitle(post.getWeeklyMission() != null ? post.getWeeklyMission().getMissionTitle() : null) + .weeklyMissionTitle(post.getWeeklyMission() != null ? post.getWeeklyMission().getMissionTitle() : null) .createdAt(post.getCreatedAt()) .updatedAt(post.getUpdatedAt()) .build(); diff --git a/src/main/java/com/example/stepperbackend/domain/Post.java b/src/main/java/com/example/stepperbackend/domain/Post.java index 395c4f3..9dc1b35 100644 --- a/src/main/java/com/example/stepperbackend/domain/Post.java +++ b/src/main/java/com/example/stepperbackend/domain/Post.java @@ -32,4 +32,8 @@ public class Post extends BaseEntity { @Enumerated(EnumType.STRING) private SubCategory subCategory; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "weekly_mission_id") + private WeeklyMission weeklyMission; } diff --git a/src/main/java/com/example/stepperbackend/web/dto/PostDto.java b/src/main/java/com/example/stepperbackend/web/dto/PostDto.java index 2a8d38f..607efbd 100644 --- a/src/main/java/com/example/stepperbackend/web/dto/PostDto.java +++ b/src/main/java/com/example/stepperbackend/web/dto/PostDto.java @@ -15,6 +15,7 @@ public static class PostRequestDto { private String body; private Long categoryId; private SubCategory subCategory; + private Long weeklyMissionId; } @Data @@ -27,6 +28,7 @@ public static class PostResponseDto { private String authorEmail; private Long categoryId; private SubCategory subCategory; + private String weeklyMissionTitle; private LocalDateTime createdAt; private LocalDateTime updatedAt; } From 64717c1e95760e904b4361d5bb71341f7a1998ea Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:14:47 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[FEAT]=20POST=20=EC=83=9D=EC=84=B1=EC=97=90?= =?UTF-8?q?=20WeeklyMission=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PostService/PostServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/stepperbackend/service/PostService/PostServiceImpl.java b/src/main/java/com/example/stepperbackend/service/PostService/PostServiceImpl.java index bce0921..92adadc 100644 --- a/src/main/java/com/example/stepperbackend/service/PostService/PostServiceImpl.java +++ b/src/main/java/com/example/stepperbackend/service/PostService/PostServiceImpl.java @@ -4,8 +4,10 @@ import com.example.stepperbackend.apiPayload.exception.handler.MemberHandler; import com.example.stepperbackend.domain.Member; import com.example.stepperbackend.domain.Post; +import com.example.stepperbackend.domain.WeeklyMission; import com.example.stepperbackend.repository.MemberRepository; import com.example.stepperbackend.repository.PostRepository; +import com.example.stepperbackend.repository.WeeklyMissionRepository; import com.example.stepperbackend.web.dto.PostDto; import com.example.stepperbackend.converter.PostConverter; import lombok.RequiredArgsConstructor; @@ -17,13 +19,20 @@ public class PostServiceImpl implements PostService { private final PostRepository postRepository; private final MemberRepository memberRepository; + private final WeeklyMissionRepository weeklyMissionRepository; @Override public PostDto.PostResponseDto createPost(PostDto.PostRequestDto postRequestDto, String email) { Member member = memberRepository.findByEmail(email) .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); - Post post = PostConverter.toEntity(postRequestDto, member); + WeeklyMission weeklyMission = null; + if (postRequestDto.getWeeklyMissionId() != null) { + weeklyMission = weeklyMissionRepository.findById(postRequestDto.getWeeklyMissionId()).orElse(null); + } + + + Post post = PostConverter.toEntity(postRequestDto, member, weeklyMission); post = postRepository.save(post); return PostConverter.toDto(post); From 0cdf54acb84cf049658e3bf5ddea672a6c97db00 Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:15:05 +0900 Subject: [PATCH 6/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20=EB=A0=88=ED=8C=8C?= =?UTF-8?q?=EC=A7=80=ED=86=A0=EB=A6=AC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stepperbackend/repository/WeeklyMissionRepository.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/repository/WeeklyMissionRepository.java diff --git a/src/main/java/com/example/stepperbackend/repository/WeeklyMissionRepository.java b/src/main/java/com/example/stepperbackend/repository/WeeklyMissionRepository.java new file mode 100644 index 0000000..6ab6103 --- /dev/null +++ b/src/main/java/com/example/stepperbackend/repository/WeeklyMissionRepository.java @@ -0,0 +1,7 @@ +package com.example.stepperbackend.repository; + +import com.example.stepperbackend.domain.WeeklyMission; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface WeeklyMissionRepository extends JpaRepository { +} \ No newline at end of file From 25395e67b4e3cba1a1f98cc709d5982bb7e40dd9 Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:15:12 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WeeklyMissionService.java | 10 +++++++++ .../WeeklyMissionServiceImpl.java | 22 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionService.java create mode 100644 src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionServiceImpl.java diff --git a/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionService.java b/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionService.java new file mode 100644 index 0000000..c42d570 --- /dev/null +++ b/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionService.java @@ -0,0 +1,10 @@ +package com.example.stepperbackend.service.WeeklyMissionService; + +import com.example.stepperbackend.web.dto.WeeklyMissionDto; + +import java.util.List; + +public interface WeeklyMissionService { + WeeklyMissionDto.WeeklyMissionResponseDto getWeeklyMission(Long id); + //List getAllWeeklyMissions(); +} diff --git a/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionServiceImpl.java b/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionServiceImpl.java new file mode 100644 index 0000000..77c1441 --- /dev/null +++ b/src/main/java/com/example/stepperbackend/service/WeeklyMissionService/WeeklyMissionServiceImpl.java @@ -0,0 +1,22 @@ +package com.example.stepperbackend.service.WeeklyMissionService; + +import com.example.stepperbackend.converter.WeeklyMissionConverter; +import com.example.stepperbackend.domain.WeeklyMission; +import com.example.stepperbackend.repository.WeeklyMissionRepository; +import com.example.stepperbackend.web.dto.WeeklyMissionDto; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class WeeklyMissionServiceImpl implements WeeklyMissionService { + + private final WeeklyMissionRepository weeklyMissionRepository; + + @Override + public WeeklyMissionDto.WeeklyMissionResponseDto getWeeklyMission(Long id) { + WeeklyMission weeklyMission = weeklyMissionRepository.findById(id) + .orElseThrow(() -> new RuntimeException("Weekly Mission not found")); + return WeeklyMissionConverter.toDto(weeklyMission); + } +} \ No newline at end of file From 87a6242598b8708321108d0ca00f8047137fb741 Mon Sep 17 00:00:00 2001 From: walesmin Date: Sun, 4 Aug 2024 02:15:19 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[FEAT]=20WeeklyMission=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WeeklyMissionController.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/com/example/stepperbackend/web/controller/WeeklyMissionController.java diff --git a/src/main/java/com/example/stepperbackend/web/controller/WeeklyMissionController.java b/src/main/java/com/example/stepperbackend/web/controller/WeeklyMissionController.java new file mode 100644 index 0000000..13fb214 --- /dev/null +++ b/src/main/java/com/example/stepperbackend/web/controller/WeeklyMissionController.java @@ -0,0 +1,28 @@ +package com.example.stepperbackend.web.controller; + +import com.example.stepperbackend.apiPayload.ApiResponse; +import com.example.stepperbackend.service.WeeklyMissionService.WeeklyMissionService; +import com.example.stepperbackend.web.dto.WeeklyMissionDto; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequestMapping("/api/weekly-missions") +@RequiredArgsConstructor +public class WeeklyMissionController { + + private final WeeklyMissionService weeklyMissionService; + + + @Operation(summary = "주간 미션 조회 API", description = "특정 주간 미션을 조회합니다.") + @GetMapping("/{id}") + public ApiResponse getWeeklyMission(@PathVariable Long id) { + WeeklyMissionDto.WeeklyMissionResponseDto response = weeklyMissionService.getWeeklyMission(id); + return ApiResponse.onSuccess(response); + } + +}