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.stereotype.Repository;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffTimeTerm;
import java.time.LocalDateTime;
import java.util.List;
@@ -57,7 +58,7 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
WHERE ti.endTariff >= CURRENT_TIMESTAMP
AND (:term IS NULL OR ti.tariff.tariffTerm = :term)
""")
Long getCurrentActiveSubscriptions(@Param("term") String term);
Long getCurrentActiveSubscriptions(@Param("term") TariffTimeTerm term);
@Query("""
SELECT ti
@@ -65,5 +66,5 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
WHERE (:term IS NULL OR ti.tariff.tariffTerm = :term)
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 ru.soune.nocopy.dto.statistic.SubscriberStatisticResponse;
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.repository.TariffInfoRepository;
import ru.soune.nocopy.repository.UserRepository;
@@ -15,22 +16,18 @@ import java.util.*;
@RequiredArgsConstructor
@Slf4j
public class SubscriberStatisticService {
private final TariffInfoRepository tariffInfoRepository;
private final UserRepository userRepository;
private static final String TERM_MONTHLY = "MONTHLY";
private static final String TERM_YEARLY = "YEAR";
public SubscriberStatisticResponse getSubscriberStatistics() {
return SubscriberStatisticResponse.builder()
.monthly(buildPeriodStatistics(TERM_MONTHLY))
.yearly(buildPeriodStatistics(TERM_YEARLY))
.monthly(buildPeriodStatistics(TariffTimeTerm.MONTHLY))
.yearly(buildPeriodStatistics(TariffTimeTerm.YEAR))
.build();
}
private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(String term) {
private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(TariffTimeTerm term) {
Long currentActive = tariffInfoRepository.getCurrentActiveSubscriptions(term);
List<TariffInfo> allTariffs = tariffInfoRepository.getAllTariffInfosForAnalysis(term);