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

Feature 1/entity crud #9

Merged
merged 4 commits into from
Nov 19, 2023
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,10 +2,7 @@

import com.example.farmusfarm.common.JwtTokenProvider;
import com.example.farmusfarm.common.S3Service;
import com.example.farmusfarm.domain.challenge.dto.req.CreateChallengeRequestDto;
import com.example.farmusfarm.domain.challenge.dto.req.CreateMissionPostRequestDto;
import com.example.farmusfarm.domain.challenge.dto.req.CreateRegistrationRequestDto;
import com.example.farmusfarm.domain.challenge.dto.req.SearchChallengeListRequestDto;
import com.example.farmusfarm.domain.challenge.dto.req.*;
import com.example.farmusfarm.domain.challenge.service.ChallengeService;
import com.example.farmusfarm.domain.challenge.service.MissionPostService;
import com.example.farmusfarm.domain.veggie.service.DiaryService;
Expand Down Expand Up @@ -45,13 +42,14 @@ public BaseResponseDto<?> createRegistration(

@PostMapping("/mission")
public BaseResponseDto<?> createMissionPost(
@RequestHeader("user") Long userId,
@RequestPart("content") CreateMissionPostRequestDto requestDto,
@RequestPart("image") MultipartFile image
) {
return BaseResponseDto.of(SuccessMessage.CREATED, missionPostService.createMissionPost(requestDto, image));
return BaseResponseDto.of(SuccessMessage.CREATED, missionPostService.createMissionPost(userId, requestDto, image));
}

@GetMapping("")
@PostMapping("/search")
public BaseResponseDto<?> searchChallengeList(
@RequestBody SearchChallengeListRequestDto requestDto
) {
Expand All @@ -66,6 +64,14 @@ public BaseResponseDto<?> getChallengeDetail(
return BaseResponseDto.of(SuccessMessage.SUCCESS, challengeService.getChallengeDetail(challengeId, userId));
}

@DeleteMapping
public BaseResponseDto<?> finishChallenge(
@RequestHeader("user") Long userId,
@RequestBody FinishChallengeRequestDto requestDto
) {
return BaseResponseDto.of(SuccessMessage.SUCCESS, challengeService.finishChallenge(userId, requestDto));
}

@PostMapping("/mission/{id}")
public BaseResponseDto<?> likeMissionPost(
@RequestHeader("user") Long userId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,16 @@ public CreateRegistrationResponseDto createRegistration(Long userId, Long veggie
return CreateRegistrationResponseDto.of(savedRegistration.getId());
}

public FinishChallengeResponseDto finishChallenge(FinishChallengeRequestDto requestDto) {

public FinishChallengeResponseDto finishChallenge(Long userId, FinishChallengeRequestDto requestDto) {
Registration registration = getUserRegistration(userId, requestDto.getChallengeId());

// μ±„μ†Œλ₯Ό 계속 μž¬λ°°ν•  경우 등둝 μ •λ³΄λ§Œ μ‚­μ œ
if (requestDto.getIsContinue()) {
registrationRepository.delete(registration);
} else {
// μ±„μ†Œλ₯Ό μž¬λ°°ν•˜μ§€ μ•Šμ„ 경우 μ±Œλ¦°μ§€ μ’…λ£Œ
veggieRepository.delete(registration.getVeggie());
}

return FinishChallengeResponseDto.of(true);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
package com.example.farmusfarm.domain.challenge.service;

import com.example.farmusfarm.common.S3Service;
import com.example.farmusfarm.common.Utils;
import com.example.farmusfarm.domain.challenge.dto.req.CreateMissionPostRequestDto;
import com.example.farmusfarm.domain.challenge.dto.res.CreateMissionPostResponseDto;
import com.example.farmusfarm.domain.challenge.dto.res.LikeMissionPostResponseDto;
import com.example.farmusfarm.domain.challenge.entity.MissionPost;
import com.example.farmusfarm.domain.challenge.entity.MissionPostImage;
import com.example.farmusfarm.domain.challenge.entity.MissionPostLike;
import com.example.farmusfarm.domain.challenge.entity.Registration;
import com.example.farmusfarm.domain.challenge.entity.*;
import com.example.farmusfarm.domain.challenge.repository.MissionPostImageRepository;
import com.example.farmusfarm.domain.challenge.repository.MissionPostLikeRepository;
import com.example.farmusfarm.domain.challenge.repository.MissionPostRepository;
import com.example.farmusfarm.domain.challenge.repository.RegistrationRepository;
import com.example.farmusfarm.domain.history.dto.req.CreateHistoryClubDetailRequestDto;
import com.example.farmusfarm.domain.veggie.repository.VeggieRepository;
import com.example.farmusfarm.domain.veggieInfo.openfeign.CropFeignClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
Expand All @@ -29,13 +32,13 @@ public class MissionPostService {
private final MissionPostImageRepository missionPostImageRepository;
private final MissionPostLikeRepository missionPostLikeRepository;
private final RegistrationRepository registrationRepository;
private final VeggieRepository veggieRepository;

private final S3Service s3Service;
private final ChallengeService challengeService;

private final CropFeignClient cropFeignClient;

public CreateMissionPostResponseDto createMissionPost(CreateMissionPostRequestDto requestDto, MultipartFile image) {
public CreateMissionPostResponseDto createMissionPost(Long userId, CreateMissionPostRequestDto requestDto, MultipartFile image) {
Registration registration = registrationRepository.findById(requestDto.getRegistrationId())
.orElseThrow(() -> new IllegalArgumentException("μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ“±λ‘μž…λ‹ˆλ‹€."));

Expand All @@ -47,10 +50,15 @@ public CreateMissionPostResponseDto createMissionPost(CreateMissionPostRequestDt
MissionPostImage missionPostImage = MissionPostImage.createMissionPostImage(imageUrl, savedPost);
missionPostImageRepository.save(missionPostImage);

// λ‹€μŒ μŠ€ν… 뢈러였기
String nextStep = cropFeignClient.getVeggieInfoStepName(registration.getVeggie().getVeggieInfoId(), savedPost.getStep() + 1).getStepName();
registration.updateCurrentStep(nextStep);
registrationRepository.save(registration);
if (registration.getCurrentStep() == registration.getChallenge().getMaxStep() - 1) {
completeChallenge(registration, userId);
} else {
// λ‹€μŒ μŠ€ν… 뢈러였기
String nextStep = cropFeignClient.getVeggieInfoStepName(registration.getVeggie().getVeggieInfoId(), savedPost.getStep() + 1).getStepName();
registration.updateCurrentStep(nextStep);
registrationRepository.save(registration);

}

return CreateMissionPostResponseDto.of(savedPost.getId(), registration.getChallenge().getChallengeName(), savedPost.getStep(), imageUrl);
}
Expand All @@ -73,4 +81,29 @@ public MissionPost getMissionPost(Long missionPostId) {
return missionPostRepository.findById(missionPostId)
.orElseThrow(() -> new IllegalArgumentException("μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ―Έμ…˜ ν¬μŠ€νŠΈμž…λ‹ˆλ‹€."));
}

public void completeChallenge(Registration registration, Long userId) {
// 등둝 μ •λ³΄μ—μ„œ λ―Έμ…˜ 포슀트 리슀트 λŒλ©΄μ„œ HistoryClubPost에 μ €μž₯
List<CreateHistoryClubDetailRequestDto.HistoryClubPost> missionPosts = registration.getMissionPosts()
.stream()
.map(missionPost -> CreateHistoryClubDetailRequestDto.HistoryClubPost.builder()
.stepNum(missionPost.getStep())
.stepName(registration.getCurrentStepName())
.postImage(missionPost.getMissionPostImages().get(0).getImageUrl())
.content(missionPost.getContent())
.dateTime(Utils.dateTimeFormat(missionPost.getCreatedDate()))
.likeNum(missionPost.getMissionPostLikes().size())
.build())
.collect(Collectors.toList());

Challenge challenge = registration.getChallenge();
// νžˆμŠ€ν† λ¦¬ 생성
// CreateHistoryClubDetailRequestDto requestDto = new CreateHistoryClubDetailRequestDto(
// challenge.getImageUrl(),
// challenge.getVeggieName(),
// challenge.getChallengeName(),
//
//
// )
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

@AllArgsConstructor
@NoArgsConstructor
@Getter
Expand All @@ -15,6 +17,8 @@ public class CreateHistoryClubDetailRequestDto {
private String name;
private String period;

private List<HistoryClubPost> missionPosts;

@AllArgsConstructor
@NoArgsConstructor
@Getter
Expand Down
Loading