Files
no-copy/src/main/java/ru/soune/nocopy/service/tariff/TariffInitializationService.java
T

153 lines
4.6 KiB
Java
Raw Normal View History

2026-01-30 12:52:16 +07:00
package ru.soune.nocopy.service.tariff;
import lombok.RequiredArgsConstructor;
2026-02-02 12:19:34 +07:00
import org.springframework.beans.factory.annotation.Value;
2026-01-30 12:52:16 +07:00
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.entity.tarif.Tariff;
import ru.soune.nocopy.entity.tarif.TariffType;
import ru.soune.nocopy.repository.TariffRepository;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class TariffInitializationService {
2026-02-02 12:19:34 +07:00
@Value("${tarif.demo-price}")
private long demoPrice;
@Value("${tarif.demo-tokens}")
private int demoTokens;
@Value("${tarif.demo-user-count}")
private long demoUserCount;
@Value("${tarif.demo-max-files-count}")
private int demoMaxFileCount;
@Value("${tarif.start-price}")
private long startPrice;
@Value("${tarif.start-tokens}")
private int startTokens;
@Value("${tarif.start-max-files-count}")
private int startMaxFileCount;
@Value("${tarif.start-user-count}")
private long startUserCount;
@Value("${tarif.basic-price}")
private long basicPrice;
@Value("${tarif.basic-tokens}")
private int basicTokens;
@Value("${tarif.basic-max-files-count}")
private int basicMaxFileCount;
@Value("${tarif.basic-user-count}")
private long basicUserCount;
@Value("${tarif.pro-price}")
private long proPrice;
@Value("${tarif.pro-tokens}")
private int proTokens;
@Value("${tarif.pro-max-files-count}")
private int proMaxFileCount;
@Value("${tarif.pro-user-count}")
private long proUserCount;
@Value("${tarif.enterprice-price}")
private long enterpricePrice;
@Value("${tarif.enterprice-tokens}")
private int enterpriceTokens;
@Value("${tarif.enterprice-max-files-count}")
private int enterpriceMaxFileCount;
@Value("${tarif.enterprice-user-count}")
private long enterpriceUserCount;
2026-01-30 12:52:16 +07:00
private final TariffRepository tariffRepository;
@EventListener(ApplicationReadyEvent.class)
@Transactional
public void initializeDefaultTariffs() {
List<Tariff> existingTariffs = tariffRepository.findAll();
if (existingTariffs.isEmpty()) {
createDefaultTariffs();
}
}
private void createDefaultTariffs() {
Arrays.stream(TariffType.values())
.forEach(this::createDefaultTariff);
}
private void createDefaultTariff(TariffType type) {
Tariff tariff = new Tariff();
tariff.setType(type.name());
switch (type) {
case DEMO:
tariff.setName("Демо");
2026-02-02 12:19:34 +07:00
tariff.setPrice(demoPrice);
tariff.setTokens(demoTokens);
tariff.setMaxFilesCount(demoMaxFileCount);
2026-01-30 12:52:16 +07:00
tariff.setDiskSize(1024L * 1024 * 100);
2026-02-02 12:19:34 +07:00
tariff.setMaxUsers(demoUserCount);
2026-01-30 12:52:16 +07:00
break;
case START:
tariff.setName("Стартовый");
2026-02-02 12:19:34 +07:00
tariff.setPrice(startPrice);
tariff.setTokens(startTokens);
tariff.setMaxFilesCount(startMaxFileCount);
2026-01-30 12:52:16 +07:00
tariff.setDiskSize(1024L * 1024 * 500);
2026-02-02 12:19:34 +07:00
tariff.setMaxUsers(startUserCount);
2026-01-30 12:52:16 +07:00
break;
case BASIC:
tariff.setName("Базовый");
2026-02-02 12:19:34 +07:00
tariff.setPrice(basicPrice);
tariff.setTokens(basicTokens);
tariff.setMaxFilesCount(basicMaxFileCount);
2026-01-30 12:52:16 +07:00
tariff.setDiskSize(1024L * 1024 * 1024 * 2L);
2026-02-02 12:19:34 +07:00
tariff.setMaxUsers(basicUserCount);
2026-01-30 12:52:16 +07:00
break;
case PRO:
tariff.setName("Профессиональный");
2026-02-02 12:19:34 +07:00
tariff.setPrice(proPrice);
tariff.setTokens(proTokens);
tariff.setMaxFilesCount(proMaxFileCount);
2026-01-30 12:52:16 +07:00
tariff.setDiskSize(1024L * 1024 * 1024 * 10L);
2026-02-02 12:19:34 +07:00
tariff.setMaxUsers(proUserCount);
2026-01-30 12:52:16 +07:00
break;
case ENTERPRISE:
tariff.setName("Корпоративный");
2026-02-02 12:19:34 +07:00
tariff.setPrice(enterpricePrice);
tariff.setTokens(enterpriceTokens);
tariff.setMaxFilesCount(enterpriceMaxFileCount);
2026-01-30 12:52:16 +07:00
tariff.setDiskSize(1024L * 1024 * 1024 * 50L);
2026-02-02 12:19:34 +07:00
tariff.setMaxUsers(enterpriceUserCount);
2026-01-30 12:52:16 +07:00
break;
}
tariffRepository.save(tariff);
}
}