From a4a310c753f1239092d2e45b47531e5203680fc3 Mon Sep 17 00:00:00 2001 From: DH CHOI Date: Sat, 21 Oct 2023 12:29:35 +0900 Subject: [PATCH] =?UTF-8?q?feature:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=82=AC=EC=A7=84=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/DeleteUserImageService.java | 34 +++++++++++++++++++ .../user/presentation/UserController.java | 15 +++++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/main/java/daybyquest/user/application/DeleteUserImageService.java diff --git a/src/main/java/daybyquest/user/application/DeleteUserImageService.java b/src/main/java/daybyquest/user/application/DeleteUserImageService.java new file mode 100644 index 0000000..26c62cc --- /dev/null +++ b/src/main/java/daybyquest/user/application/DeleteUserImageService.java @@ -0,0 +1,34 @@ +package daybyquest.user.application; + +import daybyquest.image.vo.BaseImageProperties; +import daybyquest.image.vo.Image; +import daybyquest.user.domain.User; +import daybyquest.user.domain.UserImages; +import daybyquest.user.domain.UserRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class DeleteUserImageService { + + private final UserRepository userRepository; + + private final UserImages userImages; + + private final BaseImageProperties baseImageProperties; + + public DeleteUserImageService(final UserRepository userRepository, final UserImages userImages, + final BaseImageProperties baseImageProperties) { + this.userRepository = userRepository; + this.userImages = userImages; + this.baseImageProperties = baseImageProperties; + } + + @Transactional + public void invoke(final Long loginId) { + final User user = userRepository.getById(loginId); + userImages.remove(user.getImageIdentifier()); + user.updateImage(new Image(baseImageProperties.getUserIdentifier())); + } +} + diff --git a/src/main/java/daybyquest/user/presentation/UserController.java b/src/main/java/daybyquest/user/presentation/UserController.java index 3dc4d86..eb6d400 100644 --- a/src/main/java/daybyquest/user/presentation/UserController.java +++ b/src/main/java/daybyquest/user/presentation/UserController.java @@ -2,6 +2,7 @@ import daybyquest.auth.Authorization; import daybyquest.auth.UserId; +import daybyquest.user.application.DeleteUserImageService; import daybyquest.user.application.SaveUserService; import daybyquest.user.application.UpdateUserImageService; import daybyquest.user.application.UpdateUserInterestService; @@ -13,6 +14,7 @@ import daybyquest.user.dto.request.UpdateUserVisibilityRequest; import jakarta.validation.Valid; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -33,15 +35,19 @@ public class UserController { private final UpdateUserImageService updateUserImageService; + private final DeleteUserImageService deleteUserImageService; + public UserController(final SaveUserService saveUserService, final UpdateUserService updateUserService, final UpdateVisibilityService updateVisibilityService, final UpdateUserInterestService updateUserInterestService, - final UpdateUserImageService updateUserImageService) { + final UpdateUserImageService updateUserImageService, + final DeleteUserImageService deleteUserImageService) { this.saveUserService = saveUserService; this.updateUserService = updateUserService; this.updateVisibilityService = updateVisibilityService; this.updateUserInterestService = updateUserInterestService; this.updateUserImageService = updateUserImageService; + this.deleteUserImageService = deleteUserImageService; } @PostMapping("/profile") @@ -81,4 +87,11 @@ public ResponseEntity updateUserImage(@UserId final Long loginId, updateUserImageService.invoke(loginId, multipartFile); return ResponseEntity.ok().build(); } + + @DeleteMapping("/profile/image") + @Authorization + public ResponseEntity deleteUserImage(@UserId final Long loginId) { + deleteUserImageService.invoke(loginId); + return ResponseEntity.ok().build(); + } }