From ae2bac75de51cf86ac5d749cdae35847587158ab Mon Sep 17 00:00:00 2001 From: T_hyeon <qkrxogus113@ajou.ac.kr> Date: Wed, 2 Apr 2025 18:44:53 +0900 Subject: [PATCH] 20250402_2 --- .../java/com/example/demo/constant/Role.java | 7 +++ .../demo/controller/MemberController.java | 43 ++++++++++++++ .../demo/controller/TestController.java | 35 +++++++---- .../java/com/example/demo/dto/MemberDto.java | 16 +++++ .../java/com/example/demo/entity/Member.java | 44 ++++++++++++++ .../demo/repository/MemberRepository.java | 12 ++++ .../example/demo/service/MemberService.java | 40 +++++++++++++ src/main/resources/static/index.html | 33 +++++++++++ src/main/resources/static/product.html | 58 +++++++++++++++++++ 9 files changed, 278 insertions(+), 10 deletions(-) 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 create mode 100644 src/main/resources/static/index.html create mode 100644 src/main/resources/static/product.html 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..56d6a51 --- /dev/null +++ b/src/main/java/com/example/demo/constant/Role.java @@ -0,0 +1,7 @@ +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..98fc486 --- /dev/null +++ b/src/main/java/com/example/demo/controller/MemberController.java @@ -0,0 +1,43 @@ +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.*; + +@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); + return "OKOKOKOK"; + } + +} diff --git a/src/main/java/com/example/demo/controller/TestController.java b/src/main/java/com/example/demo/controller/TestController.java index 3090e9b..d3dac8a 100644 --- a/src/main/java/com/example/demo/controller/TestController.java +++ b/src/main/java/com/example/demo/controller/TestController.java @@ -11,18 +11,33 @@ import com.google.gson.JsonObject; @RestController public class TestController{ - @RequestMapping(value = "/", method = RequestMethod.GET) - public String test(@RequestParam("id") String id){ - - JsonObject obj = new JsonObject(); - obj.addProperty("title", "산사와 아가싸"); - obj.addProperty("content", "로맨틱 코메디"); + @RequestMapping(value = "/productlist", method = RequestMethod.GET) + public String productList(){ - JsonObject data = new JsonObject(); - data.addProperty("time", "토일 8시"); - obj.add("data", data); + JsonObject obj1 = new JsonObject(); + obj1.addProperty("item_nm", "수제 햄버거"); + obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거"); + obj1.addProperty("item_reg_date", "2022/04/22"); + obj1.addProperty("item_price", "4000"); - return obj.toString(); + JsonObject obj2 = new JsonObject(); + obj2.addProperty("item_nm", "카레라이스"); + obj2.addProperty("item_detail", "매운 3분 카레라이스"); + obj2.addProperty("item_reg_date", "2022/03/10"); + obj2.addProperty("item_price", "8000"); + JsonObject obj3 = new JsonObject(); + obj3.addProperty("item_nm", "라면"); + obj3.addProperty("item_detail", "소고기 라면"); + obj3.addProperty("item_reg_date", "2021/09/10"); + obj3.addProperty("item_price", "1500"); + + JsonArray infoArray = new JsonArray(); + infoArray.add(obj1); + infoArray.add(obj2); + infoArray.add(obj3); + + return infoArray.toString(); } + } \ No newline at end of file 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..d326198 --- /dev/null +++ b/src/main/java/com/example/demo/dto/MemberDto.java @@ -0,0 +1,16 @@ +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..9eca597 --- /dev/null +++ b/src/main/java/com/example/demo/entity/Member.java @@ -0,0 +1,44 @@ +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..8cce2a1 --- /dev/null +++ b/src/main/java/com/example/demo/repository/MemberRepository.java @@ -0,0 +1,12 @@ + +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..bb17a34 --- /dev/null +++ b/src/main/java/com/example/demo/service/MemberService.java @@ -0,0 +1,40 @@ +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; + + } + +} + + diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 0000000..be46fa1 --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>Insert title here</title> + + <link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> + <script src="/webjars/jquery/3.6.0/jquery.min.js"></script> + <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> + <script src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> +</head> + +<body> +<div class="container"> + <table class="table table-hover"> + <thead class="thead-dark"> + <tr> + <th>codeId</th> + <th>code</th> + <th>codeNm</th> + <th>codeDc</th> + </tr> + </thead> + <tbody> + <tr> + <td>COM001</td> + <td>REG01</td> + <td>단일 게시판 이용 등록</td> + <td>단일 게시판 이용 등록</td> + </tr> + <tr> + <td>COM001</td> + <td>REG02</td> diff --git a/src/main/resources/static/product.html b/src/main/resources/static/product.html new file mode 100644 index 0000000..c3c7791 --- /dev/null +++ b/src/main/resources/static/product.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Product</title> + <link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> + <script src="/webjars/jquery/3.6.0/jquery.min.js"></script> + <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> + <script src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> + <script> + $(document).ready(function(){ + $("button").click(function(){ + + $.ajax({ + + type: 'GET', + url: '/productlist', + success: function(data){ + var array = JSON.parse(data); + for(i=0; i < array.length; i++){ + var obj = array[i]; + html = ''; + html += '<tr>'; + html += '<td>' + obj.item_nm + '</td>' + html += '<td>' + obj.item_detail + '</td>' + html += '<td>' + obj.item_reg_date + '</td>' + html += '<td>' + obj.item_price + '</td>' + html += '</tr>'; + $("#tableBody").append(html); + } + + } + + }); + + + }); + }); + </script> + +</head> +<body> +<h1>상품 데이터 목록 출력</h1> +<button>조회</button> +<table class="table table-hover"> + <thead class="thead-dark"> + <tr> + <th>상품이름</th> + <th>상품상세설명</th> + <th>상품등록일</th> + <th>상품가격</th> + </tr> + </thead> + <tbody id="tableBody"> + </tbody> +</table> +</body> +</html> -- GitLab