From c25b3bc9fb8b1d111072629682680a5885084ebf Mon Sep 17 00:00:00 2001 From: twknds Date: Thu, 28 Jul 2022 06:05:36 +0900 Subject: [PATCH 01/10] =?UTF-8?q?[feat]=20:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=EA=B8=B0=EB=8A=A5=20Controller=20=EB=B0=8F=20service?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- myapplication.log.2022-07-25.0.gz | Bin 0 -> 2175 bytes myapplication.log.2022-07-26.0.gz | Bin 0 -> 13909 bytes .../user/controller/UserController.java | 24 +++++++++ .../domain/user/dto/UserCreateRequestDto.java | 13 +++++ .../halil/halil/domain/user/entity/User.java | 30 +++++++++++ .../user/exception/NotExistUserException.java | 7 +++ .../user/repository/UserRepository.java | 10 ++++ .../user/service/UserCreateServiceimpl.java | 26 +++++++++ .../domain/user/service/UserService.java | 11 ++++ .../halil/global/response/CommonResponse.java | 51 ++++++++++++++++++ src/main/resources/Application.yml | 13 +++++ .../halil/domain/user/UserServiceTest.java | 38 +++++++++++++ 12 files changed, 223 insertions(+) create mode 100644 myapplication.log.2022-07-25.0.gz create mode 100644 myapplication.log.2022-07-26.0.gz create mode 100644 src/main/java/com/halil/halil/domain/user/controller/UserController.java create mode 100644 src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java create mode 100644 src/main/java/com/halil/halil/domain/user/entity/User.java create mode 100644 src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java create mode 100644 src/main/java/com/halil/halil/domain/user/repository/UserRepository.java create mode 100644 src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java create mode 100644 src/main/java/com/halil/halil/domain/user/service/UserService.java create mode 100644 src/main/java/com/halil/halil/global/response/CommonResponse.java create mode 100644 src/main/resources/Application.yml create mode 100644 src/test/java/com/halil/halil/domain/user/UserServiceTest.java diff --git a/myapplication.log.2022-07-25.0.gz b/myapplication.log.2022-07-25.0.gz new file mode 100644 index 0000000000000000000000000000000000000000..bbde10a624f7d1557f9251244bbe91574aea4426 GIT binary patch literal 2175 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�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 CreateUser(@RequestBody UserCreateRequestDto userCreateRequestDto){ + return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); + } + +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java new file mode 100644 index 0000000..93d3229 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java @@ -0,0 +1,13 @@ +package com.halil.halil.domain.user.dto; + +import lombok.*; + +@Getter +public class UserCreateRequestDto { + String email; + String nickName; + public UserCreateRequestDto(String email, String nickName){ + this.email=email; + this.nickName=nickName; + } +} diff --git a/src/main/java/com/halil/halil/domain/user/entity/User.java b/src/main/java/com/halil/halil/domain/user/entity/User.java new file mode 100644 index 0000000..153b125 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/entity/User.java @@ -0,0 +1,30 @@ +package com.halil.halil.domain.user.entity; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Table(name = "users") +@NoArgsConstructor +@Getter +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "USER_ID") + private Long id; + + @Column(nullable = false, unique = true) + private String nickName; + + @Column(nullable = false, unique = true) + private String email; + + @Builder + public User(String nickName, String email){ + this.nickName = nickName; + this.email = email; + } +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java b/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java new file mode 100644 index 0000000..bb7499a --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java @@ -0,0 +1,7 @@ +package com.halil.halil.domain.user.exception; + +public class NotExistUserException extends RuntimeException{ + public NotExistUserException(String message){ + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java new file mode 100644 index 0000000..e8764cb --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java @@ -0,0 +1,10 @@ +package com.halil.halil.domain.user.repository; + +import com.halil.halil.domain.user.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + Optional findUserByEmail(String email); +} diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java new file mode 100644 index 0000000..a74cc87 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java @@ -0,0 +1,26 @@ +package com.halil.halil.domain.user.service; + +import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.entity.User; +import com.halil.halil.domain.user.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Primary; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@Primary +@RequiredArgsConstructor +public class UserCreateServiceimpl implements UserService{ + private final UserRepository userRepository; + + @Override + public Optional CreateUser(UserCreateRequestDto userCreateRequestDto){ + User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getEmail()).build(); + userRepository.save(user); + Optional userid=userRepository.findById(user.getId()); + return userid; + } +} diff --git a/src/main/java/com/halil/halil/domain/user/service/UserService.java b/src/main/java/com/halil/halil/domain/user/service/UserService.java new file mode 100644 index 0000000..890cf93 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/service/UserService.java @@ -0,0 +1,11 @@ +package com.halil.halil.domain.user.service; + +import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.entity.User; + +import javax.swing.text.html.Option; +import java.util.Optional; + +public interface UserService { + Optional CreateUser(UserCreateRequestDto userCreateRequestDto); +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/global/response/CommonResponse.java b/src/main/java/com/halil/halil/global/response/CommonResponse.java new file mode 100644 index 0000000..82b2e87 --- /dev/null +++ b/src/main/java/com/halil/halil/global/response/CommonResponse.java @@ -0,0 +1,51 @@ +package com.halil.halil.global.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Getter; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Getter +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CommonResponse { + private static final String SUCCESS = "success"; + private static final String FAIL = "fail"; + private static final String ERROR = "error"; + + private String status; + private T data; + private String message; + + public CommonResponse(String status, T data, String message){ + this.status = status; + this.data = data; + this.message = message; + } + + public static CommonResponse createSuccess(T data){ + return new CommonResponse(SUCCESS, data, null); + } + + public static CommonResponse createFail(BindingResult bindingResult){ + Map errors = new HashMap<>(); + List allErrors = bindingResult.getAllErrors(); + for (ObjectError error : allErrors) { + if (error instanceof FieldError) { + errors.put(((FieldError) error).getField(), error.getDefaultMessage()); + } else { + errors.put( error.getObjectName(), error.getDefaultMessage()); + } + } + return new CommonResponse(FAIL, errors, null); + } + + public static CommonResponse createError(String message){ + return new CommonResponse(ERROR, null, message); + } + +} \ No newline at end of file diff --git a/src/main/resources/Application.yml b/src/main/resources/Application.yml new file mode 100644 index 0000000..0aa29d7 --- /dev/null +++ b/src/main/resources/Application.yml @@ -0,0 +1,13 @@ +spring: + jpa: + show-sql: true + hibernate: + ddl-auto: create + h2: + console: + enabled: true + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:~/test + username: sa + password: \ No newline at end of file diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java new file mode 100644 index 0000000..32fea0f --- /dev/null +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -0,0 +1,38 @@ +package com.halil.halil.domain.user; + +import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.entity.User; +import com.halil.halil.domain.user.repository.UserRepository; +import com.halil.halil.domain.user.service.UserCreateServiceimpl; +import com.halil.halil.domain.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.Optional; + +@SpringBootTest +class UserServiceTest { + @Autowired + private UserCreateServiceimpl userCreateServiceimpl; + @Autowired + private UserRepository userRepository; + + private UserCreateRequestDto userCreateRequestDto1 = new UserCreateRequestDto("email1","nickname1"); + private UserCreateRequestDto userCreateRequestDto2 = new UserCreateRequestDto("email2","nickname2"); + private UserCreateRequestDto userCreateRequestDto3 = new UserCreateRequestDto("email3","nickname3"); + void Setup(){ + + } + @Test + @DisplayName("create function test") + void CreateWellTest(){ + final User user = User.builder().email(userCreateRequestDto1.getEmail()) + .nickName(userCreateRequestDto1.getNickName()).build(); + Optional userid=userCreateServiceimpl.CreateUser(userCreateRequestDto1); + System.out.println(userid); + } +} \ No newline at end of file From 8f84e28851096f700bcc82839c64eee8c393fdf1 Mon Sep 17 00:00:00 2001 From: twknds Date: Thu, 28 Jul 2022 17:02:21 +0900 Subject: [PATCH 02/10] =?UTF-8?q?[feat]=20:=20User=20Entity=20unique?= =?UTF-8?q?=ED=95=9C=EA=B0=92=20Exception=ED=95=B8=EB=93=A4=EB=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/controller/UserController.java | 11 +++++++++-- .../user/exception/ExistUserException.java | 7 +++++++ .../domain/user/repository/UserRepository.java | 1 + .../user/service/UserCreateServiceimpl.java | 13 ++++++++++--- .../halil/halil/domain/user/UserServiceTest.java | 16 ++++++++++------ 5 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index bdef59d..5529723 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -2,13 +2,17 @@ import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.exception.ExistUserException; import com.halil.halil.domain.user.service.UserService; import com.halil.halil.global.response.CommonResponse; import lombok.RequiredArgsConstructor; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.sql.SQLIntegrityConstraintViolationException; + @RestController @RequestMapping("/users") @RequiredArgsConstructor @@ -18,7 +22,10 @@ public class UserController { @PostMapping("/create") ResponseEntity CreateUser(@RequestBody UserCreateRequestDto userCreateRequestDto){ - return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); + try { + return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); + }catch (DataIntegrityViolationException e){ + throw new ExistUserException("이미 존재하는 계정입니다"); + } } - } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java b/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java new file mode 100644 index 0000000..331e159 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java @@ -0,0 +1,7 @@ +package com.halil.halil.domain.user.exception; + +public class ExistUserException extends RuntimeException{ + public ExistUserException(String message){ + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java index e8764cb..a4237e6 100644 --- a/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java +++ b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java @@ -7,4 +7,5 @@ public interface UserRepository extends JpaRepository { Optional findUserByEmail(String email); + Optional findUserByNickName(String nickName); } diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java index a74cc87..deae5af 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java @@ -5,7 +5,6 @@ import com.halil.halil.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Primary; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.Optional; @@ -18,9 +17,17 @@ public class UserCreateServiceimpl implements UserService{ @Override public Optional CreateUser(UserCreateRequestDto userCreateRequestDto){ + /*Optional findUsers = userRepository.findUserByEmail(userCreateRequestDto.getEmail()); + if(!findUsers.isEmpty()){ + throw new ExistUserNameException("이미 존재하는 사용자"); + } + findUsers = userRepository.findUserByNickName(userCreateRequestDto.getNickName()); + if(!findUsers.isEmpty()){ + throw new ExistUserNameException("이미 존재하는 사용자"); + }*/ User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getEmail()).build(); userRepository.save(user); - Optional userid=userRepository.findById(user.getId()); - return userid; + Optional searchUser=userRepository.findById(user.getId()); + return searchUser; } } diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java index 32fea0f..5ae5252 100644 --- a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -2,16 +2,21 @@ import com.halil.halil.domain.user.dto.UserCreateRequestDto; import com.halil.halil.domain.user.entity.User; +import com.halil.halil.domain.user.exception.ExistUserException; import com.halil.halil.domain.user.repository.UserRepository; import com.halil.halil.domain.user.service.UserCreateServiceimpl; import com.halil.halil.domain.user.service.UserService; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.dao.DataIntegrityViolationException; +import static org.junit.jupiter.api.Assertions.*; import java.util.Optional; @SpringBootTest @@ -28,11 +33,10 @@ void Setup(){ } @Test - @DisplayName("create function test") - void CreateWellTest(){ - final User user = User.builder().email(userCreateRequestDto1.getEmail()) - .nickName(userCreateRequestDto1.getNickName()).build(); - Optional userid=userCreateServiceimpl.CreateUser(userCreateRequestDto1); - System.out.println(userid); + @DisplayName("Already Exist User Exception Test") + void AlreadyExistUserTest(){ + UserCreateRequestDto dupUserCreateRequestDto = new UserCreateRequestDto("email1","nickname1"); + userCreateServiceimpl.CreateUser(userCreateRequestDto1); + Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceimpl.CreateUser(dupUserCreateRequestDto)); } } \ No newline at end of file From 4e877e8024f68aeb6def54d4aede9d34da439cc1 Mon Sep 17 00:00:00 2001 From: twknds Date: Thu, 28 Jul 2022 17:12:58 +0900 Subject: [PATCH 03/10] =?UTF-8?q?[docs]=20:=20.yml=20.gz=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20commit=EC=97=90=EC=84=9C=20=EC=A0=9C=EC=99=B8=20=EB=B0=8F=20?= =?UTF-8?q?gitignore=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 8 +++++++- myapplication.log.2022-07-25.0.gz | Bin 2175 -> 0 bytes myapplication.log.2022-07-26.0.gz | Bin 13909 -> 0 bytes src/main/resources/Application.yml | 13 ------------- 4 files changed, 7 insertions(+), 14 deletions(-) delete mode 100644 myapplication.log.2022-07-25.0.gz delete mode 100644 myapplication.log.2022-07-26.0.gz delete mode 100644 src/main/resources/Application.yml diff --git a/.gitignore b/.gitignore index 2b8deee..bbd229c 100644 --- a/.gitignore +++ b/.gitignore @@ -91,4 +91,10 @@ gradle-app.setting # End of https://www.toptal.com/developers/gitignore/api/java,gradle # .properties -*.properties \ No newline at end of file +*.properties + +# .yml +*.yml + +# .gz +*.gz \ No newline at end of file diff --git a/myapplication.log.2022-07-25.0.gz b/myapplication.log.2022-07-25.0.gz deleted file mode 100644 index bbde10a624f7d1557f9251244bbe91574aea4426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2175 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�{SBQP+@wd%Q{oAV<{fv6sY7+Tu%cj$$SU7ei1gTWP3E?+aoO}Rz=7DxG|xQn>r8YMH7x4pPk$0S-9=5O};?y z&GDW#s&TlJ>BJiSbd!2%ZA8Vw`(w5VV}2VC+xNHk`~Q{> zn1Up|l<^~%@pb+qoM^({rW}c=WclPaFK^MvjZeAQXRa4c9e@w)e)$~T-&tR}c6avE ziGh3?1*Ul;#K-FFEegvTn5A|EmWLk{@p53NN#|*t%RMF-jM&P5lz$M!{zWi8VB#a0 zj@lPK(VRE ii_%)YwAlGHx2!xz~MRc+`KE)Z@071pIP0i8MC2Z6I@OG+i-0x$ZN z>b(kJ14>+gmr&-_18$rh+_O_uDM8*lC;TRG8+ZNIGg}m=P%|TZJ4|iq!Xl21mSGyd z2cMaPx}5%~$gxGH$T=Kj&lHPhSd1bJ!9FVQ@BXnkgswq*{jm_Chcr*2`kW(MVBJM) zPtt5}3gHjj!+A4OAD|b_`3vsx{DFJudYZ0Juy`;4(TJfJN#ruO|Au>of5E-J=)d8f z@*lWI@fX|^`v>kN!9CM4jWSsrskP93NyOH1V#YFjBmc0o!&Ia?^79V0c!l%I_-xjK zsy%%sivB;yV_RGLq$ywu`|%!=N$DSV_u3&@Oa+m-s{D636MgIdT(AFxRywo(8Iy_X5>}7rE;j8E%ezcl^6t)xh9lpU0}wadOO_KqQ7{zWIcG%Aj}0sZ4$Bu7kN@XrD-(yhTk=G;bXr_ZoupW!dYlt)}z!Uc9Y;|0(@tEiPq2HgUh6c$E zDe;HN$(%HZW-F^YL+*hnM20pK69zsHMJjW!DEK~=HAoTI3{_&v@r8-ej_| zFRm|(<;2X{*VjrETT?_7E2L=hqL2S?bZ^A>Z@O3XGvG*wKJYNpEj88GXARf-tDend zJ*&7fe0OO`mqkNd+ZGC$I64V=WL7P8Jr%{FTyZZ9tZm?QI-IQ`_-pL>O>Wby^5@JM zyS?{y5zk+}Ah{d&KM7#nExiS2iDz<&P_s8g>Thx_eu96ZlUiq3ZxI_Zg0;o8$ab%L z5hu!YP14ZT+Wq|qMXXY5WBOK}U)T(1W2|ju-^ub88CPo2v8kOVVU$t!&z5>a>i%wZ zqfS)Wl!>J`xqy7sLFp|n`<-wkh;iCX#iwI|*Bp+`#lwgP>}U5rXAyMhZWC-O#jG=D z<345#`UcS#yvh}GiJz?bQe=!!GT+SXb68CdcD8Uh^yC;gq&`?ljTI$E*k@)^ET{GO zaNn}O-$(=lgQBWpnMx~#u)?^&Fao;MB=TMcQa8}c;GoaZt3-jHyLY(R;pT1}qJ9*o zE8@j;dqc4FM5f4buY$mnBT?+6gWwMbn~wA(H8sx-X<$kage7+>G`Sj7 znhCb71!4RBxc7LTY?jp83U`JuRCMG~$NJICKNuY^z-mp5HNkGN%QP7Aw`fEUC^L?4 zoQ@B=#?c=eaFaGmXOPDlG94-m^EuDSd^B4<<^84Y4Qq=<#ubLnAuj4I+EVHF%#A~- z041i(?7hBQ{{%*GarWKn3cI5zED1k7n|9zjwEC#yWl;$GBXlly?!#$FY1#rDJzIs2 ziWy-Nb;p`l5jA0BcwNPadzfoxEo&O8A{Q@;t-Ri;P42cOJ?=Q0!0U38Ctqgpljj%c zj+S+TxrS?8}!3qspVH=SAY1geOm)@$%ZjeKN z=Cpyb-dL}dI4ytlhNY=gAgDjQ_=!=97Z+!RU)d8d&3#i>3X`JfZW0TzJK=?#^T$>%zMg*Ktz6|bdf{%bh}o&My25*W{sNmA zX)&iB-1E=5Il`o|h3c!_;g@fSKHA(J`)k5sdS`Fbc$3$WwuZgxsEs0ILI8*&a*g3G z*%&kxn$u2v_Og;X()vFgoffQsH)>wdYvxb(Zw;upr znwMcvt<^rSrDWye$ud*9=1)hGiM++h%4*}N*P6Fn`}bR}j}WP7PKGODZX9t-!%@1R zwU_=RSN5k#K$HEX8}no%LYP^G`(Hmy_j*-~?LQUCHtmr@?r;p4J?r^=^k3&jO9JK2 zVdQ=5FuzD8Zo%EY1{>tlWh0l4h87sXKefUf?~;37pnV19xIp&vD!-rIZymXw*#IP$ zH;x_(NzbF>vE+lRL)X=EjZ?dBzb2k0KwWx9 Date: Thu, 28 Jul 2022 22:10:53 +0900 Subject: [PATCH 04/10] =?UTF-8?q?[feat]=20:=20Dto=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20Serviceimpl=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/halil/halil/domain/user/controller/UserController.java | 3 ++- .../com/halil/halil/domain/user/dto/UserCreateRequestDto.java | 2 ++ .../halil/halil/domain/user/service/UserCreateServiceimpl.java | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index 5529723..221fa3d 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import java.sql.SQLIntegrityConstraintViolationException; @RestController @@ -21,7 +22,7 @@ public class UserController { private final UserService userService; @PostMapping("/create") - ResponseEntity CreateUser(@RequestBody UserCreateRequestDto userCreateRequestDto){ + ResponseEntity CreateUser(@RequestBody @Valid UserCreateRequestDto userCreateRequestDto){ try { return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); }catch (DataIntegrityViolationException e){ diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java index 93d3229..6f5442e 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java @@ -3,9 +3,11 @@ import lombok.*; @Getter +@RequiredArgsConstructor public class UserCreateRequestDto { String email; String nickName; + @Builder public UserCreateRequestDto(String email, String nickName){ this.email=email; this.nickName=nickName; diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java index deae5af..abd9c84 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java @@ -25,7 +25,7 @@ public Optional CreateUser(UserCreateRequestDto userCreateRequestDto){ if(!findUsers.isEmpty()){ throw new ExistUserNameException("이미 존재하는 사용자"); }*/ - User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getEmail()).build(); + User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getNickName()).build(); userRepository.save(user); Optional searchUser=userRepository.findById(user.getId()); return searchUser; From 3039f77214c7d63499f27a8e7000f2ef05fe9188 Mon Sep 17 00:00:00 2001 From: twknds Date: Fri, 29 Jul 2022 03:45:41 +0900 Subject: [PATCH 05/10] =?UTF-8?q?[feat]=20:=20JwtProvider=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85?= =?UTF-8?q?=EC=8B=9C=20Front=EB=A1=9C=20JWT=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/dto/UserCreateResponseDto.java | 13 +++++++ .../user/service/UserCreateServiceImpl.java | 26 +++++++++++++ .../user/service/UserCreateServiceimpl.java | 33 ----------------- .../domain/user/service/UserService.java | 3 +- .../halil/global/util/jwt/JwtProvider.java | 37 +++++++++++++++++++ .../halil/domain/user/UserServiceTest.java | 8 ++-- 6 files changed, 82 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java create mode 100644 src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java delete mode 100644 src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java create mode 100644 src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java new file mode 100644 index 0000000..6e90da1 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java @@ -0,0 +1,13 @@ +package com.halil.halil.domain.user.dto; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +public class UserCreateResponseDto { + private String jwt; +} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java new file mode 100644 index 0000000..9fdab32 --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java @@ -0,0 +1,26 @@ +package com.halil.halil.domain.user.service; + +import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.dto.UserCreateResponseDto; +import com.halil.halil.domain.user.entity.User; +import com.halil.halil.domain.user.repository.UserRepository; +import com.halil.halil.global.util.jwt.JwtProvider; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@Primary +@RequiredArgsConstructor +public class UserCreateServiceImpl implements UserService{ + private final UserRepository userRepository; + private final JwtProvider jwtProvider; + @Override + public UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto){ + User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getNickName()).build(); + userRepository.save(user); + return new UserCreateResponseDto(jwtProvider.getToken(user.getNickName(), user.getEmail())); + } +} diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java deleted file mode 100644 index abd9c84..0000000 --- a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceimpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.halil.halil.domain.user.service; - -import com.halil.halil.domain.user.dto.UserCreateRequestDto; -import com.halil.halil.domain.user.entity.User; -import com.halil.halil.domain.user.repository.UserRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -@Service -@Primary -@RequiredArgsConstructor -public class UserCreateServiceimpl implements UserService{ - private final UserRepository userRepository; - - @Override - public Optional CreateUser(UserCreateRequestDto userCreateRequestDto){ - /*Optional findUsers = userRepository.findUserByEmail(userCreateRequestDto.getEmail()); - if(!findUsers.isEmpty()){ - throw new ExistUserNameException("이미 존재하는 사용자"); - } - findUsers = userRepository.findUserByNickName(userCreateRequestDto.getNickName()); - if(!findUsers.isEmpty()){ - throw new ExistUserNameException("이미 존재하는 사용자"); - }*/ - User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getNickName()).build(); - userRepository.save(user); - Optional searchUser=userRepository.findById(user.getId()); - return searchUser; - } -} diff --git a/src/main/java/com/halil/halil/domain/user/service/UserService.java b/src/main/java/com/halil/halil/domain/user/service/UserService.java index 890cf93..ca2d179 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserService.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserService.java @@ -1,11 +1,12 @@ package com.halil.halil.domain.user.service; import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.dto.UserCreateResponseDto; import com.halil.halil.domain.user.entity.User; import javax.swing.text.html.Option; import java.util.Optional; public interface UserService { - Optional CreateUser(UserCreateRequestDto userCreateRequestDto); + UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto); } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java new file mode 100644 index 0000000..07f20e2 --- /dev/null +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java @@ -0,0 +1,37 @@ +package com.halil.halil.global.util.jwt; + +import io.jsonwebtoken.*; +import lombok.Setter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Setter +public class JwtProvider { + + @Value("${jwt.secret}") + private String SECRET_KEY; + + private Long expiredTime = 1000 * 60L; + + public String getToken(String nickName, String email){ + Date now = new Date(); + return Jwts.builder().setHeaderParam(Header.TYPE, Header.JWT_TYPE) + .setIssuer("halil") + .setIssuedAt(now) + .setExpiration(new Date(now.getTime() + expiredTime)) + .claim("nickName", nickName) + .claim("email", email) + .signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes()) + .compact(); + } + + public Claims parseToken(String jwt) throws ExpiredJwtException, MalformedJwtException, SignatureException { + return Jwts.parser() + .setSigningKey(SECRET_KEY.getBytes()) + .parseClaimsJws(jwt) + .getBody(); + } +} diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java index 5ae5252..222b549 100644 --- a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -4,7 +4,7 @@ import com.halil.halil.domain.user.entity.User; import com.halil.halil.domain.user.exception.ExistUserException; import com.halil.halil.domain.user.repository.UserRepository; -import com.halil.halil.domain.user.service.UserCreateServiceimpl; +import com.halil.halil.domain.user.service.UserCreateServiceImpl; import com.halil.halil.domain.user.service.UserService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; @@ -22,7 +22,7 @@ @SpringBootTest class UserServiceTest { @Autowired - private UserCreateServiceimpl userCreateServiceimpl; + private UserCreateServiceImpl userCreateServiceImpl; @Autowired private UserRepository userRepository; @@ -36,7 +36,7 @@ void Setup(){ @DisplayName("Already Exist User Exception Test") void AlreadyExistUserTest(){ UserCreateRequestDto dupUserCreateRequestDto = new UserCreateRequestDto("email1","nickname1"); - userCreateServiceimpl.CreateUser(userCreateRequestDto1); - Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceimpl.CreateUser(dupUserCreateRequestDto)); + userCreateServiceImpl.CreateUser(userCreateRequestDto1); + Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(dupUserCreateRequestDto)); } } \ No newline at end of file From 680e8528f9bd2acdac74169f90fa5d3ce1ea86a6 Mon Sep 17 00:00:00 2001 From: twknds Date: Fri, 29 Jul 2022 18:51:16 +0900 Subject: [PATCH 06/10] =?UTF-8?q?[feat]=20:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=ED=9B=84=20JWT=EA=B0=92=20=EB=A6=AC=ED=84=B4=20?= =?UTF-8?q?=EB=B0=8F=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/controller/UserController.java | 15 ++++++++++----- .../domain/user/dto/UserCreateRequestDto.java | 15 +++++++++------ .../halil/halil/domain/user/UserServiceTest.java | 7 +++++++ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index 221fa3d..8a8b0b6 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -9,6 +9,7 @@ import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -23,10 +24,14 @@ public class UserController { @PostMapping("/create") ResponseEntity CreateUser(@RequestBody @Valid UserCreateRequestDto userCreateRequestDto){ - try { - return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); - }catch (DataIntegrityViolationException e){ - throw new ExistUserException("이미 존재하는 계정입니다"); - } + return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); + } + @ExceptionHandler(MethodArgumentNotValidException.class) + public String invalidUserException(MethodArgumentNotValidException e){ + return "take a form"; + } + @ExceptionHandler(DataIntegrityViolationException.class) + public String nullTypeUserException(DataIntegrityViolationException e){ + return "Already Exist User"; } } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java index 6f5442e..a1a9d23 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java @@ -2,14 +2,17 @@ import lombok.*; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotNull; + @Getter -@RequiredArgsConstructor +@NoArgsConstructor +@AllArgsConstructor +@Builder public class UserCreateRequestDto { + @NotNull + @Email String email; + @NotNull String nickName; - @Builder - public UserCreateRequestDto(String email, String nickName){ - this.email=email; - this.nickName=nickName; - } } diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java index 222b549..88b2457 100644 --- a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -39,4 +39,11 @@ void AlreadyExistUserTest(){ userCreateServiceImpl.CreateUser(userCreateRequestDto1); Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(dupUserCreateRequestDto)); } + @Test + @DisplayName("No nickName in User Test") + void NotExistUserNameTest(){ + UserCreateRequestDto userCreateRequestDto = new UserCreateRequestDto("nickname",null); + userCreateServiceImpl.CreateUser(userCreateRequestDto1); + Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(userCreateRequestDto)); + } } \ No newline at end of file From 960e435b4e5395232e24429e312a61d111150f4f Mon Sep 17 00:00:00 2001 From: twknds Date: Mon, 1 Aug 2022 12:31:29 +0900 Subject: [PATCH 07/10] =?UTF-8?q?[feat]=20:=20refresh=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EB=B0=9C=EA=B8=89=20,=20responseDto=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 6 ++-- .../user/dto/UserCreateResponseDto.java | 3 +- .../halil/halil/domain/user/entity/User.java | 2 +- .../user/exception/NotExistUserException.java | 7 ---- .../user/service/UserCreateServiceImpl.java | 5 +-- .../domain/user/service/UserService.java | 3 -- .../halil/global/util/jwt/JwtProvider.java | 33 ++++++++++--------- .../halil/domain/user/UserServiceTest.java | 1 - 8 files changed, 26 insertions(+), 34 deletions(-) delete mode 100644 src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index 8a8b0b6..cbfbe19 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -2,7 +2,7 @@ import com.halil.halil.domain.user.dto.UserCreateRequestDto; -import com.halil.halil.domain.user.exception.ExistUserException; +import com.halil.halil.domain.user.dto.UserCreateResponseDto; import com.halil.halil.domain.user.service.UserService; import com.halil.halil.global.response.CommonResponse; import lombok.RequiredArgsConstructor; @@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; -import java.sql.SQLIntegrityConstraintViolationException; @RestController @RequestMapping("/users") @@ -24,7 +23,8 @@ public class UserController { @PostMapping("/create") ResponseEntity CreateUser(@RequestBody @Valid UserCreateRequestDto userCreateRequestDto){ - return new ResponseEntity<>(CommonResponse.createSuccess(userService.CreateUser(userCreateRequestDto)), HttpStatus.OK); + UserCreateResponseDto userCreateResponseDto = userService.CreateUser(userCreateRequestDto); + return new ResponseEntity<>(CommonResponse.createSuccess(userCreateResponseDto), HttpStatus.OK); } @ExceptionHandler(MethodArgumentNotValidException.class) public String invalidUserException(MethodArgumentNotValidException e){ diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java index 6e90da1..09fa026 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateResponseDto.java @@ -9,5 +9,6 @@ @AllArgsConstructor @Getter public class UserCreateResponseDto { - private String jwt; + private String accessToken; + private String refreshToken; } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/entity/User.java b/src/main/java/com/halil/halil/domain/user/entity/User.java index 153b125..a356c24 100644 --- a/src/main/java/com/halil/halil/domain/user/entity/User.java +++ b/src/main/java/com/halil/halil/domain/user/entity/User.java @@ -13,7 +13,7 @@ public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "USER_ID") + @Column(name = "user_id") private Long id; @Column(nullable = false, unique = true) diff --git a/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java b/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java deleted file mode 100644 index bb7499a..0000000 --- a/src/main/java/com/halil/halil/domain/user/exception/NotExistUserException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.halil.halil.domain.user.exception; - -public class NotExistUserException extends RuntimeException{ - public NotExistUserException(String message){ - super(message); - } -} \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java index 9fdab32..5c835cb 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java @@ -9,7 +9,6 @@ import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; -import java.util.Optional; @Service @Primary @@ -21,6 +20,8 @@ public class UserCreateServiceImpl implements UserService{ public UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto){ User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getNickName()).build(); userRepository.save(user); - return new UserCreateResponseDto(jwtProvider.getToken(user.getNickName(), user.getEmail())); + String accessToken = jwtProvider.createAccessToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); + String refreshToken = jwtProvider.createRefreshToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); + return new UserCreateResponseDto(accessToken,refreshToken); } } diff --git a/src/main/java/com/halil/halil/domain/user/service/UserService.java b/src/main/java/com/halil/halil/domain/user/service/UserService.java index ca2d179..be25cb9 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserService.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserService.java @@ -2,10 +2,7 @@ import com.halil.halil.domain.user.dto.UserCreateRequestDto; import com.halil.halil.domain.user.dto.UserCreateResponseDto; -import com.halil.halil.domain.user.entity.User; -import javax.swing.text.html.Option; -import java.util.Optional; public interface UserService { UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto); diff --git a/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java index 07f20e2..d233c31 100644 --- a/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java @@ -14,24 +14,25 @@ public class JwtProvider { @Value("${jwt.secret}") private String SECRET_KEY; - private Long expiredTime = 1000 * 60L; + public String createAccessToken(String nickName, String email) { + Long tokenInvalidTime = 1000L * 60 * 3; // 3m + return this.createToken(email, nickName, tokenInvalidTime); + } - public String getToken(String nickName, String email){ - Date now = new Date(); - return Jwts.builder().setHeaderParam(Header.TYPE, Header.JWT_TYPE) - .setIssuer("halil") - .setIssuedAt(now) - .setExpiration(new Date(now.getTime() + expiredTime)) - .claim("nickName", nickName) - .claim("email", email) - .signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes()) - .compact(); + public String createRefreshToken(String nickName, String email) { + Long tokenInvalidTime = 1000L * 60 * 60 * 24; // 1d + String refreshToken = this.createToken(nickName, email, tokenInvalidTime); + return refreshToken; } - public Claims parseToken(String jwt) throws ExpiredJwtException, MalformedJwtException, SignatureException { - return Jwts.parser() - .setSigningKey(SECRET_KEY.getBytes()) - .parseClaimsJws(jwt) - .getBody(); + private String createToken(String nickName, String email, Long tokenInvalidTime){ + Date date = new Date(); + return Jwts.builder().setIssuer("halil") + .claim("nickName",nickName) + .claim("email",email) + .setIssuedAt(date) + .setExpiration(new Date(date.getTime() + tokenInvalidTime)) + .signWith(SignatureAlgorithm.HS256, SECRET_KEY) + .compact(); } } diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java index 88b2457..75231d3 100644 --- a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -43,7 +43,6 @@ void AlreadyExistUserTest(){ @DisplayName("No nickName in User Test") void NotExistUserNameTest(){ UserCreateRequestDto userCreateRequestDto = new UserCreateRequestDto("nickname",null); - userCreateServiceImpl.CreateUser(userCreateRequestDto1); Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(userCreateRequestDto)); } } \ No newline at end of file From c79b491021b4a42783334c67286627822d45593c Mon Sep 17 00:00:00 2001 From: twknds Date: Tue, 2 Aug 2022 16:41:15 +0900 Subject: [PATCH 08/10] =?UTF-8?q?back-13=20[refactor]=20:=20pr=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EB=A6=AC=EB=B7=B0=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 13 +++------ .../domain/user/dto/UserCreateRequestDto.java | 13 +++++++-- .../domain/user/dto/UserResponseDto.java | 4 +-- .../domain/user/dto/UserUpdateRequestDto.java | 2 +- .../halil/halil/domain/user/entity/User.java | 9 ++++--- .../user/repository/UserRepository.java | 1 + .../user/service/UserCreateServiceImpl.java | 27 ------------------- .../domain/user/service/UserService.java | 2 +- .../domain/user/service/UserServiceImpl.java | 24 ++++++++++++----- .../global/cofing/WebMvcConfiguration.java | 2 +- .../global/util/{ => jwt}/JwtInterceptor.java | 2 +- .../halil/global/util/jwt/JwtProvider.java | 8 +++--- .../global/util/{ => jwt}/JwtService.java | 2 +- .../global/util/{ => jwt}/JwtServiceImpl.java | 2 +- .../halil/domain/user/UserServiceTest.java | 19 ++++--------- 15 files changed, 55 insertions(+), 75 deletions(-) delete mode 100644 src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java rename src/main/java/com/halil/halil/global/util/{ => jwt}/JwtInterceptor.java (98%) rename src/main/java/com/halil/halil/global/util/{ => jwt}/JwtService.java (90%) rename src/main/java/com/halil/halil/global/util/{ => jwt}/JwtServiceImpl.java (98%) diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index ccdd582..9a9f239 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -7,7 +7,6 @@ import com.halil.halil.domain.user.service.UserService; import com.halil.halil.global.response.CommonResponse; import lombok.RequiredArgsConstructor; -import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.MethodArgumentNotValidException; @@ -31,16 +30,12 @@ public ResponseEntity updateUserInfo(HttpServletRequest request, @RequestBody } @PostMapping("/create") - ResponseEntity CreateUser(@RequestBody @Valid UserCreateRequestDto userCreateRequestDto){ - UserCreateResponseDto userCreateResponseDto = userService.CreateUser(userCreateRequestDto); + ResponseEntity createUser(@RequestBody @Valid UserCreateRequestDto userCreateRequestDto){ + UserCreateResponseDto userCreateResponseDto = userService.createUser(userCreateRequestDto); return new ResponseEntity<>(CommonResponse.createSuccess(userCreateResponseDto), HttpStatus.OK); } @ExceptionHandler(MethodArgumentNotValidException.class) - public String invalidUserException(MethodArgumentNotValidException e){ - return "take a form"; - } - @ExceptionHandler(DataIntegrityViolationException.class) - public String nullTypeUserException(DataIntegrityViolationException e){ - return "Already Exist User"; + public ResponseEntity invalidDtoException(MethodArgumentNotValidException e){ + return new ResponseEntity<>(CommonResponse.createError("take a form plz"),HttpStatus.BAD_REQUEST); } } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java index a1a9d23..e5b54c1 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserCreateRequestDto.java @@ -1,8 +1,10 @@ package com.halil.halil.domain.user.dto; +import com.halil.halil.domain.user.entity.User; import lombok.*; import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Getter @@ -10,9 +12,16 @@ @AllArgsConstructor @Builder public class UserCreateRequestDto { - @NotNull + @NotBlank @Email String email; - @NotNull + @NotBlank String nickName; + + public User toEntity(){ + return User.builder() + .email(email) + .nickname(nickName) + .build(); + } } diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserResponseDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserResponseDto.java index 8a02928..35a6648 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserResponseDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserResponseDto.java @@ -9,10 +9,10 @@ public class UserResponseDto { private String email; - private String nickname; + private String nickName; public UserResponseDto(User user){ this.email = user.getEmail(); - this.nickname = user.getNickname(); + this.nickName = user.getNickName(); } } diff --git a/src/main/java/com/halil/halil/domain/user/dto/UserUpdateRequestDto.java b/src/main/java/com/halil/halil/domain/user/dto/UserUpdateRequestDto.java index f5badfa..9704691 100644 --- a/src/main/java/com/halil/halil/domain/user/dto/UserUpdateRequestDto.java +++ b/src/main/java/com/halil/halil/domain/user/dto/UserUpdateRequestDto.java @@ -16,6 +16,6 @@ public class UserUpdateRequestDto { private String email; @NotBlank(message = "닉네임은 필수 입력값입니다.") - private String nickname; + private String nickName; } diff --git a/src/main/java/com/halil/halil/domain/user/entity/User.java b/src/main/java/com/halil/halil/domain/user/entity/User.java index 8b67c91..e271c2c 100644 --- a/src/main/java/com/halil/halil/domain/user/entity/User.java +++ b/src/main/java/com/halil/halil/domain/user/entity/User.java @@ -7,6 +7,7 @@ @Entity @Getter +@Table(name = "USERS") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class User { @Id @@ -15,7 +16,7 @@ public class User { private Long user_id; @Column(name = "NICKNAME", unique = true, nullable = false) - private String nickname; + private String nickName; @Column(name = "EMAIL", unique = true, nullable = false) private String email; @@ -25,12 +26,12 @@ public class User { @Builder public User( String nickname, String email){ - this.nickname = nickname; + this.nickName = nickname; this.email = email; } - public void update(String nickname){ - this.nickname = nickname; + public void update(String nickName){ + this.nickName = nickName; } public void updateRefreshToken(String refreshToken){ diff --git a/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java index a4237e6..c5f9c23 100644 --- a/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java +++ b/src/main/java/com/halil/halil/domain/user/repository/UserRepository.java @@ -8,4 +8,5 @@ public interface UserRepository extends JpaRepository { Optional findUserByEmail(String email); Optional findUserByNickName(String nickName); + Optional findByEmail(String email); } diff --git a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java b/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java deleted file mode 100644 index 5c835cb..0000000 --- a/src/main/java/com/halil/halil/domain/user/service/UserCreateServiceImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.halil.halil.domain.user.service; - -import com.halil.halil.domain.user.dto.UserCreateRequestDto; -import com.halil.halil.domain.user.dto.UserCreateResponseDto; -import com.halil.halil.domain.user.entity.User; -import com.halil.halil.domain.user.repository.UserRepository; -import com.halil.halil.global.util.jwt.JwtProvider; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Service; - - -@Service -@Primary -@RequiredArgsConstructor -public class UserCreateServiceImpl implements UserService{ - private final UserRepository userRepository; - private final JwtProvider jwtProvider; - @Override - public UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto){ - User user = new User().builder().email(userCreateRequestDto.getEmail()).nickName(userCreateRequestDto.getNickName()).build(); - userRepository.save(user); - String accessToken = jwtProvider.createAccessToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); - String refreshToken = jwtProvider.createRefreshToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); - return new UserCreateResponseDto(accessToken,refreshToken); - } -} diff --git a/src/main/java/com/halil/halil/domain/user/service/UserService.java b/src/main/java/com/halil/halil/domain/user/service/UserService.java index 96a20a5..9eb683a 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserService.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserService.java @@ -11,5 +11,5 @@ public interface UserService { UserResponseDto updateUserInfo(String email, UserUpdateRequestDto userUpdateRequestDto); void updateRefreshToken(String email, String refreshToken); - UserCreateResponseDto CreateUser(UserCreateRequestDto userCreateRequestDto); + UserCreateResponseDto createUser(UserCreateRequestDto userCreateRequestDto); } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java b/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java index 82008ec..66cef1e 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java @@ -1,28 +1,29 @@ package com.halil.halil.domain.user.service; +import com.halil.halil.domain.user.dto.UserCreateRequestDto; +import com.halil.halil.domain.user.dto.UserCreateResponseDto; import com.halil.halil.domain.user.dto.UserResponseDto; import com.halil.halil.domain.user.dto.UserUpdateRequestDto; import com.halil.halil.domain.user.entity.User; +import com.halil.halil.domain.user.exception.ExistUserException; import com.halil.halil.domain.user.repository.UserRepository; import com.halil.halil.global.exception.ExistNicknameException; import com.halil.halil.global.exception.NoExistUserException; +import com.halil.halil.global.util.jwt.JwtProvider; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; -import java.util.NoSuchElementException; -import java.util.Optional; - @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService{ private final UserRepository userRepository; - + private final JwtProvider jwtProvider; @Override public UserResponseDto updateUserInfo(String email, UserUpdateRequestDto userUpdateRequestDto) { User user = userRepository.findByEmail(email).orElseThrow(() -> new NoExistUserException("존재하는 회원정보가 없습니다.")); try{ - user.update(userUpdateRequestDto.getNickname()); + user.update(userUpdateRequestDto.getNickName()); userRepository.save(user); UserResponseDto userResponseDto = new UserResponseDto(user); return userResponseDto; @@ -37,6 +38,15 @@ public void updateRefreshToken(String email, String refreshToken) { user.updateRefreshToken(refreshToken); userRepository.save(user); } - - + @Override + public UserCreateResponseDto createUser(UserCreateRequestDto userCreateRequestDto){ + try { + userRepository.save(userCreateRequestDto.toEntity()); + String accessToken = jwtProvider.createAccessToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); + String refreshToken = jwtProvider.createRefreshToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); + return new UserCreateResponseDto(accessToken, refreshToken); + }catch (DataIntegrityViolationException e){ + throw new ExistUserException("Already Exist UserNickName"); + } + } } diff --git a/src/main/java/com/halil/halil/global/cofing/WebMvcConfiguration.java b/src/main/java/com/halil/halil/global/cofing/WebMvcConfiguration.java index f114e61..fba3a4d 100644 --- a/src/main/java/com/halil/halil/global/cofing/WebMvcConfiguration.java +++ b/src/main/java/com/halil/halil/global/cofing/WebMvcConfiguration.java @@ -1,6 +1,6 @@ package com.halil.halil.global.cofing; -import com.halil.halil.global.util.JwtInterceptor; +import com.halil.halil.global.util.jwt.JwtInterceptor; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; diff --git a/src/main/java/com/halil/halil/global/util/JwtInterceptor.java b/src/main/java/com/halil/halil/global/util/jwt/JwtInterceptor.java similarity index 98% rename from src/main/java/com/halil/halil/global/util/JwtInterceptor.java rename to src/main/java/com/halil/halil/global/util/jwt/JwtInterceptor.java index 1ff4439..c07d21d 100644 --- a/src/main/java/com/halil/halil/global/util/JwtInterceptor.java +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtInterceptor.java @@ -1,4 +1,4 @@ -package com.halil.halil.global.util; +package com.halil.halil.global.util.jwt; import com.halil.halil.domain.user.service.UserService; import io.jsonwebtoken.ExpiredJwtException; diff --git a/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java index d233c31..919b190 100644 --- a/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtProvider.java @@ -13,15 +13,15 @@ public class JwtProvider { @Value("${jwt.secret}") private String SECRET_KEY; - + private Long accessTokenExpired = 1000L * 60; + private Long refreshTokenExpired = 1000L * 60 * 60 * 24; public String createAccessToken(String nickName, String email) { Long tokenInvalidTime = 1000L * 60 * 3; // 3m return this.createToken(email, nickName, tokenInvalidTime); } public String createRefreshToken(String nickName, String email) { - Long tokenInvalidTime = 1000L * 60 * 60 * 24; // 1d - String refreshToken = this.createToken(nickName, email, tokenInvalidTime); + String refreshToken = this.createToken(nickName, email, refreshTokenExpired); return refreshToken; } @@ -31,7 +31,7 @@ private String createToken(String nickName, String email, Long tokenInvalidTime) .claim("nickName",nickName) .claim("email",email) .setIssuedAt(date) - .setExpiration(new Date(date.getTime() + tokenInvalidTime)) + .setExpiration(new Date(date.getTime() + accessTokenExpired)) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); } diff --git a/src/main/java/com/halil/halil/global/util/JwtService.java b/src/main/java/com/halil/halil/global/util/jwt/JwtService.java similarity index 90% rename from src/main/java/com/halil/halil/global/util/JwtService.java rename to src/main/java/com/halil/halil/global/util/jwt/JwtService.java index 7c9673d..bddfda0 100644 --- a/src/main/java/com/halil/halil/global/util/JwtService.java +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtService.java @@ -1,4 +1,4 @@ -package com.halil.halil.global.util; +package com.halil.halil.global.util.jwt; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/src/main/java/com/halil/halil/global/util/JwtServiceImpl.java b/src/main/java/com/halil/halil/global/util/jwt/JwtServiceImpl.java similarity index 98% rename from src/main/java/com/halil/halil/global/util/JwtServiceImpl.java rename to src/main/java/com/halil/halil/global/util/jwt/JwtServiceImpl.java index eac4bdd..7a9e043 100644 --- a/src/main/java/com/halil/halil/global/util/JwtServiceImpl.java +++ b/src/main/java/com/halil/halil/global/util/jwt/JwtServiceImpl.java @@ -1,4 +1,4 @@ -package com.halil.halil.global.util; +package com.halil.halil.global.util.jwt; import com.halil.halil.domain.user.entity.User; import com.halil.halil.domain.user.repository.UserRepository; diff --git a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java index 75231d3..8f45530 100644 --- a/src/test/java/com/halil/halil/domain/user/UserServiceTest.java +++ b/src/test/java/com/halil/halil/domain/user/UserServiceTest.java @@ -1,28 +1,19 @@ package com.halil.halil.domain.user; import com.halil.halil.domain.user.dto.UserCreateRequestDto; -import com.halil.halil.domain.user.entity.User; -import com.halil.halil.domain.user.exception.ExistUserException; import com.halil.halil.domain.user.repository.UserRepository; -import com.halil.halil.domain.user.service.UserCreateServiceImpl; -import com.halil.halil.domain.user.service.UserService; +import com.halil.halil.domain.user.service.UserServiceImpl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.dao.DataIntegrityViolationException; -import static org.junit.jupiter.api.Assertions.*; -import java.util.Optional; - @SpringBootTest class UserServiceTest { @Autowired - private UserCreateServiceImpl userCreateServiceImpl; + private UserServiceImpl userCreateServiceImpl; @Autowired private UserRepository userRepository; @@ -36,13 +27,13 @@ void Setup(){ @DisplayName("Already Exist User Exception Test") void AlreadyExistUserTest(){ UserCreateRequestDto dupUserCreateRequestDto = new UserCreateRequestDto("email1","nickname1"); - userCreateServiceImpl.CreateUser(userCreateRequestDto1); - Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(dupUserCreateRequestDto)); + userCreateServiceImpl.createUser(userCreateRequestDto1); + Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.createUser(dupUserCreateRequestDto)); } @Test @DisplayName("No nickName in User Test") void NotExistUserNameTest(){ UserCreateRequestDto userCreateRequestDto = new UserCreateRequestDto("nickname",null); - Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.CreateUser(userCreateRequestDto)); + Assertions.assertThrows(DataIntegrityViolationException.class, () -> userCreateServiceImpl.createUser(userCreateRequestDto)); } } \ No newline at end of file From 794df8f67bfa4021b9f92ac128d63eb8e335eaaa Mon Sep 17 00:00:00 2001 From: twknds Date: Wed, 3 Aug 2022 10:22:23 +0900 Subject: [PATCH 09/10] =?UTF-8?q?#13=20[refactor]=20:=20advice=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/controller/UserController.java | 5 +---- .../com/halil/halil/domain/user/entity/User.java | 1 + .../user/exception/ExistUserException.java | 8 +++++--- .../domain/user/service/UserServiceImpl.java | 16 ++++++---------- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/halil/halil/domain/user/controller/UserController.java b/src/main/java/com/halil/halil/domain/user/controller/UserController.java index 9a9f239..1a29457 100644 --- a/src/main/java/com/halil/halil/domain/user/controller/UserController.java +++ b/src/main/java/com/halil/halil/domain/user/controller/UserController.java @@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -34,8 +35,4 @@ ResponseEntity createUser(@RequestBody @Valid UserCreateRequestD UserCreateResponseDto userCreateResponseDto = userService.createUser(userCreateRequestDto); return new ResponseEntity<>(CommonResponse.createSuccess(userCreateResponseDto), HttpStatus.OK); } - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseEntity invalidDtoException(MethodArgumentNotValidException e){ - return new ResponseEntity<>(CommonResponse.createError("take a form plz"),HttpStatus.BAD_REQUEST); - } } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/entity/User.java b/src/main/java/com/halil/halil/domain/user/entity/User.java index e271c2c..3161f22 100644 --- a/src/main/java/com/halil/halil/domain/user/entity/User.java +++ b/src/main/java/com/halil/halil/domain/user/entity/User.java @@ -4,6 +4,7 @@ import lombok.*; import javax.persistence.*; +import javax.validation.constraints.NotBlank; @Entity @Getter diff --git a/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java b/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java index 331e159..1dd2802 100644 --- a/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java +++ b/src/main/java/com/halil/halil/domain/user/exception/ExistUserException.java @@ -1,7 +1,9 @@ package com.halil.halil.domain.user.exception; -public class ExistUserException extends RuntimeException{ - public ExistUserException(String message){ - super(message); +import org.springframework.dao.DataIntegrityViolationException; + +public class ExistUserException extends DataIntegrityViolationException { + public ExistUserException(){ + super("Already Exist User!"); } } \ No newline at end of file diff --git a/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java b/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java index 66cef1e..e5fe7c2 100644 --- a/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java +++ b/src/main/java/com/halil/halil/domain/user/service/UserServiceImpl.java @@ -22,14 +22,10 @@ public class UserServiceImpl implements UserService{ @Override public UserResponseDto updateUserInfo(String email, UserUpdateRequestDto userUpdateRequestDto) { User user = userRepository.findByEmail(email).orElseThrow(() -> new NoExistUserException("존재하는 회원정보가 없습니다.")); - try{ - user.update(userUpdateRequestDto.getNickName()); - userRepository.save(user); - UserResponseDto userResponseDto = new UserResponseDto(user); - return userResponseDto; - }catch (DataIntegrityViolationException e){ - throw new ExistNicknameException("존재하는 닉네임입니다."); - } + user.update(userUpdateRequestDto.getNickName()); + userRepository.save(user); + UserResponseDto userResponseDto = new UserResponseDto(user); + return userResponseDto; } @Override @@ -45,8 +41,8 @@ public UserCreateResponseDto createUser(UserCreateRequestDto userCreateRequestDt String accessToken = jwtProvider.createAccessToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); String refreshToken = jwtProvider.createRefreshToken(userCreateRequestDto.getNickName(), userCreateRequestDto.getEmail()); return new UserCreateResponseDto(accessToken, refreshToken); - }catch (DataIntegrityViolationException e){ - throw new ExistUserException("Already Exist UserNickName"); + }catch (ExistUserException e){ + throw new ExistUserException(); } } } From 50b130de924bf6660c9a9dc8d76aad218b232de7 Mon Sep 17 00:00:00 2001 From: twknds Date: Wed, 3 Aug 2022 10:24:20 +0900 Subject: [PATCH 10/10] =?UTF-8?q?#13=20[refactor]=20:=20advice=EB=AF=B8?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=A1=9C=20=EB=8B=A4=EC=8B=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/advice/UserControllerAdvice.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/halil/halil/domain/user/advice/UserControllerAdvice.java diff --git a/src/main/java/com/halil/halil/domain/user/advice/UserControllerAdvice.java b/src/main/java/com/halil/halil/domain/user/advice/UserControllerAdvice.java new file mode 100644 index 0000000..c7a2e2a --- /dev/null +++ b/src/main/java/com/halil/halil/domain/user/advice/UserControllerAdvice.java @@ -0,0 +1,22 @@ +package com.halil.halil.domain.user.advice; + +import com.halil.halil.global.response.CommonResponse; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class UserControllerAdvice { + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseEntity invalidDtoException(MethodArgumentNotValidException e){ + return new ResponseEntity<>(CommonResponse.createError("take a form plz"), HttpStatus.BAD_REQUEST); + } + @ExceptionHandler(DataIntegrityViolationException.class) + public ResponseEntity ExistUserNickNameException(DataIntegrityViolationException e){ + return new ResponseEntity<>(CommonResponse.createError("Already Exist NickName"), HttpStatus.BAD_REQUEST); + } + +}