From 006479f1f412b4dfbe61f93fc4aea1442c6fd167 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, 19 Nov 2024 14:49:56 +0900
Subject: [PATCH] =?UTF-8?q?feat(spring):=20=EC=99=84=EC=B6=A9,=20=ED=99=94?=
 =?UTF-8?q?=EC=9E=AC=20=EA=B0=90=EC=A7=80=20=EB=A9=94=EC=9D=BC=20=EB=B0=9C?=
 =?UTF-8?q?=EC=86=A1=20=EA=B8=B0=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

---
 .../controller/WebMailController.java         |  2 +-
 .../thiefsil/service/ChargingService.java     | 10 ++++-
 .../thiefsil/service/WebMailService.java      | 37 +++++++++++++++++--
 3 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/server-node-spring/src/main/java/org/example/thiefsil/controller/WebMailController.java b/server-node-spring/src/main/java/org/example/thiefsil/controller/WebMailController.java
index d7c961a..6fab63f 100644
--- a/server-node-spring/src/main/java/org/example/thiefsil/controller/WebMailController.java
+++ b/server-node-spring/src/main/java/org/example/thiefsil/controller/WebMailController.java
@@ -14,7 +14,7 @@ public class WebMailController {
     @GetMapping("/hi")
     public String hi() {
 
-        webMailService.sendMail();
+        webMailService.sendChargeMail("0");
         return "hi";
     }
 }
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 18e5dfc..edef0b1 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
@@ -28,6 +28,7 @@ public class ChargingService {
     private final SocketRepository socketRepository;
     private final DriverRepository driverRepository;
     private final VehicleRepository vehicleRepository;
+    private final WebMailService webMailService;
 
 
     @Value("${test.mail}")
@@ -56,7 +57,12 @@ public class ChargingService {
     public void doCharging(String lot, String charge) {
         Vehicle vehicle = vehicleRepository.findVehicleByCharger(Integer.valueOf(lot)).orElse(null);
         if (vehicle == null) return;
-        vehicle.setCharge(Integer.valueOf(charge));
+        int c = Integer.valueOf(charge);
+        vehicle.setCharge(c);
+
+        if (c == 100) {
+            webMailService.sendChargeMail(lot);
+        }
         vehicleRepository.save(vehicle);
     }
 
@@ -103,6 +109,8 @@ public class ChargingService {
         for (WebSocketSession session : sessions) {
             session.sendMessage(new TextMessage(lot + "-FIRE"));
         }
+
+        webMailService.sendFireMail(lot);
     }
 
     @PostConstruct
diff --git a/server-node-spring/src/main/java/org/example/thiefsil/service/WebMailService.java b/server-node-spring/src/main/java/org/example/thiefsil/service/WebMailService.java
index d134339..e545386 100644
--- a/server-node-spring/src/main/java/org/example/thiefsil/service/WebMailService.java
+++ b/server-node-spring/src/main/java/org/example/thiefsil/service/WebMailService.java
@@ -1,26 +1,57 @@
 package org.example.thiefsil.service;
 
 import lombok.RequiredArgsConstructor;
+import org.example.thiefsil.entity.Driver;
+import org.example.thiefsil.entity.Vehicle;
+import org.example.thiefsil.repository.SocketRepository;
+import org.example.thiefsil.repository.VehicleRepository;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.mail.SimpleMailMessage;
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.stereotype.Service;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.io.IOException;
+import java.util.List;
 
 @Service
 @RequiredArgsConstructor
 public class WebMailService {
 
     private final JavaMailSender mailSender;
+    private final VehicleRepository vehicleRepository;
     @Value("${test.mail}")
     private String mail;
 
-    public void sendMail() {
+    public void sendChargeMail(String lot) {
+        SimpleMailMessage message = new SimpleMailMessage();
+        Vehicle vehicle = vehicleRepository.findVehicleByCharger(Integer.valueOf(lot)).orElse(null);
+        Driver driver = vehicle.getDriver();
+
+        message.setTo(driver.getEmail());
+        message.setSubject("[시프 충전소] " + driver.getName() + "님의 차량이 완충되었습니다");
+        message.setText(driver.getName() + "님의 " + vehicle.getNumber() + " 차량이 완충되었습니다");
+        mailSender.send(message);
+    }
+
+    public void sendFireMail(String lot) throws IOException {
         SimpleMailMessage message = new SimpleMailMessage();
 
         message.setTo(mail);
-        message.setSubject("테스트 메일");
-        message.setText("테스트 메일입니다");
+        message.setSubject("[시프 충전소] " + "(관리자) " + lot + "번 충전기에서 화재가 발생했습니다");
+        message.setText(lot + "번 충전기에서 화재가 발생했습니다");
+
         mailSender.send(message);
+
+        List<Vehicle> vehicles = vehicleRepository.findAll();
+
+        for (Vehicle vehicle : vehicles) {
+            Driver driver = vehicle.getDriver();
+            message.setTo(driver.getEmail());
+            message.setSubject("[시프 충전소] " + driver.getName() + "님 " + lot + "번 충전기에서 화재가 발생했습니다");
+            mailSender.send(message);
+        }
     }
 
 }
-- 
GitLab