From e5cd104930de319e28adc6d649ec68d67fc8579a Mon Sep 17 00:00:00 2001 From: arys Date: Sun, 29 Mar 2026 21:38:43 +0500 Subject: [PATCH] target fix --- .../repository/MarketingStrategyRepository.java | 2 +- .../parser/service/MarketingStrategyService.java | 4 ++-- .../parser/service/MarketingStrategyV3Service.java | 2 +- .../parser/service/TargetingCampaignService.java | 14 +++++++++++--- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/java/kz/konturai/parser/repository/MarketingStrategyRepository.java b/src/main/java/kz/konturai/parser/repository/MarketingStrategyRepository.java index c3d83e0..67a612a 100644 --- a/src/main/java/kz/konturai/parser/repository/MarketingStrategyRepository.java +++ b/src/main/java/kz/konturai/parser/repository/MarketingStrategyRepository.java @@ -10,7 +10,7 @@ import java.util.Optional; @Repository public interface MarketingStrategyRepository extends MongoRepository { Optional findById(String id); - Optional findByAnalysisId(String analysisId); + Optional findFirstByAnalysisIdOrderByCreatedAtDesc(String analysisId); List findByUserIdOrderByCreatedAtDesc(String userId); List findByUserIdAndAnalysisId(String userId, String analysisId); } diff --git a/src/main/java/kz/konturai/parser/service/MarketingStrategyService.java b/src/main/java/kz/konturai/parser/service/MarketingStrategyService.java index d8b9ab6..2123bcc 100644 --- a/src/main/java/kz/konturai/parser/service/MarketingStrategyService.java +++ b/src/main/java/kz/konturai/parser/service/MarketingStrategyService.java @@ -64,7 +64,7 @@ public class MarketingStrategyService { throw new IllegalStateException("Анализ еще не завершен. Статус: " + analysisResult.getStatus()); } - Optional existingStrategy = repository.findByAnalysisId(analysisId); + Optional existingStrategy = repository.findFirstByAnalysisIdOrderByCreatedAtDesc(analysisId); if (existingStrategy.isPresent()) { logger.info("Стратегия для анализа {} уже существует: {}", analysisId, existingStrategy.get().getId()); return existingStrategy.get(); @@ -710,7 +710,7 @@ public class MarketingStrategyService { } public MarketingStrategyResponse getStrategyByAnalysisId(String analysisId) { - Optional optStrategy = repository.findByAnalysisId(analysisId); + Optional optStrategy = repository.findFirstByAnalysisIdOrderByCreatedAtDesc(analysisId); if (optStrategy.isEmpty()) { return null; } diff --git a/src/main/java/kz/konturai/parser/service/MarketingStrategyV3Service.java b/src/main/java/kz/konturai/parser/service/MarketingStrategyV3Service.java index accc199..1add192 100644 --- a/src/main/java/kz/konturai/parser/service/MarketingStrategyV3Service.java +++ b/src/main/java/kz/konturai/parser/service/MarketingStrategyV3Service.java @@ -62,7 +62,7 @@ public class MarketingStrategyV3Service { } public Optional getStrategyByAnalysisId(String analysisId) { - return repository.findByAnalysisId(analysisId); + return repository.findFirstByAnalysisIdOrderByCreatedAtDesc(analysisId); } public List getUserStrategies(String userId) { diff --git a/src/main/java/kz/konturai/parser/service/TargetingCampaignService.java b/src/main/java/kz/konturai/parser/service/TargetingCampaignService.java index 39c69c3..88200f6 100644 --- a/src/main/java/kz/konturai/parser/service/TargetingCampaignService.java +++ b/src/main/java/kz/konturai/parser/service/TargetingCampaignService.java @@ -42,8 +42,16 @@ public class TargetingCampaignService { private final MarketingStrategyRepository strategyRepository; public TargetingCampaign createCampaign(TargetingCampaignRequest req, String userId) { - if (req.getAnalysisId() == null || req.getAnalysisId().isBlank()) { - throw new IllegalArgumentException("analysisId is required"); + if ((req.getAnalysisId() == null || req.getAnalysisId().isBlank()) && (req.getStrategyId() == null || req.getStrategyId().isBlank())) { + throw new IllegalArgumentException("analysisId or strategyId is required"); + } + + if (req.getStrategyId() != null && !req.getStrategyId().isBlank()) { + MarketingStrategy strategy = strategyRepository.findById(req.getStrategyId()) + .orElseThrow(() -> new IllegalArgumentException("Strategy not found: " + req.getStrategyId())); + if (req.getAnalysisId() == null || req.getAnalysisId().isBlank()) { + req.setAnalysisId(strategy.getAnalysisId()); + } } if (req.getTotalBudgetKzt() == null || req.getTotalBudgetKzt() <= 0) { throw new IllegalArgumentException("Valid budget is required"); @@ -104,7 +112,7 @@ public class TargetingCampaignService { if (req.getStrategyId() != null) { strategy = strategyRepository.findById(req.getStrategyId()).orElse(null); } else { - strategy = strategyRepository.findByAnalysisId(campaign.getAnalysisId()).orElse(null); + strategy = strategyRepository.findFirstByAnalysisIdOrderByCreatedAtDesc(campaign.getAnalysisId()).orElse(null); } if (strategy == null) { failCampaign(campaign, "Marketing Strategy containing media assets not found.");