FreelanceBot
98 строк · 3.3 Кб
1package telegramBot.service;
2
3import org.springframework.boot.CommandLineRunner;
4import org.springframework.context.annotation.Lazy;
5import org.springframework.stereotype.Service;
6import telegramBot.entity.Exchange;
7import telegramBot.entity.Order;
8import telegramBot.entity.Subscription;
9import telegramBot.enums.BotStatus;
10import telegramBot.enums.Language;
11import telegramBot.enums.SubscriptionStatus;
12import telegramBot.repository.ExchangeRepository;
13import org.springframework.beans.factory.annotation.Autowired;
14import telegramBot.task.ExchangeParser;
15
16import java.util.*;
17
18@Service
19public class ExchangeService implements CommandLineRunner {
20
21@Autowired
22private ExchangeRepository exchangeRepository;
23
24@Autowired
25private SubscriptionService subscriptionService;
26
27@Autowired
28private @Lazy BotService botService;
29
30@Autowired
31private OrderService orderService;
32
33@Autowired
34private ExchangeParser parser;
35
36public Exchange get(telegramBot.enums.Exchange exchange) {
37return this.exchangeRepository.getByName(exchange.getName());
38}
39
40public void init() {
41List<Subscription> subscriptions = subscriptionService.getAllByStatus(SubscriptionStatus.CREATE);
42telegramBot.enums.Exchange[] exchanges = telegramBot.enums.Exchange.getExchanges();
43for (Subscription subscription : subscriptions) {
44Language language = Language.ignoreCaseValueOf(subscription.getLanguage());
45Map<telegramBot.enums.Exchange, List<Order>> exchangesOrders = this.parser.getOrders(language);
46for (telegramBot.enums.Exchange e : exchanges) {
47List<Order> orders = exchangesOrders.get(e);
48telegramBot.entity.Exchange exchange = get(e);
49for (Order order : orders) {
50if (orderService.saveIfNotExist(order)) {
51order.setExchange(exchange);
52order.setSubscription(subscription);
53this.orderService.update(order);
54}
55}
56}
57subscription.setStatus(SubscriptionStatus.INIT);
58subscriptionService.update(subscription);
59}
60}
61
62
63public void update(Exchange exchange) {
64this.exchangeRepository.save(exchange);
65}
66
67@Override
68public void run(String... args) throws Exception {
69new Thread(this::init).start();
70}
71
72public List<Order> findNewOrders(Language language) {
73List<Order> newOrders = new ArrayList<>();
74telegramBot.enums.Exchange[] exchanges = telegramBot.enums.Exchange.getExchanges();
75Map<telegramBot.enums.Exchange, List<Order>> taskOrders = this.parser.getOrders(language);
76for (telegramBot.enums.Exchange e : exchanges) {
77List<Order> ordersByExchange = taskOrders.get(e);
78for (Order order : ordersByExchange) {
79if (!this.orderService.exist(order)) {
80Exchange exchange = this.exchangeRepository.getByName(e.getName());
81Subscription subscription = this.subscriptionService.getByLanguage(language);
82
83order.setExchange(exchange);
84order.setSubscription(subscription);
85newOrders.add(order);
86
87}
88}
89
90}
91return newOrders;
92}
93
94
95
96
97
98}
99