Skip to content

Commit

Permalink
[Feat(라이/김민지)] 미션 추가 API 구현 - UMC-SMWU#11
Browse files Browse the repository at this point in the history
  • Loading branch information
Lightieey committed Nov 27, 2023
1 parent 98a96e4 commit 4a0274e
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 0 deletions.
16 changes: 16 additions & 0 deletions 라이/src/main/java/com/umc/demo/converter/StoreConverter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.umc.demo.converter;

import com.umc.demo.domain.Mission;
import com.umc.demo.domain.Review;
import com.umc.demo.web.dto.StoreRequestDTO;
import com.umc.demo.web.dto.StoreResponseDTO;
Expand All @@ -21,4 +22,19 @@ public static StoreResponseDTO.CreateReviewResultDTO toCreateReviewResultDTO(Rev
.createdAt(LocalDateTime.now())
.build();
}

public static Mission toMission(StoreRequestDTO.MissionDTO request){
return Mission.builder()
.reward(request.getReward())
.deadline(request.getDeadline())
.missionSpec(request.getMissionSpec())
.build();
}

public static StoreResponseDTO.CreateMissionResultDTO toCreateReviewResultDTO(Mission mission){
return StoreResponseDTO.CreateMissionResultDTO.builder()
.missionId(mission.getId())
.createdAt(LocalDateTime.now())
.build();
}
}
7 changes: 7 additions & 0 deletions 라이/src/main/java/com/umc/demo/domain/Mission.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,11 @@ public class Mission extends BaseEntity {

@OneToMany(mappedBy = "mission", cascade = CascadeType.ALL)
private List<MemberMission> memberMissionList = new ArrayList<>();

public void setStore(Store store){
if (this.store != null)
store.getReviewList().remove(this);
this.store = store;
store.getMissionList().add(this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.umc.demo.repository;

import com.umc.demo.domain.Mission;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MissionRepository extends JpaRepository<Mission, Long> {
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.umc.demo.service.StoreService;

import com.umc.demo.domain.Mission;
import com.umc.demo.domain.Review;
import com.umc.demo.web.dto.StoreRequestDTO;

public interface StoreCommandService {

Review createReview(Long memberId, Long storeId, StoreRequestDTO.ReveiwDTO request);
Mission createMission(Long storeId, StoreRequestDTO.MissionDTO request);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.umc.demo.service.StoreService;

import com.umc.demo.converter.StoreConverter;
import com.umc.demo.domain.Mission;
import com.umc.demo.domain.Review;
import com.umc.demo.repository.MemberRepository;
import com.umc.demo.repository.MissionRepository;
import com.umc.demo.repository.ReviewRepository;
import com.umc.demo.repository.StoreRepository;
import com.umc.demo.web.dto.StoreRequestDTO;
Expand All @@ -20,6 +22,7 @@ public class StoreCommandServiceImpl implements StoreCommandService{
private final MemberRepository memberRepository;

private final StoreRepository storeRepository;
private final MissionRepository missionRepository;

@Override
public Review createReview(Long memberId, Long storeId, StoreRequestDTO.ReveiwDTO request) {
Expand All @@ -31,4 +34,14 @@ public Review createReview(Long memberId, Long storeId, StoreRequestDTO.ReveiwDT

return reviewRepository.save(review);
}

@Override
public Mission createMission(Long storeId, StoreRequestDTO.MissionDTO request) {

Mission mission = StoreConverter.toMission(request);

mission.setStore(storeRepository.findById(storeId).get());

return missionRepository.save(mission);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.umc.demo.validation.annotation.ExistMember;
import com.umc.demo.validation.annotation.ExistStore;
import com.umc.demo.web.dto.StoreRequestDTO;
import com.umc.demo.web.dto.StoreResponseDTO.CreateMissionResultDTO;
import com.umc.demo.web.dto.StoreResponseDTO.CreateReviewResultDTO;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand All @@ -34,4 +35,11 @@ public ApiResponse<CreateReviewResultDTO> createReview(@RequestBody @Valid Store
Review review = storeCommandService.createReview(memberId, storeId, request);
return ApiResponse.onSuccess(StoreConverter.toCreateReviewResultDTO(review));
}

@PostMapping("/{storeId}/missions")
public ApiResponse<CreateMissionResultDTO> createMission(@RequestBody @Valid StoreRequestDTO.MissionDTO request,
@ExistStore @PathVariable(name = "storeId") Long storeId) {
Mission mission = storeCommandService.createMission(storeId, request);
return ApiResponse.onSuccess(StoreConverter.toCreateReviewResultDTO(mission));
}
}
13 changes: 13 additions & 0 deletions 라이/src/main/java/com/umc/demo/web/dto/StoreRequestDTO.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.umc.demo.web.dto;

import java.time.LocalDate;
import javax.persistence.Column;
import javax.validation.constraints.FutureOrPresent;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Getter;
Expand All @@ -15,4 +18,14 @@ public static class ReveiwDTO{
@NotBlank
String body;
}

@Getter
public static class MissionDTO{
@NotNull
Integer reward;
@FutureOrPresent
LocalDate deadline;
@NotBlank
String missionSpec;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,13 @@ public static class CreateReviewResultDTO{
Long reviewId;
LocalDateTime createdAt;
}

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class CreateMissionResultDTO{
Long missionId;
LocalDateTime createdAt;
}
}

0 comments on commit 4a0274e

Please sign in to comment.