NC_BACK-36_1
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-02-06 19:27:25 +07:00
parent f52ce6db3c
commit a7e94639d2
14 changed files with 340 additions and 30 deletions
@@ -1,20 +1,29 @@
package ru.soune.nocopy.service.referral;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import ru.soune.ReferralLevel;
import ru.soune.ReferralLevelProvider;
import ru.soune.nocopy.entity.referral.ReferralLevelEntity;
import ru.soune.nocopy.repository.ReferralLevelRepository;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
public class ReferralLevelProviderImpl implements ReferralLevelProvider {
private final ReferralLevelRepository referralLevelRepository;
@Override
public List<ReferralLevel> getAvailableReferralLevels() {
// TODO
List<ReferralLevelEntity> entities = referralLevelRepository.findAll();
return new ArrayList<ReferralLevel>();
return entities.stream()
.map(this::createReferralLevel)
.collect(Collectors.toList());
}
@Override
@@ -24,8 +33,51 @@ public class ReferralLevelProviderImpl implements ReferralLevelProvider {
@Override
public ReferralLevel getReferralLevelById(String levelId) {
// TODO
return createReferralLevel(referralLevelRepository.findById(levelId));
}
return null;
private ReferralLevel createReferralLevel(ReferralLevelEntity entity) {
return new ReferralLevel() {
@Override
public String getId() {
return entity.getId();
}
@Override
public String getName() {
return entity.getName();
}
@Override
public int getShare() {
return entity.getRewardPercentage();
}
@Override
public int getMinInvitee() {
return entity.getMinInvitees();
}
@Override
public int getMaxInvitee() {
switch (entity.getId()) {
case "bronze": return 9;
case "silver": return 49;
case "gold": return 99;
case "platinum": return Integer.MAX_VALUE;
default: return Integer.MAX_VALUE;
}
}
@Override
public String getNext() {
switch (entity.getId()) {
case "bronze": return "silver";
case "silver": return "gold";
case "gold": return "platinum";
default: return null;
}
}
};
}
}