From 98354d78cf49ec38a2e36043036aed858c86abfb Mon Sep 17 00:00:00 2001 From: yunji118 Date: Thu, 11 Jan 2024 19:18:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[feat]=20=EC=96=B8=EC=96=B4,=20=EC=A7=80?= =?UTF-8?q?=EC=97=AD=20=EB=B3=80=EA=B2=BD=20#22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ALGo/ALGo_server/entity/User.java | 8 ++++++ .../mypage/Controller/MyPageController.java | 22 ++++++++++++++++ .../mypage/Dto/ChangeInfoRequestDto.java | 10 +++++++ .../mypage/Service/MyPageService.java | 26 +++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java create mode 100644 src/main/java/com/ALGo/ALGo_server/mypage/Dto/ChangeInfoRequestDto.java create mode 100644 src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java diff --git a/src/main/java/com/ALGo/ALGo_server/entity/User.java b/src/main/java/com/ALGo/ALGo_server/entity/User.java index 3dfbda5..285f50d 100644 --- a/src/main/java/com/ALGo/ALGo_server/entity/User.java +++ b/src/main/java/com/ALGo/ALGo_server/entity/User.java @@ -1,5 +1,6 @@ package com.ALGo.ALGo_server.entity; +import com.ALGo.ALGo_server.mypage.Dto.ChangeInfoRequestDto; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -32,6 +33,13 @@ public class User implements UserDetails { @Enumerated(EnumType.STRING) private Role role; + public void updateInfo(ChangeInfoRequestDto requestDto){ + this.language = requestDto.getLanguage(); + this.city = requestDto.getCity(); + this.gu = requestDto.getGu(); + } + + public void encodePassword(PasswordEncoder passwordEncoder){ this.password = passwordEncoder.encode(password); } diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java b/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java new file mode 100644 index 0000000..c46eb45 --- /dev/null +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java @@ -0,0 +1,22 @@ +package com.ALGo.ALGo_server.mypage.Controller; + +import com.ALGo.ALGo_server.entity.User; +import com.ALGo.ALGo_server.mypage.Dto.ChangeInfoRequestDto; +import com.ALGo.ALGo_server.mypage.Service.MyPageService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/mypage") +public class MyPageController { + private final MyPageService myPageService; + + @PutMapping("/change") + public ResponseEntity changeInfo(@AuthenticationPrincipal User user, @RequestBody ChangeInfoRequestDto requestDto){ + return myPageService.changeInfo(user, requestDto); + } + +} diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Dto/ChangeInfoRequestDto.java b/src/main/java/com/ALGo/ALGo_server/mypage/Dto/ChangeInfoRequestDto.java new file mode 100644 index 0000000..4bde38e --- /dev/null +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Dto/ChangeInfoRequestDto.java @@ -0,0 +1,10 @@ +package com.ALGo.ALGo_server.mypage.Dto; + +import lombok.Getter; + +@Getter +public class ChangeInfoRequestDto { + private String language; + private String city; + private String gu; +} diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java b/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java new file mode 100644 index 0000000..0d61e71 --- /dev/null +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java @@ -0,0 +1,26 @@ +package com.ALGo.ALGo_server.mypage.Service; + +import com.ALGo.ALGo_server.entity.User; +import com.ALGo.ALGo_server.mypage.Dto.ChangeInfoRequestDto; +import com.ALGo.ALGo_server.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.server.ResponseStatusException; + +@Service +@RequiredArgsConstructor +public class MyPageService { + private final UserRepository userRepository; + + @Transactional + public ResponseEntity changeInfo(@AuthenticationPrincipal User user, ChangeInfoRequestDto requestDto){ + user.updateInfo(requestDto); + userRepository.save(user); + return new ResponseEntity(HttpStatus.OK); + } +} From 2c32736e5a88c93c045f61dbe39efd6006ef3a47 Mon Sep 17 00:00:00 2001 From: yunji118 Date: Thu, 11 Jan 2024 19:31:43 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0=20#22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/Controller/MyPageController.java | 6 ++++++ .../mypage/Dto/MyInfoResponseDto.java | 15 +++++++++++++++ .../mypage/Service/MyPageService.java | 16 +++++++++++++--- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/ALGo/ALGo_server/mypage/Dto/MyInfoResponseDto.java diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java b/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java index c46eb45..a6ada73 100644 --- a/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Controller/MyPageController.java @@ -2,6 +2,7 @@ import com.ALGo.ALGo_server.entity.User; import com.ALGo.ALGo_server.mypage.Dto.ChangeInfoRequestDto; +import com.ALGo.ALGo_server.mypage.Dto.MyInfoResponseDto; import com.ALGo.ALGo_server.mypage.Service.MyPageService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -14,6 +15,11 @@ public class MyPageController { private final MyPageService myPageService; + @GetMapping() + public MyInfoResponseDto getMyInfo(@AuthenticationPrincipal User user){ + return myPageService.getMyInfo(user); + } + @PutMapping("/change") public ResponseEntity changeInfo(@AuthenticationPrincipal User user, @RequestBody ChangeInfoRequestDto requestDto){ return myPageService.changeInfo(user, requestDto); diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Dto/MyInfoResponseDto.java b/src/main/java/com/ALGo/ALGo_server/mypage/Dto/MyInfoResponseDto.java new file mode 100644 index 0000000..797ab69 --- /dev/null +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Dto/MyInfoResponseDto.java @@ -0,0 +1,15 @@ +package com.ALGo.ALGo_server.mypage.Dto; + +import com.ALGo.ALGo_server.entity.User; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class MyInfoResponseDto { + private String email; + private String language; + private String city; + private String gu; + +} diff --git a/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java b/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java index 0d61e71..2314f6a 100644 --- a/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java +++ b/src/main/java/com/ALGo/ALGo_server/mypage/Service/MyPageService.java @@ -2,12 +2,11 @@ import com.ALGo.ALGo_server.entity.User; import com.ALGo.ALGo_server.mypage.Dto.ChangeInfoRequestDto; +import com.ALGo.ALGo_server.mypage.Dto.MyInfoResponseDto; import com.ALGo.ALGo_server.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; @@ -17,8 +16,19 @@ public class MyPageService { private final UserRepository userRepository; + @Transactional(readOnly = true) + public MyInfoResponseDto getMyInfo(User user){ + MyInfoResponseDto responseDto = MyInfoResponseDto.builder() + .email(user.getEmail()) + .language(user.getLanguage()) + .city(user.getCity()) + .gu(user.getGu()) + .build(); + return responseDto; + } + @Transactional - public ResponseEntity changeInfo(@AuthenticationPrincipal User user, ChangeInfoRequestDto requestDto){ + public ResponseEntity changeInfo(User user, ChangeInfoRequestDto requestDto){ user.updateInfo(requestDto); userRepository.save(user); return new ResponseEntity(HttpStatus.OK);