diff --git a/src/main/java/poomasi/domain/member/controller/MemberFarmerController.java b/src/main/java/poomasi/domain/member/controller/MemberFarmerController.java index 8fdbc965..4e1d5014 100644 --- a/src/main/java/poomasi/domain/member/controller/MemberFarmerController.java +++ b/src/main/java/poomasi/domain/member/controller/MemberFarmerController.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import poomasi.domain.auth.security.userdetail.UserDetailsImpl; +import poomasi.domain.member.dto.request.ConvertToFarmerRequest; import poomasi.domain.member.dto.request.FarmerUpdateRequest; import poomasi.domain.member.dto.response.FarmerResponse; import poomasi.domain.member.entity.Member; @@ -23,9 +24,10 @@ public class MemberFarmerController { @PutMapping("/to-farmer") @Secured("ROLE_CUSTOMER") - public ResponseEntity convertToFarmer(@AuthenticationPrincipal UserDetailsImpl userDetails) { + public ResponseEntity convertToFarmer(@AuthenticationPrincipal UserDetailsImpl userDetails, + @RequestBody ConvertToFarmerRequest convertToFarmerRequest) { Member member = userDetails.getMember(); - memberFarmerService.convertToFarmer(member); + memberFarmerService.convertToFarmer(member, convertToFarmerRequest); return ResponseEntity.noContent().build(); } diff --git a/src/main/java/poomasi/domain/member/dto/request/ConvertToFarmerRequest.java b/src/main/java/poomasi/domain/member/dto/request/ConvertToFarmerRequest.java new file mode 100644 index 00000000..edfce701 --- /dev/null +++ b/src/main/java/poomasi/domain/member/dto/request/ConvertToFarmerRequest.java @@ -0,0 +1,17 @@ +package poomasi.domain.member.dto.request; + +import poomasi.domain.store.dto.StoreRegisterRequest; + +public record ConvertToFarmerRequest( + String name, + String address, + String phone +) { + public StoreRegisterRequest toStoreRegisterRequest() { + return new StoreRegisterRequest( + name, + address, + phone + ); + } +} \ No newline at end of file diff --git a/src/main/java/poomasi/domain/member/service/MemberFarmerService.java b/src/main/java/poomasi/domain/member/service/MemberFarmerService.java index dd7a1a1b..4da437bf 100644 --- a/src/main/java/poomasi/domain/member/service/MemberFarmerService.java +++ b/src/main/java/poomasi/domain/member/service/MemberFarmerService.java @@ -3,10 +3,13 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import poomasi.domain.member.dto.request.ConvertToFarmerRequest; import poomasi.domain.member.dto.request.FarmerUpdateRequest; import poomasi.domain.member.entity.Member; import poomasi.domain.member.repository.MemberRepository; +import poomasi.domain.store.dto.StoreRegisterRequest; import poomasi.domain.store.entity.Store; +import poomasi.domain.store.service.StoreService; import poomasi.global.error.BusinessException; import static poomasi.domain.member.entity.Role.ROLE_FARMER; @@ -20,13 +23,18 @@ public class MemberFarmerService { private final MemberRepository memberRepository; private final MemberService memberService; + private final StoreService storeService; @Transactional - public void convertToFarmer(Member member) { + public void convertToFarmer(Member member, ConvertToFarmerRequest convertToFarmerRequest) { if (member.isFarmer()) { throw new BusinessException(MEMBER_ALREADY_FARMER); } + StoreRegisterRequest storeRegisterRequest = convertToFarmerRequest.toStoreRegisterRequest(); + + storeService.addStore(storeRegisterRequest,member); + member.setAddress(null, null, null, null); member.setRole(ROLE_FARMER); memberRepository.save(member); diff --git a/src/main/java/poomasi/domain/store/dto/StoreRegisterRequest.java b/src/main/java/poomasi/domain/store/dto/StoreRegisterRequest.java index 87d81a31..101d444f 100644 --- a/src/main/java/poomasi/domain/store/dto/StoreRegisterRequest.java +++ b/src/main/java/poomasi/domain/store/dto/StoreRegisterRequest.java @@ -1,15 +1,12 @@ package poomasi.domain.store.dto; -import org.hibernate.annotations.Comment; import poomasi.domain.member.entity.Member; import poomasi.domain.store.entity.Store; public record StoreRegisterRequest( String name, String address, - String phone, - @Comment("사업자 번호") - String businessNumber + String phone ) { public Store toEntity(Member member) { @@ -17,7 +14,6 @@ public Store toEntity(Member member) { .name(name) .address(address) .phone(phone) - .businessNumber(businessNumber) .owner(member) .build(); } diff --git a/src/main/java/poomasi/domain/store/entity/Store.java b/src/main/java/poomasi/domain/store/entity/Store.java index fad64b9a..107e74ff 100644 --- a/src/main/java/poomasi/domain/store/entity/Store.java +++ b/src/main/java/poomasi/domain/store/entity/Store.java @@ -60,7 +60,6 @@ public void updateStore(StoreRegisterRequest storeRegisterRequest) { this.name = storeRegisterRequest.name(); this.address = storeRegisterRequest.address(); this.phone = storeRegisterRequest.phone(); - this.businessNumber = storeRegisterRequest.businessNumber(); } public void addProduct(Product saveProduct) { diff --git a/src/test/java/poomasi/domain/member/service/MemberFarmerServiceTest.java b/src/test/java/poomasi/domain/member/service/MemberFarmerServiceTest.java index e65a8605..4a8c88d0 100644 --- a/src/test/java/poomasi/domain/member/service/MemberFarmerServiceTest.java +++ b/src/test/java/poomasi/domain/member/service/MemberFarmerServiceTest.java @@ -7,11 +7,13 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import poomasi.domain.member.dto.request.ConvertToFarmerRequest; import poomasi.domain.member.dto.request.FarmerUpdateRequest; import poomasi.domain.member.entity.Member; import poomasi.domain.member.entity.Role; import poomasi.domain.member.repository.MemberRepository; import poomasi.domain.store.entity.Store; +import poomasi.domain.store.service.StoreService; import poomasi.global.error.BusinessError; import poomasi.global.error.BusinessException; @@ -30,6 +32,9 @@ class MemberFarmerServiceTest { @Mock private MemberService memberService; + @Mock + private StoreService storeService; + @InjectMocks private MemberFarmerService memberFarmerService; @@ -59,10 +64,11 @@ void setUp() { @DisplayName("회원 -> 농부로 변환 성공 테스트") void convertToFarmer_success() { // given + ConvertToFarmerRequest convertToFarmerRequest = new ConvertToFarmerRequest("name", "address", "phone"); given(memberRepository.save(customerMember)).willReturn(customerMember); // when - memberFarmerService.convertToFarmer(customerMember); + memberFarmerService.convertToFarmer(customerMember, convertToFarmerRequest); // then assertEquals(Role.ROLE_FARMER, customerMember.getRole()); @@ -72,8 +78,9 @@ void convertToFarmer_success() { @Test @DisplayName("이미 농부인 회원 변환 시도 시 예외 발생 테스트") void convertToFarmer_alreadyFarmer() { + ConvertToFarmerRequest convertToFarmerRequest = new ConvertToFarmerRequest("name", "address", "phone"); // when & then - assertThatThrownBy(() -> memberFarmerService.convertToFarmer(farmerMember)) + assertThatThrownBy(() -> memberFarmerService.convertToFarmer(farmerMember, convertToFarmerRequest)) .isInstanceOf(BusinessException.class) .hasFieldOrPropertyWithValue("businessError", BusinessError.MEMBER_ALREADY_FARMER); }