FreelanceBot
78 строк · 2.0 Кб
1package telegramBot.service;
2
3import org.springframework.boot.CommandLineRunner;
4import org.springframework.stereotype.Service;
5import telegramBot.entity.Order;
6import telegramBot.enums.Exchange;
7import telegramBot.enums.Language;
8import telegramBot.repository.OrderRepository;
9import org.springframework.beans.factory.annotation.Autowired;
10import telegramBot.util.BotUtil;
11
12import java.time.LocalDate;
13import java.util.*;
14
15@Service
16public class OrderService implements CommandLineRunner {
17
18@Autowired
19private OrderRepository orderRepository;
20
21
22public boolean saveIfNotExist(Order order) {
23if (this.orderRepository.existByLink(order.getLink())) return false;
24this.orderRepository.save(order);
25return true;
26}
27
28
29public synchronized void deleteOld() {
30for(Exchange exchange : Exchange.getExchanges()) {
31LocalDate deleteDate = currentDateMinusExchangeRefreshInterval(exchange.getRefreshInterval());
32this.orderRepository.deleteByExchangeAndDate(exchange, deleteDate);
33}
34
35waitDay();
36}
37
38@Override
39public void run(String... args) throws Exception {
40new Thread(() -> {
41while (true) {
42deleteOld();
43}
44}).start();
45}
46
47private synchronized void waitDay() {
48try {
49Thread.sleep(BotUtil.DAY_MILLISECONDS);
50} catch (InterruptedException e) {
51e.getCause();
52
53}
54}
55
56public Order save(Order order) {
57return this.orderRepository.save(order);
58}
59
60public boolean exist(Order order) {
61String link = order.getLink();
62return this.orderRepository.existByLink(link);
63}
64
65public List<Order> getAllByLanguage(Language language){
66return this.orderRepository.getAllByLanguage(language);
67}
68
69public void update(Order order) {
70this.orderRepository.save(order);
71}
72
73
74private LocalDate currentDateMinusExchangeRefreshInterval(int interval){
75return LocalDate.now().minusDays(interval);
76}
77
78}
79