From 143fd834712eaba46274c695c0a54793eb23cc98 Mon Sep 17 00:00:00 2001 From: EuichanJeong <dmlcks5791@ajou.ac.kr> Date: Wed, 2 Apr 2025 18:07:48 +0900 Subject: [PATCH] feat: create user --- .../java/com/example/demo/constant/Role.java | 5 ++ .../demo/controller/MemberController.java | 77 +++++++++++++++++++ .../java/com/example/demo/dto/MemberDto.java | 15 ++++ .../java/com/example/demo/entity/Member.java | 43 +++++++++++ .../demo/repository/MemberRepository.java | 10 +++ .../example/demo/service/MemberService.java | 38 +++++++++ 6 files changed, 188 insertions(+) create mode 100644 src/main/java/com/example/demo/constant/Role.java create mode 100644 src/main/java/com/example/demo/controller/MemberController.java create mode 100644 src/main/java/com/example/demo/dto/MemberDto.java create mode 100644 src/main/java/com/example/demo/entity/Member.java create mode 100644 src/main/java/com/example/demo/repository/MemberRepository.java create mode 100644 src/main/java/com/example/demo/service/MemberService.java diff --git a/src/main/java/com/example/demo/constant/Role.java b/src/main/java/com/example/demo/constant/Role.java new file mode 100644 index 0000000..ae88988 --- /dev/null +++ b/src/main/java/com/example/demo/constant/Role.java @@ -0,0 +1,5 @@ +package com.example.demo.constant; + +public enum Role { + USER, ADMIN +} diff --git a/src/main/java/com/example/demo/controller/MemberController.java b/src/main/java/com/example/demo/controller/MemberController.java new file mode 100644 index 0000000..6ef251b --- /dev/null +++ b/src/main/java/com/example/demo/controller/MemberController.java @@ -0,0 +1,77 @@ +package com.example.demo.controller; + +import com.example.demo.service.MemberService; +import com.example.demo.entity.Member; +import com.example.demo.dto.MemberDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.query.Param; +import org.springframework.web.bind.annotation.*; +import com.google.gson.JsonParser; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.example.demo.constant.Role; + + +@RestController +public class MemberController { + + @Autowired + MemberService memberService; + + public Member createMember(){ + MemberDto memberDto = new MemberDto(); + memberDto.setEmail("test@email.com"); + memberDto.setName("홍길동"); + memberDto.setAddress("서울시 마포구 합정동"); + memberDto.setPassword("1234"); + return Member.createMember(memberDto); + } + + @RequestMapping(value = "/membertest", method = RequestMethod.GET) + public void membertest(){ + + Member member = createMember(); + Member savedMember = memberService.saveMember(member); + + System.out.println(member); + System.out.println(savedMember); + + } + + @RequestMapping(value = "/makeMember", method = RequestMethod.POST) + public String makeMember(@RequestBody String param){ + + System.out.println(param); + JsonElement element = JsonParser.parseString(param); + JsonObject object = element.getAsJsonObject(); + + String id = object.get("id").getAsString(); + System.out.println("id : " + id); + + String email = object.get("email").getAsString(); + System.out.println("email : " + email); + + String address = object.get("address").getAsString(); + System.out.println("address : " + address); + + String name = object.get("name").getAsString(); + System.out.println("name : " + name); + + String password = object.get("password").getAsString(); + System.out.println("password : " + password); + + Member member = new Member(); + member.setName(name); + member.setEmail(email); + member.setAddress(address); + member.setPassword(password); + member.setRole(Role.USER); + + memberService.saveMember(member); + + return "OK"; + + } + + +} diff --git a/src/main/java/com/example/demo/dto/MemberDto.java b/src/main/java/com/example/demo/dto/MemberDto.java new file mode 100644 index 0000000..e16a7f1 --- /dev/null +++ b/src/main/java/com/example/demo/dto/MemberDto.java @@ -0,0 +1,15 @@ +package com.example.demo.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class MemberDto { + + private String name; + private String email; + private String password; + private String address; + +} diff --git a/src/main/java/com/example/demo/entity/Member.java b/src/main/java/com/example/demo/entity/Member.java new file mode 100644 index 0000000..c1f4d3b --- /dev/null +++ b/src/main/java/com/example/demo/entity/Member.java @@ -0,0 +1,43 @@ +package com.example.demo.entity; +import javax.persistence.*; +import com.example.demo.dto.MemberDto; +import com.example.demo.constant.Role; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="member") +@Getter +@Setter +@ToString +public class Member { + + @Id + @Column(name="member_id") + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String name; + + @Column(unique = true) + private String email; + + private String password; + + private String address; + + @Enumerated(EnumType.STRING) + private Role role; + + public static Member createMember(MemberDto memberDto){ + Member member = new Member(); + member.setName(memberDto.getName()); + member.setEmail((memberDto.getEmail())); + member.setAddress((memberDto.getAddress())); + member.setPassword(memberDto.getPassword()); + member.setRole(Role.USER); + return member; + + } +} diff --git a/src/main/java/com/example/demo/repository/MemberRepository.java b/src/main/java/com/example/demo/repository/MemberRepository.java new file mode 100644 index 0000000..0e4e650 --- /dev/null +++ b/src/main/java/com/example/demo/repository/MemberRepository.java @@ -0,0 +1,10 @@ +package com.example.demo.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import com.example.demo.entity.*; + +public interface MemberRepository extends JpaRepository<Member, Long>{ + + Member findByEmail(String email); + +} diff --git a/src/main/java/com/example/demo/service/MemberService.java b/src/main/java/com/example/demo/service/MemberService.java new file mode 100644 index 0000000..b773bd8 --- /dev/null +++ b/src/main/java/com/example/demo/service/MemberService.java @@ -0,0 +1,38 @@ +package com.example.demo.service; + +import com.example.demo.entity.Member; +import com.example.demo.repository.MemberRepository; +import lombok.RequiredArgsConstructor; + +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class MemberService { + + private final MemberRepository memberRepository; + + public Member saveMember(Member member){ + validateDuplicatetMember(member); + + return memberRepository.save(member); + } + + + private boolean validateDuplicatetMember(Member member){ + + Member findMember = memberRepository.findByEmail(member.getEmail()); + if(findMember != null){ + System.out.println("이미 가입된 회원입니다."); + return false; + } + + return true; + + } + +} -- GitLab