-
Notifications
You must be signed in to change notification settings - Fork 4
Kwon ju hwan #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: KwonJuHwan
Are you sure you want to change the base?
Kwon ju hwan #1
Changes from 30 commits
8238f3e
c8c7952
8e00cf0
abfd5ae
fe5a769
9cd2ed1
c2d8b75
bc4704d
dc88196
4062461
d58abb9
0aa291c
80a2ab1
99b4655
9a56bad
443c1d5
da5f9e8
5e28932
9820479
1a7c45e
5cd9521
b4f779c
7d82f93
0f684c5
0be9d21
24b6ca6
f98dc6d
557eb5d
82cc88f
3e779dc
747627c
61ec120
1012a3d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| package com.swger.tddstudy.member.controller; | ||
|
|
||
| import com.swger.tddstudy.member.domain.Member; | ||
| import com.swger.tddstudy.member.domain.DTO.MemberDTO; | ||
| import com.swger.tddstudy.member.domain.DTO.MemberSignInDTO; | ||
| import com.swger.tddstudy.member.repository.MemberRepository; | ||
| import com.swger.tddstudy.member.service.MemberService; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.springframework.validation.BindException; | ||
| import org.springframework.validation.BindingResult; | ||
| import org.springframework.validation.annotation.Validated; | ||
| import org.springframework.web.bind.annotation.*; | ||
|
|
||
| import java.util.List; | ||
|
|
||
| @RestController | ||
| @RequiredArgsConstructor | ||
| public class MemberController { | ||
| private final MemberService memberService; | ||
| @PostMapping("/signUp") | ||
| public String signUp(@Validated @RequestBody MemberDTO memberDTO, BindingResult bindingResult) throws Exception{ | ||
| if (bindingResult.hasErrors()) throw new BindException(bindingResult); | ||
| memberService.SignUp(memberDTO); | ||
| return "signUpOK"; | ||
| } | ||
|
|
||
| @PostMapping("/logIn") | ||
| public String logIn(@Validated @RequestBody MemberSignInDTO memberSignInDTO,BindingResult bindingResult) throws Exception{ | ||
| if (bindingResult.hasErrors()) throw new BindException(bindingResult); | ||
| memberService.SignIn(memberSignInDTO); | ||
| return "LogInOK"; | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| package com.swger.tddstudy.member.domain.DTO; | ||
|
|
||
| import lombok.Getter; | ||
|
|
||
| import javax.validation.constraints.NotBlank; | ||
|
|
||
| @Getter | ||
| public class MemberDTO { | ||
| @NotBlank | ||
| private String username; | ||
| @NotBlank | ||
| private String password; | ||
| @NotBlank | ||
| private String nickname; | ||
| @NotBlank | ||
| private String rePassword; | ||
|
|
||
| public MemberDTO(String username, String password, String nickname, String rePassword) { | ||
| this.username = username; | ||
| this.password = password; | ||
| this.nickname = nickname; | ||
| this.rePassword = rePassword; | ||
| } | ||
| public MemberDTO(){} | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| package com.swger.tddstudy.member.domain.DTO; | ||
|
|
||
| import lombok.Getter; | ||
|
|
||
| import javax.validation.constraints.NotBlank; | ||
|
|
||
| @Getter | ||
| public class MemberSignInDTO { | ||
|
|
||
| @NotBlank | ||
| private String username; | ||
| @NotBlank | ||
| private String password; | ||
|
|
||
| public MemberSignInDTO(String username, String password) { | ||
| this.username = username; | ||
| this.password = password; | ||
| } | ||
| public MemberSignInDTO(){} | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| package com.swger.tddstudy.member.domain; | ||
|
|
||
| import com.swger.tddstudy.member.domain.DTO.MemberDTO; | ||
| import com.swger.tddstudy.util.BaseEntity; | ||
|
|
||
| import javax.persistence.*; | ||
| import javax.validation.constraints.NotBlank; | ||
|
|
||
| import lombok.Getter; | ||
|
|
||
| @Getter | ||
| @Entity | ||
| public class Member extends BaseEntity { | ||
|
|
||
| @Id @GeneratedValue | ||
| private Long id; | ||
|
|
||
| @NotBlank | ||
| private String username; | ||
|
|
||
| @NotBlank | ||
| private String password; | ||
|
|
||
| @NotBlank | ||
| private String nickname; | ||
|
|
||
| @Enumerated(EnumType.STRING) | ||
| private MemberLevel memberLevel; | ||
|
|
||
| @Enumerated(EnumType.STRING) | ||
| private MemberType memberType; | ||
|
|
||
| public Member(String username, String password, String nickname) { | ||
| this.username = username; | ||
| this.password = password; | ||
| this.nickname = nickname; | ||
| this.memberLevel = MemberLevel.BRONZE; | ||
| this.memberType = MemberType.Member; | ||
| } | ||
| public Member(){} | ||
|
|
||
| public Member(MemberDTO memberDTO){ | ||
| this.username = memberDTO.getUsername(); | ||
| this.password = memberDTO.getPassword(); | ||
| this.nickname = memberDTO.getNickname(); | ||
| this.memberLevel = MemberLevel.BRONZE; | ||
| this.memberType = MemberType.Member; | ||
| } | ||
| public void AdminMember(){ | ||
| this.memberType = MemberType.ADMIN; | ||
| } | ||
| public void LevelUp() { | ||
| if (this.getMemberLevel().equals(MemberLevel.SILVER)) { | ||
| this.memberLevel = MemberLevel.GOLD; | ||
| } | ||
| if (this.getMemberLevel().equals(MemberLevel.BRONZE)) { | ||
| this.memberLevel = MemberLevel.SILVER; | ||
| } | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| package com.swger.tddstudy.member.domain; | ||
|
|
||
| import lombok.RequiredArgsConstructor; | ||
|
|
||
| @RequiredArgsConstructor | ||
| public enum MemberType { | ||
|
|
||
| Member("일반회원"), ADMIN("관리자"); | ||
|
|
||
| private final String text; | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| package com.swger.tddstudy.member.repository; | ||
|
|
||
| import com.swger.tddstudy.member.domain.Member; | ||
| import org.springframework.data.jpa.repository.JpaRepository; | ||
|
|
||
| import java.util.List; | ||
| import java.util.Optional; | ||
|
|
||
| public interface MemberRepository extends JpaRepository<Member,Long> { | ||
| Optional<Member> findByUsername(String username); | ||
|
|
||
| @Override | ||
| <S extends Member> S save(S entity); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| package com.swger.tddstudy.member.service; | ||
|
|
||
| import com.swger.tddstudy.member.domain.Member; | ||
| import com.swger.tddstudy.member.domain.DTO.MemberDTO; | ||
| import com.swger.tddstudy.member.domain.DTO.MemberSignInDTO; | ||
| import com.swger.tddstudy.member.domain.MemberLevel; | ||
| import com.swger.tddstudy.member.domain.MemberType; | ||
| import com.swger.tddstudy.member.repository.MemberRepository; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.springframework.stereotype.Service; | ||
|
|
||
| import javax.transaction.Transactional; | ||
|
|
||
| @Service | ||
| @Transactional | ||
| @RequiredArgsConstructor | ||
| public class MemberService { | ||
| private final MemberRepository memberRepository; | ||
| public Member join(Member member){ | ||
| memberRepository.save(member); | ||
| return member; | ||
| } | ||
| public Member SignUp(MemberDTO member){ | ||
| if(!member.getPassword().equals(member.getRePassword())){ | ||
| throw new IllegalArgumentException("RePassword Mismatch"); | ||
| } | ||
| Member signUpMember = new Member(member); | ||
| join(signUpMember); | ||
| return signUpMember; | ||
| } | ||
| public Member SignUpAdmin(MemberDTO member){ | ||
| if(!member.getPassword().equals(member.getRePassword())){ | ||
| throw new IllegalArgumentException("RePassword Mismatch"); | ||
| } | ||
| Member signUpMember = new Member(member); | ||
| signUpMember.AdminMember(); | ||
| join(signUpMember); | ||
| return signUpMember; | ||
| } | ||
| public Member SignIn(MemberSignInDTO member){ | ||
| Member signInMember = memberRepository.findByUsername(member.getUsername()).orElseThrow(() -> new IllegalArgumentException("Username Mismatch")); | ||
| if (!signInMember.getPassword().equals(member.getPassword())) { | ||
| throw new IllegalArgumentException("Password Mismatch"); | ||
| } | ||
| return signInMember; | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| package com.swger.tddstudy.product.controller; | ||
|
|
||
| import com.swger.tddstudy.product.domain.DTO.ProductRegisterDTO; | ||
| import com.swger.tddstudy.product.service.ProductService; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.springframework.beans.factory.annotation.Autowired; | ||
| import org.springframework.validation.BindException; | ||
| import org.springframework.validation.BindingResult; | ||
| import org.springframework.validation.annotation.Validated; | ||
| import org.springframework.web.bind.annotation.PostMapping; | ||
| import org.springframework.web.bind.annotation.RequestBody; | ||
| import org.springframework.web.bind.annotation.RestController; | ||
|
|
||
| @RestController | ||
| @RequiredArgsConstructor | ||
| public class ProductController { | ||
| @Autowired | ||
| ProductService productService; | ||
|
|
||
| @PostMapping("/productRegister") | ||
| public String productRegister(@Validated @RequestBody ProductRegisterDTO DTO, BindingResult br) throws BindException { | ||
|
||
| if (br.hasErrors()) throw new BindException(br); | ||
| productService.register(DTO); | ||
| return "Register OK"; | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| package com.swger.tddstudy.product.domain.DTO; | ||
|
|
||
| import lombok.Getter; | ||
|
|
||
| import javax.validation.constraints.Min; | ||
| import javax.validation.constraints.NotBlank; | ||
|
|
||
| @Getter | ||
| public class ProductRegisterDTO { | ||
| @NotBlank | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 상품 명에 빈칸이 필요할 수도 있지 않을까 생각해봤습니다! @NotNull로 변경하면 띄어쓰기를 허용할 수 있습니다 ㅎㅎ
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 상품명에 빈칸이 필요한 경우가 구체적으로 어떤 것이 있을까요? 상품명이 빈칸 = There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 제가 생각했던 빈칸이 필요한 경우는 예를 들어, "탈모 방지 샴푸" 와 같이 상품명에 띄어쓰기가 들어있는 경우였습니다! 😊
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @notblank는 글자 없이 " " 이렇게 띄어쓰기만 사용자가 입력하는 경우에만 예외를 터트리는 걸로 알고 있어요! 글자 사이에 있는 블랭크는 예외를 터트리지 않는 걸로 알고 있슴다 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오 그렇군요! 제가 잘못 이해했나 보네요😅 알려주셔서 감사합니다! 제 코드를 수정해야겠네요 하하 👍🏻 |
||
| private String name; | ||
|
|
||
| @Min(1000) | ||
| private int price; | ||
|
|
||
| @Min(1) | ||
| private int amount; | ||
|
|
||
| public ProductRegisterDTO(String name, int price, int amount) { | ||
| this.name = name; | ||
| this.price = price; | ||
| this.amount = amount; | ||
| } | ||
| public ProductRegisterDTO(){} | ||
|
|
||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.