From 31cd9f80eaf09c158bf8e3032d4878086bf2c873 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 21:56:00 +0900 Subject: [PATCH] =?UTF-8?q?feat(spring):=20=EC=9E=A5=EA=B8=B0=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EB=A9=94=EC=9D=BC=20=EC=95=8C=EB=A6=BC=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 --- .../org/example/thiefsil/entity/Vehicle.java | 1 + .../thiefsil/repository/VehicleRepository.java | 4 +++- .../thiefsil/service/ChargingService.java | 18 ++++++++++++++++++ .../thiefsil/service/WebMailService.java | 17 +++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/server-node-spring/src/main/java/org/example/thiefsil/entity/Vehicle.java b/server-node-spring/src/main/java/org/example/thiefsil/entity/Vehicle.java index 25987e9..72267d3 100644 --- a/server-node-spring/src/main/java/org/example/thiefsil/entity/Vehicle.java +++ b/server-node-spring/src/main/java/org/example/thiefsil/entity/Vehicle.java @@ -26,5 +26,6 @@ public class Vehicle { private Integer charge; private boolean isElectric; private LocalDateTime parkingTime; + private LocalDateTime lastMail; private Integer charger; } diff --git a/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java b/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java index 686ad3d..6e2781d 100644 --- a/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java +++ b/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java @@ -5,13 +5,15 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.time.LocalDateTime; +import java.util.List; import java.util.Optional; public interface VehicleRepository extends JpaRepository<Vehicle, Long> { public Optional<Vehicle> findVehicleByNumber(String number); - //public Optional<Vehicle> findVehicleByCharger(int charger); @Query("SELECT v FROM Vehicle v WHERE v.charger = :charger") Optional<Vehicle> findVehicleByCharger(@Param("charger") int charger); public void deleteVehicleByCharger(int charger); + public List<Vehicle> findVehiclesByParkingTimeBeforeAndLastMailBefore(LocalDateTime parkingTime, LocalDateTime lastMail); } 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 62cb1f1..fa02a54 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 @@ -95,6 +95,7 @@ public class ChargingService { Vehicle vehicle = vehicleRepository.findVehicleByCharger(Integer.valueOf(lot)).orElse(null); if (vehicle == null) return; vehicle.setParkingTime(LocalDateTime.now(ZoneId.of("Asia/Seoul"))); + vehicle.setLastMail(LocalDateTime.now(ZoneId.of("Asia/Seoul"))); vehicleRepository.save(vehicle); } @@ -125,6 +126,23 @@ public class ChargingService { webMailService.sendFireMail(lot); } + @Scheduled(fixedRate = 60000) + public void overParking() { + LocalDateTime park = LocalDateTime.now(ZoneId.of("Asia/Seoul")); + LocalDateTime mail = LocalDateTime.now(ZoneId.of("Asia/Seoul")); + + park = park.minusMinutes(3); + mail = mail.minusMinutes(1); + + List<Vehicle> vehicles = vehicleRepository.findVehiclesByParkingTimeBeforeAndLastMailBefore(park, mail); + for (Vehicle vehicle : vehicles) { + webMailService.sendOverMail(vehicle); + vehicle.setLastMail(mail); + vehicleRepository.save(vehicle); + } + + } + @PostConstruct public void init() { 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 e545386..a375b97 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 @@ -13,6 +13,9 @@ import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import java.io.IOException; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.List; @Service @@ -54,4 +57,18 @@ public class WebMailService { } } + public void sendOverMail(Vehicle vehicle) { + SimpleMailMessage message = new SimpleMailMessage(); + Driver driver = vehicle.getDriver(); + long time = Duration.between(vehicle.getParkingTime(), LocalDateTime.now(ZoneId.of("Asia/Seoul"))).toMinutes(); + + message.setTo(driver.getEmail()); + message.setSubject("[시프 충전소] " + driver.getName() + "님 주차 시간이 만료되었습니다"); + message.setText(vehicle.getNumber() + " 차량을 " + vehicle.getCharger() + "번 충전기에 주차한지 " + + time + "분이 지났습니다"); + + mailSender.send(message); + System.out.println(LocalDateTime.now(ZoneId.of("Asia/Seoul")) + " 메일 전송 " + vehicle.getNumber()); + } + } -- GitLab