diff --git a/src/main/java/com/keepgoing/keepserver/domain/user/controller/UserController.java b/src/main/java/com/keepgoing/keepserver/domain/user/controller/UserController.java index 2082a30..ec6ec2a 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/user/controller/UserController.java +++ b/src/main/java/com/keepgoing/keepserver/domain/user/controller/UserController.java @@ -1,8 +1,8 @@ package com.keepgoing.keepserver.domain.user.controller; -import com.keepgoing.keepserver.domain.user.dto.request.StatusRequest; import com.keepgoing.keepserver.domain.user.dto.request.LoginRequest; import com.keepgoing.keepserver.domain.user.dto.request.SignupRequest; +import com.keepgoing.keepserver.domain.user.dto.request.StatusRequest; import com.keepgoing.keepserver.domain.user.dto.request.UserInfoRequest; import com.keepgoing.keepserver.domain.user.service.user.UserService; import com.keepgoing.keepserver.global.exception.BusinessException; @@ -35,6 +35,12 @@ public ResponseEntity registerAndAuthenticateUser(@RequestBody SignupRequest return ResponseEntity.ok().body(userService.registerUser(signupRequest)); } + @Operation(summary = "회원탈퇴", description = "회원탈퇴를 진행합니다.") + @DeleteMapping("/delete/{userId}") + public ResponseEntity withdrawMember(@PathVariable Long userId){ + return ResponseEntity.ok().body(userService.deleteUser(userId)); + } + @Operation(summary = "프로필", description = "토큰을 이용하여 유저 정보와 대여한 기자재 및 도서 목록을 조회합니다.") @GetMapping("/userinfo") public ResponseEntity provideUserInfo(Authentication authentication) { @@ -57,4 +63,4 @@ public ResponseEntity getNoticeByUser(Authentication authentication){ public ResponseEntity updateUserStatus(@Valid @RequestBody StatusRequest statusRequest, Authentication authentication){ return ResponseEntity.ok().body(userService.updateUserStatus(statusRequest,authentication)); } -} \ No newline at end of file +} diff --git a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserService.java b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserService.java index ef68758..76cb581 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserService.java +++ b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserService.java @@ -19,6 +19,8 @@ public interface UserService { ResponseEntity updateUserData(UserInfoRequest request, Authentication authentication); + ResponseEntity deleteUser(Long id); + UserDto provideUserInfo(Authentication authentication); JwtResponse authenticateAndGenerateJWT(String email, String password); diff --git a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java index 7040b62..0c83b01 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java +++ b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java @@ -56,6 +56,17 @@ public ResponseEntity updateUserData(UserInfoRequest request, Authentica return ResponseEntity.ok().body(""); } + @Override + @Transactional + public ResponseEntity deleteUser(Long id) { + try { + userRepository.deleteById(id); + return ResponseEntity.ok().body("회원탈퇴 성공"); + } catch (Exception ex) { + throw new RuntimeException("회원탈퇴 실패", ex); + } + } + @Override public UserDto provideUserInfo(Authentication authentication) { UserDetailsImpl ud = (UserDetailsImpl) authentication.getPrincipal();