diff --git a/src/main/java/ru/soune/nocopy/controller/UserController.java b/src/main/java/ru/soune/nocopy/controller/UserController.java index d816ec6..29d88ce 100644 --- a/src/main/java/ru/soune/nocopy/controller/UserController.java +++ b/src/main/java/ru/soune/nocopy/controller/UserController.java @@ -85,7 +85,7 @@ public class UserController { } if (user.canManageCompanySettings() || user.canLogin() && user.getCompany() == null) { - userDTO.setTariffs(tariffService.getAllTariffs()); + userDTO.setTariffs(tariffService.getTariffByAccountType(user)); Long fileOnDisk = user.canManageCompanySettings() ? fileStatsService.calculateCompanyFileSize(user.getId()): diff --git a/src/main/java/ru/soune/nocopy/dto/tarriff/TariffRequest.java b/src/main/java/ru/soune/nocopy/dto/tarriff/TariffRequest.java index b85ad5f..b623e6a 100644 --- a/src/main/java/ru/soune/nocopy/dto/tarriff/TariffRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/tarriff/TariffRequest.java @@ -46,4 +46,7 @@ public class TariffRequest { @JsonProperty("action") private String action; + + @JsonProperty("user_token") + private String userToken; } \ No newline at end of file diff --git a/src/main/java/ru/soune/nocopy/entity/tarif/Tariff.java b/src/main/java/ru/soune/nocopy/entity/tarif/Tariff.java index d7f145c..abf1395 100644 --- a/src/main/java/ru/soune/nocopy/entity/tarif/Tariff.java +++ b/src/main/java/ru/soune/nocopy/entity/tarif/Tariff.java @@ -37,4 +37,7 @@ public class Tariff { @Column(name = "max_users") private Long maxUsers; + + @Column(name = "tariffAccountType") + private String tariffAccountType; } diff --git a/src/main/java/ru/soune/nocopy/entity/tarif/TariffType.java b/src/main/java/ru/soune/nocopy/entity/tarif/TariffType.java index 5158cb4..43ae949 100644 --- a/src/main/java/ru/soune/nocopy/entity/tarif/TariffType.java +++ b/src/main/java/ru/soune/nocopy/entity/tarif/TariffType.java @@ -2,5 +2,5 @@ package ru.soune.nocopy.entity.tarif; public enum TariffType { - START, BASIC, PRO, ENTERPRISE, DEMO; + START, BASIC, PRO, ENTERPRISE, DEMO, BUISNES, CORPORAT, STUDIO, FREE; } \ No newline at end of file diff --git a/src/main/java/ru/soune/nocopy/handler/TariffHandler.java b/src/main/java/ru/soune/nocopy/handler/TariffHandler.java index f3a035a..50ea527 100644 --- a/src/main/java/ru/soune/nocopy/handler/TariffHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/TariffHandler.java @@ -10,6 +10,9 @@ import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.tarriff.TariffDTO; import ru.soune.nocopy.dto.tarriff.TariffRequest; import ru.soune.nocopy.dto.tarriff.TariffResponse; +import ru.soune.nocopy.entity.user.AuthToken; +import ru.soune.nocopy.entity.user.User; +import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.service.tariff.TariffService; import java.util.List; @@ -24,6 +27,8 @@ public class TariffHandler implements RequestHandler { private final TariffService tariffService; + private final AuthTokenRepository authTokenRepository; + @Override public BaseResponse handle(BaseRequest request) throws Exception { try { @@ -113,7 +118,9 @@ public class TariffHandler implements RequestHandler { } private BaseResponse handleGetTariffs(BaseRequest request, TariffRequest tariffRequest) { - List allTariffs = tariffService.getAllTariffs(); + AuthToken authToken = authTokenRepository.findByToken(tariffRequest.getUserToken()).orElseThrow(); + User user = authToken.getUser(); + List allTariffs = tariffService.getTariffByAccountType(user); return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), MessageCode.SUCCESS.getDescription(), diff --git a/src/main/java/ru/soune/nocopy/repository/TariffRepository.java b/src/main/java/ru/soune/nocopy/repository/TariffRepository.java index 73ba687..a0e3bc9 100644 --- a/src/main/java/ru/soune/nocopy/repository/TariffRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/TariffRepository.java @@ -12,5 +12,6 @@ import java.util.Optional; public interface TariffRepository extends JpaRepository { Optional findByType(String type); List findAllByOrderByPriceAsc(); + List findByTariffAccountType(String typeAccount); Tariff findByName(String name); } diff --git a/src/main/java/ru/soune/nocopy/service/tariff/TariffInitializationService.java b/src/main/java/ru/soune/nocopy/service/tariff/TariffInitializationService.java index 83b9a22..0e037fa 100644 --- a/src/main/java/ru/soune/nocopy/service/tariff/TariffInitializationService.java +++ b/src/main/java/ru/soune/nocopy/service/tariff/TariffInitializationService.java @@ -101,40 +101,44 @@ public class TariffInitializationService { tariff.setType(type.name()); switch (type) { - case DEMO: - tariff.setName("demo"); - tariff.setPrice(demoPrice); - tariff.setTokens(demoTokens); - tariff.setMaxFilesCount(demoMaxFileCount); + case FREE: + tariff.setName("free"); + tariff.setPrice(0); + tariff.setTokens(30); + tariff.setMaxFilesCount(10); tariff.setDiskSize(1024L * 1024 * 100); - tariff.setMaxUsers(demoUserCount); + tariff.setMaxUsers(1L); + tariff.setTariffAccountType("b2c"); break; case START: tariff.setName("start"); - tariff.setPrice(startPrice); - tariff.setTokens(startTokens); - tariff.setMaxFilesCount(startMaxFileCount); + tariff.setPrice(1200); + tariff.setTokens(300); + tariff.setMaxFilesCount(80); tariff.setDiskSize(1024L * 1024 * 500); - tariff.setMaxUsers(startUserCount); + tariff.setMaxUsers(1L); + tariff.setTariffAccountType("b2c"); break; case PRO: tariff.setName("pro"); - tariff.setPrice(proPrice); - tariff.setTokens(proTokens); - tariff.setMaxFilesCount(proMaxFileCount); + tariff.setPrice(4250); + tariff.setTokens(900); + tariff.setMaxFilesCount(300); tariff.setDiskSize(1024L * 1024 * 1024 * 10L); - tariff.setMaxUsers(proUserCount); + tariff.setMaxUsers(1L); + tariff.setTariffAccountType("b2c"); break; - case ENTERPRISE: - tariff.setName("premium"); - tariff.setPrice(enterpricePrice); - tariff.setTokens(enterpriceTokens); - tariff.setMaxFilesCount(enterpriceMaxFileCount); + case STUDIO: + tariff.setName("studio"); + tariff.setPrice(9750); + tariff.setTokens(3000); + tariff.setMaxFilesCount(1000); tariff.setDiskSize(1024L * 1024 * 1024 * 50L); - tariff.setMaxUsers(enterpriceUserCount); + tariff.setMaxUsers(2L); + tariff.setTariffAccountType("b2c"); break; case BASIC: @@ -144,6 +148,37 @@ public class TariffInitializationService { tariff.setMaxFilesCount(enterpriceMaxFileCount); tariff.setDiskSize(1024L * 1024 * 1024 * 50L); tariff.setMaxUsers(basicUserCount); + tariff.setTariffAccountType("b2c"); + break; + + case ENTERPRISE: + tariff.setName("enterprise"); + tariff.setPrice(200000); + tariff.setTokens(30000); + tariff.setMaxFilesCount(100000); + tariff.setDiskSize(1024L * 1024 * 1024 * 10L); + tariff.setMaxUsers(10L); + tariff.setTariffAccountType("b2b"); + break; + + case BUISNES: + tariff.setName("buisnes"); + tariff.setPrice(29000); + tariff.setTokens(5000); + tariff.setMaxFilesCount(5000); + tariff.setDiskSize(1024L * 1024 * 1024 * 50L); + tariff.setMaxUsers(5L); + tariff.setTariffAccountType("b2b"); + break; + + case CORPORAT: + tariff.setName("corporat"); + tariff.setPrice(99000); + tariff.setTokens(20000); + tariff.setMaxFilesCount(50000); + tariff.setDiskSize(1024L * 1024 * 1024 * 50L); + tariff.setMaxUsers(10L); + tariff.setTariffAccountType("b2b"); break; } diff --git a/src/main/java/ru/soune/nocopy/service/tariff/TariffService.java b/src/main/java/ru/soune/nocopy/service/tariff/TariffService.java index 29131ba..5c6561e 100644 --- a/src/main/java/ru/soune/nocopy/service/tariff/TariffService.java +++ b/src/main/java/ru/soune/nocopy/service/tariff/TariffService.java @@ -6,6 +6,7 @@ import org.springframework.transaction.annotation.Transactional; import ru.soune.nocopy.dto.tarriff.TariffDTO; import ru.soune.nocopy.entity.tarif.Tariff; import ru.soune.nocopy.entity.tarif.TariffType; +import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.exception.TariffNotFoundException; import ru.soune.nocopy.repository.TariffRepository; @@ -32,6 +33,15 @@ public class TariffService { tariffRepository.save(tariff); } + public List getTariffByAccountType(User user) { + String typeAccount = user.canManageCompanySettings() ? "b2b": "b2c"; + + return tariffRepository.findByTariffAccountType(typeAccount) + .stream() + .map(this::convertToDTO) + .collect(Collectors.toList()); + } + public List getAllTariffs() { return tariffRepository.findAllByOrderByPriceAsc() .stream()