Files
no-copy/src/main/java/ru/soune/nocopy/service/referral/ReferralLevelProviderImpl.java
T

83 lines
2.4 KiB
Java
Raw Normal View History

2026-02-06 01:01:34 +07:00
package ru.soune.nocopy.service.referral;
2026-02-06 19:27:25 +07:00
import lombok.RequiredArgsConstructor;
2026-02-06 01:01:34 +07:00
import org.springframework.stereotype.Component;
import ru.soune.ReferralLevel;
import ru.soune.ReferralLevelProvider;
2026-02-06 19:27:25 +07:00
import ru.soune.nocopy.entity.referral.ReferralLevelEntity;
import ru.soune.nocopy.repository.ReferralLevelRepository;
2026-02-06 01:01:34 +07:00
import java.util.List;
2026-02-06 19:27:25 +07:00
import java.util.stream.Collectors;
2026-02-06 01:01:34 +07:00
@Component
2026-02-06 19:27:25 +07:00
@RequiredArgsConstructor
2026-02-06 01:01:34 +07:00
public class ReferralLevelProviderImpl implements ReferralLevelProvider {
2026-02-06 19:27:25 +07:00
private final ReferralLevelRepository referralLevelRepository;
2026-02-06 01:01:34 +07:00
@Override
public List<ReferralLevel> getAvailableReferralLevels() {
2026-02-06 19:27:25 +07:00
List<ReferralLevelEntity> entities = referralLevelRepository.findAll();
2026-02-06 01:01:34 +07:00
2026-02-06 19:27:25 +07:00
return entities.stream()
.map(this::createReferralLevel)
.collect(Collectors.toList());
2026-02-06 01:01:34 +07:00
}
@Override
public String getInitialReferralLevelId() {
return "bronze";
}
@Override
public ReferralLevel getReferralLevelById(String levelId) {
2026-02-06 19:27:25 +07:00
return createReferralLevel(referralLevelRepository.findById(levelId));
}
2026-02-06 01:01:34 +07:00
2026-02-06 19:27:25 +07:00
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()) {
2026-02-06 20:43:27 +07:00
case "bronze": return 6;
case "silver": return 15;
case "gold": return 50;
2026-02-06 19:27:25 +07:00
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;
}
}
};
2026-02-06 01:01:34 +07:00
}
}