Skip to content
Snippets Groups Projects
Commit 31cd9f80 authored by 천 진강's avatar 천 진강
Browse files

feat(spring): 장기주차 메일 알림 기능 추가

parent 43b6e786
No related branches found
No related tags found
No related merge requests found
...@@ -26,5 +26,6 @@ public class Vehicle { ...@@ -26,5 +26,6 @@ public class Vehicle {
private Integer charge; private Integer charge;
private boolean isElectric; private boolean isElectric;
private LocalDateTime parkingTime; private LocalDateTime parkingTime;
private LocalDateTime lastMail;
private Integer charger; private Integer charger;
} }
...@@ -5,13 +5,15 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,13 +5,15 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface VehicleRepository extends JpaRepository<Vehicle, Long> { public interface VehicleRepository extends JpaRepository<Vehicle, Long> {
public Optional<Vehicle> findVehicleByNumber(String number); public Optional<Vehicle> findVehicleByNumber(String number);
//public Optional<Vehicle> findVehicleByCharger(int charger);
@Query("SELECT v FROM Vehicle v WHERE v.charger = :charger") @Query("SELECT v FROM Vehicle v WHERE v.charger = :charger")
Optional<Vehicle> findVehicleByCharger(@Param("charger") int charger); Optional<Vehicle> findVehicleByCharger(@Param("charger") int charger);
public void deleteVehicleByCharger(int charger); public void deleteVehicleByCharger(int charger);
public List<Vehicle> findVehiclesByParkingTimeBeforeAndLastMailBefore(LocalDateTime parkingTime, LocalDateTime lastMail);
} }
...@@ -95,6 +95,7 @@ public class ChargingService { ...@@ -95,6 +95,7 @@ public class ChargingService {
Vehicle vehicle = vehicleRepository.findVehicleByCharger(Integer.valueOf(lot)).orElse(null); Vehicle vehicle = vehicleRepository.findVehicleByCharger(Integer.valueOf(lot)).orElse(null);
if (vehicle == null) return; if (vehicle == null) return;
vehicle.setParkingTime(LocalDateTime.now(ZoneId.of("Asia/Seoul"))); vehicle.setParkingTime(LocalDateTime.now(ZoneId.of("Asia/Seoul")));
vehicle.setLastMail(LocalDateTime.now(ZoneId.of("Asia/Seoul")));
vehicleRepository.save(vehicle); vehicleRepository.save(vehicle);
} }
...@@ -125,6 +126,23 @@ public class ChargingService { ...@@ -125,6 +126,23 @@ public class ChargingService {
webMailService.sendFireMail(lot); 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 @PostConstruct
public void init() { public void init() {
......
...@@ -13,6 +13,9 @@ import org.springframework.web.socket.TextMessage; ...@@ -13,6 +13,9 @@ import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.WebSocketSession;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List; import java.util.List;
@Service @Service
...@@ -54,4 +57,18 @@ public class WebMailService { ...@@ -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());
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment