From 8f1777617d633e6ef64d4c1095d18b1ca33c330d Mon Sep 17 00:00:00 2001 From: jaeuk520 Date: Mon, 28 Oct 2024 16:03:20 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=A4=EB=B2=84=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EC=97=90=20=EC=84=B1=EB=B3=84=20=ED=95=84=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20&=20=EC=97=AC=ED=96=89=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=A0=80=EC=9E=A5=20=EC=8B=9C=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ku/covigator/controller/TravelStyleController.java | 2 +- src/main/java/com/ku/covigator/domain/member/Gender.java | 8 ++++++++ src/main/java/com/ku/covigator/domain/member/Member.java | 8 ++++++++ .../ku/covigator/dto/request/PostTravelStyleRequest.java | 3 ++- .../java/com/ku/covigator/service/TravelStyleService.java | 6 ++++-- .../com/ku/covigator/service/TravelStyleServiceTest.java | 6 ++++-- 6 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/ku/covigator/domain/member/Gender.java diff --git a/src/main/java/com/ku/covigator/controller/TravelStyleController.java b/src/main/java/com/ku/covigator/controller/TravelStyleController.java index 11986f5..a9f6bd7 100644 --- a/src/main/java/com/ku/covigator/controller/TravelStyleController.java +++ b/src/main/java/com/ku/covigator/controller/TravelStyleController.java @@ -23,7 +23,7 @@ public class TravelStyleController { @PostMapping public ResponseEntity saveTravelStyle(@Parameter(hidden = true) @LoggedInMemberId Long memberId, @RequestBody PostTravelStyleRequest request) { - travelStyleService.saveTravelStyle(memberId, request.toEntity()); + travelStyleService.saveTravelStyle(memberId, request.toEntity(), request.gender()); return ResponseEntity.ok().build(); } diff --git a/src/main/java/com/ku/covigator/domain/member/Gender.java b/src/main/java/com/ku/covigator/domain/member/Gender.java new file mode 100644 index 0000000..047cbee --- /dev/null +++ b/src/main/java/com/ku/covigator/domain/member/Gender.java @@ -0,0 +1,8 @@ +package com.ku.covigator.domain.member; + +import lombok.Getter; + +@Getter +public enum Gender { + MALE, FEMALE +} diff --git a/src/main/java/com/ku/covigator/domain/member/Member.java b/src/main/java/com/ku/covigator/domain/member/Member.java index 7f4eb98..419ff98 100644 --- a/src/main/java/com/ku/covigator/domain/member/Member.java +++ b/src/main/java/com/ku/covigator/domain/member/Member.java @@ -31,6 +31,10 @@ public class Member extends BaseTime { @Column(name = "phone_number") private String phoneNumber; + @Column(name = "gender") + @Enumerated(value = EnumType.STRING) + private Gender gender; + @Column(name = "password") private String password; @@ -88,4 +92,8 @@ public void updateNickname(String nickname) { this.nickname = nickname; } + public void updateGender(Gender gender) { + this.gender = gender; + } + } diff --git a/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java b/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java index 959abc2..fd6e3e5 100644 --- a/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java +++ b/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java @@ -2,13 +2,14 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.travelstyle.*; import lombok.Builder; @Builder @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public record PostTravelStyleRequest(AreaType areaType, Familiarity familiarity, ActivityType activityType, - PlanningType planningType, PhotoPriority photoPriority, Popularity popularity) { + PlanningType planningType, PhotoPriority photoPriority, Popularity popularity, Gender gender) { public TravelStyle toEntity() { return TravelStyle.builder() diff --git a/src/main/java/com/ku/covigator/service/TravelStyleService.java b/src/main/java/com/ku/covigator/service/TravelStyleService.java index c5ef8c1..a3c5e8f 100644 --- a/src/main/java/com/ku/covigator/service/TravelStyleService.java +++ b/src/main/java/com/ku/covigator/service/TravelStyleService.java @@ -1,5 +1,6 @@ package com.ku.covigator.service; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.member.Member; import com.ku.covigator.domain.travelstyle.TravelStyle; import com.ku.covigator.exception.notfound.NotFoundMemberException; @@ -17,17 +18,18 @@ public class TravelStyleService { private final TravelStyleRepository travelStyleRepository; private final MemberRepository memberRepository; - public void saveTravelStyle(Long memberId, TravelStyle travelStyle) { + public void saveTravelStyle(Long memberId, TravelStyle travelStyle, Gender gender) { TravelStyle savedTravelStyle = travelStyleRepository.save(travelStyle); Member savedMember = memberRepository.findById(memberId).orElseThrow(NotFoundMemberException::new); savedMember.putTravelStyle(savedTravelStyle); + savedMember.updateGender(gender); } public void updateTravelStyle(Long memberId, TravelStyle travelStyle) { Member savedMember = memberRepository.findById(memberId).orElseThrow(NotFoundMemberException::new); // 여행 스타일 정보가 없으면 새로 저장한다. if(savedMember.getTravelStyle() == null) { - saveTravelStyle(memberId, travelStyle); + saveTravelStyle(memberId, travelStyle, null); } // 여행 스타일 정보가 저장되어 있으면 수정한다. savedMember.updateTravelStyle(travelStyle); diff --git a/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java b/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java index 4510fbb..c8bc44f 100644 --- a/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java +++ b/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java @@ -1,5 +1,6 @@ package com.ku.covigator.service; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.member.Member; import com.ku.covigator.domain.member.Platform; import com.ku.covigator.domain.travelstyle.*; @@ -43,7 +44,7 @@ void saveTravelStyle() { memberRepository.save(member); //when - travelStyleService.saveTravelStyle(member.getId(), travelStyle); + travelStyleService.saveTravelStyle(member.getId(), travelStyle, Gender.MALE); List travelStyles = travelStyleRepository.findAll(); TravelStyle savedTravelStyle = travelStyles.get(0); Member savedMember = memberRepository.findById(member.getId()).get(); @@ -51,6 +52,7 @@ void saveTravelStyle() { //then assertAll( () -> assertThat(savedTravelStyle.getId()).isEqualTo(travelStyle.getId()), + () -> assertThat(savedMember.getGender()).isEqualTo(Gender.MALE), () -> assertThat(savedMember.getTravelStyle()).usingRecursiveComparison().isEqualTo(travelStyle) ); } @@ -62,7 +64,7 @@ void saveTravelStyleFailsWhenNoMemberExists() { TravelStyle travelStyle = createTravelStyle(); //when //then - assertThatThrownBy(() -> travelStyleService.saveTravelStyle(1L, travelStyle)) + assertThatThrownBy(() -> travelStyleService.saveTravelStyle(1L, travelStyle, null)) .isInstanceOf(NotFoundMemberException.class); }