Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] Weekly Mission 추가 #57

Merged
merged 8 commits into from
Aug 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Expand Up @@ -2,18 +2,20 @@

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())
.body(dto.getBody())
.categoryId(dto.getCategoryId())
.subCategory(dto.getSubCategory())
.member(member)
.weeklyMission(weeklyMission)
.build();
}

Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/example/stepperbackend/domain/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
23 changes: 23 additions & 0 deletions src/main/java/com/example/stepperbackend/domain/WeeklyMission.java
Original file line number Diff line number Diff line change
@@ -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;

}
Original file line number Diff line number Diff line change
@@ -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<WeeklyMission, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<WeeklyMissionDto.WeeklyMissionResponseDto> getAllWeeklyMissions();
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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<WeeklyMissionDto.WeeklyMissionResponseDto> getWeeklyMission(@PathVariable Long id) {
WeeklyMissionDto.WeeklyMissionResponseDto response = weeklyMissionService.getWeeklyMission(id);
return ApiResponse.onSuccess(response);
}

}
2 changes: 2 additions & 0 deletions src/main/java/com/example/stepperbackend/web/dto/PostDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public static class PostRequestDto {
private String body;
private Long categoryId;
private SubCategory subCategory;
private Long weeklyMissionId;
}

@Data
Expand All @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

}
}
Loading