Skip to content

Commit

Permalink
Merge pull request #9 from Mojacknong/feature-1/entity-crud
Browse files Browse the repository at this point in the history
Feature 1/entity crud
  • Loading branch information
MinchoGreenT authored Nov 19, 2023
2 parents 26e360a + 38c7eec commit 4e53a32
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 18 deletions.
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

0 comments on commit 4e53a32

Please sign in to comment.