Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -73,21 +73,26 @@ public ResponseEntity<MyProfileResponse> getMyProfile(
public ResponseEntity<MyProfileResponse> updateMember(
@Login UserPrincipal userPrincipal,
@RequestPart @Valid MemberUpdateRequest req,
@SingleFileUpload @RequestPart("file") List<MultipartFile> files
@SingleFileUpload @RequestPart(value = "file", required = false) List<MultipartFile> files
) {
Long requestMemberId = userPrincipal.getId();
MultipartFile file = extractSingleMultipartFile(files);

log.info("Request received: update member ID: {} with request: {}",
requestMemberId, req);
logFileDetails(file, "Member profile image upload");

FileUploadResult fileUploadResult = fileService.uploadProfileImage(file, requestMemberId);
if (files != null && !files.isEmpty()) {
MultipartFile file = extractSingleMultipartFile(files);
logFileDetails(file, "Member profile image upload");
FileUploadResult fileUploadResult = fileService.uploadProfileImage(file, requestMemberId);
log.info("fileUploadResult: {}", fileUploadResult);
} else {
log.info("No profile image upload found");
}

Member updatedMember = memberUpdateService.update(requestMemberId, req);
log.info("Updated : Member ID: {} Updated successfully with nickname: {}, terms : {}",
updatedMember.getId(), updatedMember.getNickname(), updatedMember.getTerms());

MyProfileResponse myProfileResponse = MyProfileResponse.from(updatedMember, fileUploadResult.getFileUrl());
MyProfileResponse myProfileResponse = MyProfileResponse.from(updatedMember, cloudStorageService.getProfileImageUrl(updatedMember.getProfileImageKey()));
log.info("Response sent: MyProfileDto : {}", myProfileResponse);

return ResponseEntity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import lombok.extern.slf4j.Slf4j;
import org.fontory.fontorybe.authentication.adapter.inbound.annotation.Login;
import org.fontory.fontorybe.authentication.domain.UserPrincipal;
import org.fontory.fontorybe.file.application.port.CloudStorageService;
import org.fontory.fontorybe.file.application.port.FileService;
import org.fontory.fontorybe.file.domain.FileUploadResult;
import org.fontory.fontorybe.file.application.annotation.SingleFileUpload;
Expand All @@ -18,6 +19,7 @@
import org.fontory.fontorybe.member.domain.Member;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

Expand All @@ -33,6 +35,7 @@
@RequestMapping("/register")
@Tag(name = "사용자 - 신규", description = "회원가입/온보딩")
public class RegistrationController {
private final CloudStorageService cloudStorageService;
private final MemberLookupService memberLookupService;
private final MemberOnboardService memberOnboardService;
private final FileService fileService;
Expand Down Expand Up @@ -60,24 +63,29 @@ public ResponseEntity<Boolean> checkDuplicate(
public ResponseEntity<MemberCreateResponse> register(
@Login UserPrincipal user,
@RequestPart @Valid InitMemberInfoRequest req,
@SingleFileUpload @RequestPart("file") List<MultipartFile> files
@SingleFileUpload @RequestPart(value = "file", required = false) List<MultipartFile> files
) {
Long requestMemberId = user.getId();
MultipartFile file = extractSingleMultipartFile(files);

log.info("Request received: Create member ID: {} with request: {}",
requestMemberId, req);
logFileDetails(file, "Member profile image upload");

FileUploadResult fileUploadResult = fileService.uploadProfileImage(file, requestMemberId);
Member updatedMember = memberOnboardService.initNewMemberInfo(requestMemberId, req, fileUploadResult);
Member updatedMember;
if (files != null && !files.isEmpty()) {
MultipartFile file = extractSingleMultipartFile(files);
logFileDetails(file, "Member profile image upload");
FileUploadResult fileUploadResult = fileService.uploadProfileImage(file, requestMemberId);
updatedMember = memberOnboardService.initNewMemberInfo(requestMemberId, req, fileUploadResult);
} else {
log.info("No profile image upload found");
updatedMember = memberOnboardService.initNewMemberInfo(requestMemberId, req);
}

log.info("Response sent: Member ID: {} Created successfully with nickname: {}",
updatedMember.getId(), updatedMember.getNickname());

return ResponseEntity
.status(HttpStatus.CREATED)
.body(MemberCreateResponse.from(updatedMember, fileUploadResult.getFileUrl()));
.body(MemberCreateResponse.from(updatedMember, cloudStorageService.getProfileImageUrl(updatedMember.getProfileImageKey())));
}

private void logFileDetails(MultipartFile file, String context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
public interface MemberOnboardService {
Member fetchOrCreateMember(Provide p);
Member initNewMemberInfo(Long requestMemberId, InitMemberInfoRequest initMemberInfoRequest, FileUploadResult fileUploadResult);
Member initNewMemberInfo(Long requestMemberId, InitMemberInfoRequest initMemberInfoRequest);
}
16 changes: 16 additions & 0 deletions src/main/java/org/fontory/fontorybe/member/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,22 @@ public Member initNewMemberInfo(InitMemberInfoRequest initNewMemberInfo, String
.build();
}

public Member initNewMemberInfo(InitMemberInfoRequest initNewMemberInfo) {
return Member.builder()
.id(this.id)
.nickname(initNewMemberInfo.getNickname())
.gender(initNewMemberInfo.getGender())
.birth(initNewMemberInfo.getBirth())
.terms(initNewMemberInfo.getTerms())
.profileImageKey(this.profileImageKey)
.createdAt(this.createdAt)
.provideId(this.provideId)
.deletedAt(this.deletedAt)
.provideId(this.provideId)
.status(MemberStatus.ACTIVATE)
.build();
}

public Member update(MemberUpdateRequest memberUpdateRequest) {
return Member.builder()
//tobe update
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,22 @@ public Member initNewMemberInfo(Long requestMemberId,
return memberRepository.save(targetMember.initNewMemberInfo(initNewMemberInfoRequest, fileMetadata.getKey()));
}

@Override
@Transactional
public Member initNewMemberInfo(Long requestMemberId,
InitMemberInfoRequest initNewMemberInfoRequest) {
Member targetMember = memberLookupService.getOrThrowById(requestMemberId);
if (targetMember.getStatus() == MemberStatus.ACTIVATE) {
throw new MemberAlreadyJoinedException();
} else if (memberLookupService.existsByNickname(initNewMemberInfoRequest.getNickname())) {
throw new MemberDuplicateNameExistsException();
}

checkContainsBadWord(initNewMemberInfoRequest.getNickname());

return memberRepository.save(targetMember.initNewMemberInfo(initNewMemberInfoRequest));
}

private void checkContainsBadWord(String nickname) {
if (badWordFiltering.blankCheck(nickname)) {
throw new MemberContainsBadWordException();
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,8 @@ member.default.birth=1999-12-31
member.default.profile-image-key=default
member.default.terms-agree=false

# max file size
spring.servlet.multipart.maxFileSize=5MB
# max total file size
spring.servlet.multipart.maxRequestSize=10MB

Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

import static org.fontory.fontorybe.TestConstants.*;
import static org.fontory.fontorybe.TestConstants.UPDATE_MEMBER_TERMS;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
Expand Down Expand Up @@ -106,7 +107,7 @@ void updateMemberSuccessTest() throws Exception {
.andExpect(jsonPath("$.memberId", is(TEST_MEMBER_ID.intValue())))
.andExpect(jsonPath("$.nickname", is(UPDATE_MEMBER_NICKNAME)))
.andExpect(jsonPath("$.terms", is(UPDATE_MEMBER_TERMS)))
.andExpect(jsonPath("$.profileImageUrl", is(testMember.getProfileImageKey())))
.andExpect(jsonPath("$.profileImageUrl", containsString(testMember.getProfileImageKey())))
.andExpect(jsonPath("$.gender", is(testMember.getGender().name())))
.andExpect(jsonPath("$.birth", is(testMember.getBirth().toString())));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ public TestContainer() {
registrationController = RegistrationController.builder()
.memberLookupService(memberLookupService)
.memberOnboardService(memberOnboardService)
.cloudStorageService(cloudStorageService)
.fileService(fileService)
.build();
}
Expand Down
Loading