dev add statistic files protected
Test Workflow / test (push) Successful in 2s

This commit is contained in:
vladp
2026-04-16 00:37:24 +07:00
parent 42a5368003
commit db3dcb8166
2 changed files with 8 additions and 10 deletions
@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import ru.soune.nocopy.entity.tarif.TariffInfo; import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffTimeTerm;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -57,7 +58,7 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
WHERE ti.endTariff >= CURRENT_TIMESTAMP WHERE ti.endTariff >= CURRENT_TIMESTAMP
AND (:term IS NULL OR ti.tariff.tariffTerm = :term) AND (:term IS NULL OR ti.tariff.tariffTerm = :term)
""") """)
Long getCurrentActiveSubscriptions(@Param("term") String term); Long getCurrentActiveSubscriptions(@Param("term") TariffTimeTerm term);
@Query(""" @Query("""
SELECT ti SELECT ti
@@ -65,5 +66,5 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
WHERE (:term IS NULL OR ti.tariff.tariffTerm = :term) WHERE (:term IS NULL OR ti.tariff.tariffTerm = :term)
ORDER BY ti.startTariff ORDER BY ti.startTariff
""") """)
List<TariffInfo> getAllTariffInfosForAnalysis(@Param("term") String term); List<TariffInfo> getAllTariffInfosForAnalysis(@Param("term") TariffTimeTerm term);
} }
@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.soune.nocopy.dto.statistic.SubscriberStatisticResponse; import ru.soune.nocopy.dto.statistic.SubscriberStatisticResponse;
import ru.soune.nocopy.entity.tarif.TariffInfo; import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffTimeTerm;
import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.TariffInfoRepository; import ru.soune.nocopy.repository.TariffInfoRepository;
import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.repository.UserRepository;
@@ -15,22 +16,18 @@ import java.util.*;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class SubscriberStatisticService { public class SubscriberStatisticService {
private final TariffInfoRepository tariffInfoRepository; private final TariffInfoRepository tariffInfoRepository;
private final UserRepository userRepository; private final UserRepository userRepository;
private static final String TERM_MONTHLY = "MONTHLY";
private static final String TERM_YEARLY = "YEAR";
public SubscriberStatisticResponse getSubscriberStatistics() { public SubscriberStatisticResponse getSubscriberStatistics() {
return SubscriberStatisticResponse.builder() return SubscriberStatisticResponse.builder()
.monthly(buildPeriodStatistics(TERM_MONTHLY)) .monthly(buildPeriodStatistics(TariffTimeTerm.MONTHLY))
.yearly(buildPeriodStatistics(TERM_YEARLY)) .yearly(buildPeriodStatistics(TariffTimeTerm.YEAR))
.build(); .build();
} }
private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(String term) { private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(TariffTimeTerm term) {
Long currentActive = tariffInfoRepository.getCurrentActiveSubscriptions(term); Long currentActive = tariffInfoRepository.getCurrentActiveSubscriptions(term);
List<TariffInfo> allTariffs = tariffInfoRepository.getAllTariffInfosForAnalysis(term); List<TariffInfo> allTariffs = tariffInfoRepository.getAllTariffInfosForAnalysis(term);