From 5c88b9f534ff89d8a94b3de54545c3005fe60853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B8=D0=BC=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Fri, 12 Sep 2025 05:47:34 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20src/main/java/org/lanit/service/JsonProcessingService.?= =?UTF-8?q?java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lanit/service/JsonProcessingService.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/org/lanit/service/JsonProcessingService.java diff --git a/src/main/java/org/lanit/service/JsonProcessingService.java b/src/main/java/org/lanit/service/JsonProcessingService.java new file mode 100644 index 0000000..62752f1 --- /dev/null +++ b/src/main/java/org/lanit/service/JsonProcessingService.java @@ -0,0 +1,63 @@ +package org.lanit.service; + +import org.lanit.models.*; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Optional; + +@Service +public class JsonProcessingService { + + public Info processAdd(AddRequest request) { + Info info = request.getInfo(); + Add add = request.getAdd(); + List tickers = info.getTickers(); + + // Ищем тикер + Optional existingTicker = tickers.stream() + .filter(t -> t.getTicker().equals(add.getName())) + .findFirst(); + + Ticker targetTicker; + if (existingTicker.isPresent()) { + targetTicker = existingTicker.get(); + } else { + // Создаем новый тикер + targetTicker = new Ticker(); + targetTicker.setTicker(add.getName()); + targetTicker.setAlerts(new java.util.ArrayList<>()); + tickers.add(targetTicker); + } + + // Создаем и добавляем оповещение + Alert newAlert = new Alert(); + newAlert.setTimeFrame(add.getTimeFrame()); + newAlert.setPercent(add.getPercent()); + targetTicker.getAlerts().add(newAlert); + + return info; + } + + public Info processDelete(DeleteRequest request) { + Info info = request.getInfo(); + Delete delete = request.getDelete(); + List tickers = info.getTickers(); + + // Ищем тикер + Ticker targetTicker = tickers.stream() + .filter(t -> t.getTicker().equals(delete.getTickerName())) + .findFirst() + .orElseThrow(() -> new RuntimeException("Передан некорректный тикер")); + + // Проверяем индекс + List alerts = targetTicker.getAlerts(); + int index = delete.getAlertIndex(); + if (index < 0 || index >= alerts.size()) { + throw new RuntimeException("Передан некорректный индекс"); + } + + // Удаляем оповещение + alerts.remove(index); + return info; + } +} \ No newline at end of file