FreelanceBot

Форк
0
78 строк · 2.0 Кб
1
package telegramBot.service;
2

3
import org.springframework.boot.CommandLineRunner;
4
import org.springframework.stereotype.Service;
5
import telegramBot.entity.Order;
6
import telegramBot.enums.Exchange;
7
import telegramBot.enums.Language;
8
import telegramBot.repository.OrderRepository;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import telegramBot.util.BotUtil;
11

12
import java.time.LocalDate;
13
import java.util.*;
14

15
@Service
16
public class OrderService implements CommandLineRunner {
17

18
    @Autowired
19
    private OrderRepository orderRepository;
20

21

22
    public boolean saveIfNotExist(Order order) {
23
        if (this.orderRepository.existByLink(order.getLink())) return false;
24
        this.orderRepository.save(order);
25
        return true;
26
    }
27

28

29
    public synchronized void deleteOld() {
30
        for(Exchange exchange : Exchange.getExchanges()) {
31
            LocalDate deleteDate = currentDateMinusExchangeRefreshInterval(exchange.getRefreshInterval());
32
            this.orderRepository.deleteByExchangeAndDate(exchange, deleteDate);
33
        }
34

35
        waitDay();
36
    }
37

38
    @Override
39
    public void run(String... args) throws Exception {
40
        new Thread(() -> {
41
            while (true) {
42
                deleteOld();
43
            }
44
        }).start();
45
    }
46

47
    private synchronized void waitDay() {
48
        try {
49
            Thread.sleep(BotUtil.DAY_MILLISECONDS);
50
        } catch (InterruptedException e) {
51
            e.getCause();
52

53
        }
54
    }
55

56
    public Order save(Order order) {
57
        return this.orderRepository.save(order);
58
    }
59

60
    public boolean exist(Order order) {
61
        String link = order.getLink();
62
        return this.orderRepository.existByLink(link);
63
    }
64

65
    public List<Order> getAllByLanguage(Language language){
66
        return this.orderRepository.getAllByLanguage(language);
67
    }
68

69
    public void update(Order order) {
70
        this.orderRepository.save(order);
71
    }
72
    
73

74
    private LocalDate currentDateMinusExchangeRefreshInterval(int interval){
75
        return LocalDate.now().minusDays(interval);
76
    }
77

78
}
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.