This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user