diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingRepository.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingRepository.java new file mode 100644 index 00000000..c122f187 --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingRepository.java @@ -0,0 +1,4 @@ +package org.depromeet.sambad.moring.meeting.handWaving.application; + +public interface HandWavingRepository { +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingService.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingService.java new file mode 100644 index 00000000..e282ef9c --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/application/HandWavingService.java @@ -0,0 +1,13 @@ +package org.depromeet.sambad.moring.meeting.handWaving.application; + +import org.depromeet.sambad.moring.meeting.member.application.MeetingMemberService; +import org.springframework.stereotype.Service; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class HandWavingService { + private final HandWavingRepository handWavingRepository; + private final MeetingMemberService meetingMemberService; +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWaving.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWaving.java new file mode 100644 index 00000000..638766c6 --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWaving.java @@ -0,0 +1,41 @@ +package org.depromeet.sambad.moring.meeting.handWaving.domain; + +import static jakarta.persistence.EnumType.STRING; + +import org.depromeet.sambad.moring.common.domain.BaseTimeEntity; +import org.depromeet.sambad.moring.meeting.member.domain.MeetingMember; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class HandWaving extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "hand_waving_id") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "sender_id") + private MeetingMember sender; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "receiver_id") + private MeetingMember receiver; + + @Enumerated(STRING) + private HandWavingStatus status; +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWavingStatus.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWavingStatus.java new file mode 100644 index 00000000..6aa65c08 --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/domain/HandWavingStatus.java @@ -0,0 +1,5 @@ +package org.depromeet.sambad.moring.meeting.handWaving.domain; + +public enum HandWavingStatus { + REQUESTED, ACCEPTED, REJECTED +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingJpaRepository.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingJpaRepository.java new file mode 100644 index 00000000..f2004b5e --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingJpaRepository.java @@ -0,0 +1,7 @@ +package org.depromeet.sambad.moring.meeting.handWaving.infrastructure; + +import org.depromeet.sambad.moring.meeting.handWaving.domain.HandWaving; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface HandWavingJpaRepository extends JpaRepository { +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingRepositoryImpl.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingRepositoryImpl.java new file mode 100644 index 00000000..f5c42e3d --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/infrastructure/HandWavingRepositoryImpl.java @@ -0,0 +1,12 @@ +package org.depromeet.sambad.moring.meeting.handWaving.infrastructure; + +import org.depromeet.sambad.moring.meeting.handWaving.application.HandWavingRepository; +import org.springframework.stereotype.Repository; + +import lombok.RequiredArgsConstructor; + +@Repository +@RequiredArgsConstructor +public class HandWavingRepositoryImpl implements HandWavingRepository { + private final HandWavingJpaRepository handWavingJpaRepository; +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/presentation/HandWavingController.java b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/presentation/HandWavingController.java new file mode 100644 index 00000000..903f2908 --- /dev/null +++ b/src/main/java/org/depromeet/sambad/moring/meeting/handWaving/presentation/HandWavingController.java @@ -0,0 +1,16 @@ +package org.depromeet.sambad.moring.meeting.handWaving.presentation; + +import org.depromeet.sambad.moring.meeting.handWaving.application.HandWavingService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; + +@Tag(name = "손 흔들어 인사하기", description = "손 흔들어 인사하기 관련 api / 담당자 : 이한음") +@RequiredArgsConstructor +@RestController +@RequestMapping("/v1") +public class HandWavingController { + private final HandWavingService handWavingService; +} diff --git a/src/main/java/org/depromeet/sambad/moring/meeting/member/domain/MeetingMember.java b/src/main/java/org/depromeet/sambad/moring/meeting/member/domain/MeetingMember.java index 761f83a5..912473fb 100644 --- a/src/main/java/org/depromeet/sambad/moring/meeting/member/domain/MeetingMember.java +++ b/src/main/java/org/depromeet/sambad/moring/meeting/member/domain/MeetingMember.java @@ -13,6 +13,7 @@ import org.depromeet.sambad.moring.file.domain.FileEntity; import org.depromeet.sambad.moring.meeting.meeting.domain.Meeting; import org.depromeet.sambad.moring.meeting.member.presentation.request.MeetingMemberPersistRequest; +import org.depromeet.sambad.moring.meeting.handWaving.domain.HandWaving; import org.depromeet.sambad.moring.meeting.question.domain.MeetingQuestion; import org.depromeet.sambad.moring.meeting.question.presentation.exception.InvalidMeetingMemberTargetException; import org.depromeet.sambad.moring.user.domain.User; @@ -81,6 +82,12 @@ public class MeetingMember extends BaseTimeEntity implements Comparable meetingMemberHobbies = new ArrayList<>(); + @OneToMany(mappedBy = "sender", fetch = FetchType.LAZY) + private List sentHandWavings = new ArrayList<>(); + + @OneToMany(mappedBy = "receiver", fetch = FetchType.LAZY) + private List receivedHandWavings = new ArrayList<>(); + private MeetingMember(Meeting meeting, User user, FileEntity profileImageFile, MeetingMemberRole role, String name, Gender gender, LocalDate birth, String job, String location, MBTI mbti, String introduction) { this.meeting = meeting;