From 52291d62646e1aa2b3f5aaa8a50bf9303ce326ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=B2=9C=20=EC=A7=84=EA=B0=95?= <jjjjjk12@ajou.ac.kr>
Date: Tue, 3 Dec 2024 14:23:13 +0900
Subject: [PATCH] =?UTF-8?q?feat(spring):=20=EC=9D=B4=EC=A0=84=20=EC=9D=B4?=
 =?UTF-8?q?=EC=9A=A9=20=EC=B0=A8=EB=9F=89=20=EC=BA=90=EC=8B=B1=20=EA=B8=B0?=
 =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...ishController.java => MainController.java} | 10 ++++++-
 .../org/example/thiefsil/entity/Cache.java    | 23 ++++++++++++++++
 .../org/example/thiefsil/entity/Driver.java   |  1 -
 .../thiefsil/repository/CacheRepository.java  | 10 +++++++
 .../thiefsil/service/ChargingService.java     | 26 +++++++++++++++----
 5 files changed, 63 insertions(+), 7 deletions(-)
 rename server-node-spring/src/main/java/org/example/thiefsil/controller/{ExtinguishController.java => MainController.java} (72%)
 create mode 100644 server-node-spring/src/main/java/org/example/thiefsil/entity/Cache.java
 create mode 100644 server-node-spring/src/main/java/org/example/thiefsil/repository/CacheRepository.java

diff --git a/server-node-spring/src/main/java/org/example/thiefsil/controller/ExtinguishController.java b/server-node-spring/src/main/java/org/example/thiefsil/controller/MainController.java
similarity index 72%
rename from server-node-spring/src/main/java/org/example/thiefsil/controller/ExtinguishController.java
rename to server-node-spring/src/main/java/org/example/thiefsil/controller/MainController.java
index 6d61f6d..4776466 100644
--- a/server-node-spring/src/main/java/org/example/thiefsil/controller/ExtinguishController.java
+++ b/server-node-spring/src/main/java/org/example/thiefsil/controller/MainController.java
@@ -1,6 +1,8 @@
 package org.example.thiefsil.controller;
 
 import lombok.RequiredArgsConstructor;
+import org.example.thiefsil.entity.Cache;
+import org.example.thiefsil.repository.CacheRepository;
 import org.example.thiefsil.repository.SocketRepository;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -12,9 +14,10 @@ import java.util.List;
 
 @Controller
 @RequiredArgsConstructor
-public class ExtinguishController {
+public class MainController {
 
     private final SocketRepository socketRepository;
+    private final CacheRepository cacheRepository;
 
     @GetMapping("/api/clear")
     public void clear() throws IOException {
@@ -24,4 +27,9 @@ public class ExtinguishController {
             session.sendMessage(new TextMessage("CLEAR"));
         }
     }
+
+    @GetMapping("/api/cache")
+    public List<Cache> cache() {
+        return cacheRepository.findAll();
+    }
 }
diff --git a/server-node-spring/src/main/java/org/example/thiefsil/entity/Cache.java b/server-node-spring/src/main/java/org/example/thiefsil/entity/Cache.java
new file mode 100644
index 0000000..57adf79
--- /dev/null
+++ b/server-node-spring/src/main/java/org/example/thiefsil/entity/Cache.java
@@ -0,0 +1,23 @@
+package org.example.thiefsil.entity;
+
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "cache")
+public class Cache {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String number;
+    private boolean isElectric;
+}
diff --git a/server-node-spring/src/main/java/org/example/thiefsil/entity/Driver.java b/server-node-spring/src/main/java/org/example/thiefsil/entity/Driver.java
index 39155b0..5f77137 100644
--- a/server-node-spring/src/main/java/org/example/thiefsil/entity/Driver.java
+++ b/server-node-spring/src/main/java/org/example/thiefsil/entity/Driver.java
@@ -12,7 +12,6 @@ import lombok.*;
 public class Driver {
 
     @Id
-    @GeneratedValue
     private Long id;
     private String name;
     private String email;
diff --git a/server-node-spring/src/main/java/org/example/thiefsil/repository/CacheRepository.java b/server-node-spring/src/main/java/org/example/thiefsil/repository/CacheRepository.java
new file mode 100644
index 0000000..13d2a1b
--- /dev/null
+++ b/server-node-spring/src/main/java/org/example/thiefsil/repository/CacheRepository.java
@@ -0,0 +1,10 @@
+package org.example.thiefsil.repository;
+
+import org.example.thiefsil.entity.Cache;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.Optional;
+
+public interface CacheRepository extends JpaRepository<Cache, Long> {
+    Optional<Cache> findByNumber(String number);
+}
diff --git a/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java b/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java
index 77cc5ec..f57d83c 100644
--- a/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java
+++ b/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java
@@ -10,6 +10,7 @@ import jakarta.transaction.Transactional;
 import lombok.RequiredArgsConstructor;
 import org.example.thiefsil.dto.CarDTO;
 import org.example.thiefsil.dto.ValidateCarDTO;
+import org.example.thiefsil.entity.Cache;
 import org.example.thiefsil.entity.Driver;
 import org.example.thiefsil.entity.Vehicle;
 import org.example.thiefsil.repository.*;
@@ -40,6 +41,7 @@ public class ChargingService {
     private final VehicleRepository vehicleRepository;
     private final WebMailService webMailService;
     private final EntityManager entityManager;
+    private final CacheRepository cacheRepository;
 
     @Value("${test.mail}")
     private String mail;
@@ -155,6 +157,13 @@ public class ChargingService {
     }
 
     public boolean validate(String lot, String number) {
+
+        Cache cache = cacheRepository.findByNumber(number).orElse(null);
+
+        if (cache != null) {
+            return cache.isElectric();
+        }
+
         RestTemplate restTemplate = new RestTemplate();
         HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", "application/json");
@@ -165,11 +174,15 @@ public class ChargingService {
         System.out.println(number);
         System.out.println(validateCarDTO);
         if (validateCarDTO.getError() != null) {
+            Cache tmp = Cache.builder().number(number).isElectric(false).build();
+            cacheRepository.save(tmp);
             return false;
         }
 
         if (validateCarDTO.getUseFuel().contains("전기")) {
             makeVehicle(lot, number);
+            Cache tmp = Cache.builder().number(number).isElectric(true).build();
+            cacheRepository.save(tmp);
             return true;
         }
         else return false;
@@ -178,11 +191,14 @@ public class ChargingService {
     @PostConstruct
     public void init() {
 
-        Driver d1 = Driver.builder().name("홍길동").email(mail).build();
-        Driver d2 = Driver.builder().name("구자욱").email(mail).build();
-        Driver d3 = Driver.builder().name("김도영").email(mail).build();
-        Driver d4 = Driver.builder().name("원태인").email(mail).build();
-        Driver d5 = Driver.builder().name("임찬규").email(mail).build();
+        driverRepository.deleteAll();
+        vehicleRepository.deleteAll();
+
+        Driver d1 = Driver.builder().id(1L).name("홍길동").email(mail).build();
+        Driver d2 = Driver.builder().id(2L).name("구자욱").email(mail).build();
+        Driver d3 = Driver.builder().id(3L).name("김도영").email(mail).build();
+        Driver d4 = Driver.builder().id(4L).name("원태인").email(mail).build();
+        Driver d5 = Driver.builder().id(5L).name("임찬규").email(mail).build();
 
         driverRepository.save(d1);
         driverRepository.save(d2);
-- 
GitLab