diff --git a/fairer-api/src/main/java/com/depromeet/fairer/api/HouseWorkCompleteController.java b/fairer-api/src/main/java/com/depromeet/fairer/api/HouseWorkCompleteController.java index ac0e0a0..c6a7d22 100644 --- a/fairer-api/src/main/java/com/depromeet/fairer/api/HouseWorkCompleteController.java +++ b/fairer-api/src/main/java/com/depromeet/fairer/api/HouseWorkCompleteController.java @@ -1,6 +1,7 @@ package com.depromeet.fairer.api; import com.depromeet.fairer.dto.houseworkComplete.response.HouseWorkCompleteResponseDto; +import com.depromeet.fairer.global.resolver.RequestMemberId; import com.depromeet.fairer.global.util.DateTimeUtils; import com.depromeet.fairer.service.houseworkComplete.HouseWorkCompleteService; import io.swagger.annotations.ApiOperation; @@ -10,6 +11,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import java.time.LocalDate; @@ -25,11 +27,12 @@ public class HouseWorkCompleteController { @Tag(name = "houseWorkComplete") @ApiOperation(value = "집안일 완료 생성 - 반복 기능 구현 후") @PostMapping(value = "/{houseWorkId}") - public ResponseEntity createHouseWorkComp(@PathVariable("houseWorkId") Long houseWorkId, - @RequestParam("scheduledDate") String scheduledDate) { + public ResponseEntity createHouseWorkComp(@ApiIgnore @RequestMemberId Long memberId, + @PathVariable("houseWorkId") Long houseWorkId, + @RequestParam("scheduledDate") String scheduledDate) { final LocalDate date = DateTimeUtils.stringToLocalDate(scheduledDate); - final Long houseWorkCompleteId = houseWorkCompleteService.create(houseWorkId, date); + final Long houseWorkCompleteId = houseWorkCompleteService.create(houseWorkId, date, memberId); return new ResponseEntity<>(HouseWorkCompleteResponseDto.create(houseWorkCompleteId), HttpStatus.CREATED); } diff --git a/fairer-api/src/main/java/com/depromeet/fairer/domain/houseworkComplete/HouseworkComplete.java b/fairer-api/src/main/java/com/depromeet/fairer/domain/houseworkComplete/HouseworkComplete.java index 10ed39b..5c45483 100644 --- a/fairer-api/src/main/java/com/depromeet/fairer/domain/houseworkComplete/HouseworkComplete.java +++ b/fairer-api/src/main/java/com/depromeet/fairer/domain/houseworkComplete/HouseworkComplete.java @@ -2,6 +2,7 @@ import com.depromeet.fairer.domain.feedback.Feedback; import com.depromeet.fairer.domain.housework.HouseWork; +import com.depromeet.fairer.domain.member.Member; import lombok.*; import javax.persistence.*; @@ -35,13 +36,19 @@ public class HouseworkComplete { @OneToMany(mappedBy = "houseworkComplete", cascade = CascadeType.ALL, orphanRemoval = true) private List feedbackList; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id") + private Member member; + + public int countFeedback() { return this.feedbackList.size(); } - public HouseworkComplete(LocalDate scheduledDate, HouseWork houseWork, LocalDateTime successDateTime) { + public HouseworkComplete(LocalDate scheduledDate, HouseWork houseWork, LocalDateTime successDateTime, Member member) { this.setScheduledDate(scheduledDate); this.setHouseWork(houseWork); this.setSuccessDateTime(successDateTime); + this.setMember(member); } } \ No newline at end of file diff --git a/fairer-api/src/main/java/com/depromeet/fairer/domain/member/Member.java b/fairer-api/src/main/java/com/depromeet/fairer/domain/member/Member.java index c671943..5b35ad2 100644 --- a/fairer-api/src/main/java/com/depromeet/fairer/domain/member/Member.java +++ b/fairer-api/src/main/java/com/depromeet/fairer/domain/member/Member.java @@ -1,6 +1,7 @@ package com.depromeet.fairer.domain.member; import com.depromeet.fairer.domain.base.BaseTimeEntity; +import com.depromeet.fairer.domain.houseworkComplete.HouseworkComplete; import com.depromeet.fairer.dto.member.oauth.OAuthAttributes; import com.depromeet.fairer.domain.assignment.Assignment; import com.depromeet.fairer.domain.team.Team; @@ -54,6 +55,9 @@ public class Member extends BaseTimeEntity { @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) private List assignments; + @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) + private List houseworkCompletes; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; diff --git a/fairer-api/src/main/java/com/depromeet/fairer/service/houseworkComplete/HouseWorkCompleteService.java b/fairer-api/src/main/java/com/depromeet/fairer/service/houseworkComplete/HouseWorkCompleteService.java index 8d85703..ebd123b 100644 --- a/fairer-api/src/main/java/com/depromeet/fairer/service/houseworkComplete/HouseWorkCompleteService.java +++ b/fairer-api/src/main/java/com/depromeet/fairer/service/houseworkComplete/HouseWorkCompleteService.java @@ -36,12 +36,15 @@ public class HouseWorkCompleteService { private final HouseWorkCompleteRepository houseWorkCompleteRepository; private final MemberRepository memberRepository; - public Long create(Long houseWorkId, LocalDate scheduledDate) { + public Long create(Long houseWorkId, LocalDate scheduledDate, Long memberId) { HouseWork houseWork = houseWorkRepository.findById(houseWorkId) .orElseThrow(() -> new EntityNotFoundException("houseworkId: " + houseWorkId + "에 해당하는 집안일을 찾을 수 없습니다.")); - HouseworkComplete complete = new HouseworkComplete(scheduledDate, houseWork, LocalDateTime.now()); + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new EntityNotFoundException("memberId: " + memberId + "에 해당하는 멤버를 찾을 수 없습니다.")); + + HouseworkComplete complete = new HouseworkComplete(scheduledDate, houseWork, LocalDateTime.now(), member); return houseWorkCompleteRepository.save(complete).getHouseWorkCompleteId(); }