dev add referral
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-02-06 01:01:34 +07:00
parent 80c53515fb
commit f52ce6db3c
11 changed files with 258 additions and 16 deletions
@@ -0,0 +1,91 @@
package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import ru.soune.ReferralInvitee;
import ru.soune.ReferralLevel;
import ru.soune.ReferralService;
import ru.soune.ReferralStat;
import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.referral.ReferralRequest;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.repository.AuthTokenRepository;
import java.util.List;
import java.util.Map;
@Component
@RequiredArgsConstructor
public class ReferralHandler implements RequestHandler {
private final ReferralService referralService;
private final AuthTokenRepository authTokenRepository;
private final ObjectMapper mapper = new ObjectMapper();
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
ReferralRequest referralRequest = mapper.convertValue(request.getMessageBody(), ReferralRequest.class);
String action = referralRequest.getAction();
String token = referralRequest.getToken();
AuthToken authToken = authTokenRepository.findByToken(token).orElseThrow();
switch (action) {
case "refill":
return handleRefill(request, authToken.getUser().getId(), referralRequest.getAmount());
case "levels":
return handleReferralLevels(request);
case "level":
return handleUserLevel(request, authToken.getUser().getId());
case "userStats" :
return handleUserStats(request, authToken.getUser().getId());
case "invitees":
return handleInvitees(referralRequest, request, authToken.getUser().getId());
}
return null;
}
private BaseResponse handleRefill(BaseRequest request, Long userId, Integer amount) {
referralService.onUserAccountRefill(userId, amount);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), Map.of("account", "refill"));
}
private BaseResponse handleReferralLevels(BaseRequest request) {
List<ReferralLevel> referralLevels = referralService.getReferralLevels();
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), referralLevels);
}
private BaseResponse handleUserLevel(BaseRequest request, Long userId) {
ReferralLevel referralLevelForUser = referralService.getReferralLevelForUser(userId);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), referralLevelForUser);
}
private BaseResponse handleUserStats(BaseRequest request, Long userId) {
ReferralStat referralStatForUser = referralService.getReferralStatForUser(userId);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), referralStatForUser);
}
private BaseResponse handleInvitees(ReferralRequest referralRequest, BaseRequest request, Long userId) {
List<ReferralInvitee> inviteeForUser = referralService.getInviteeForUser(userId, referralRequest.getPageSize(),
referralRequest.getPageNumber());
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), inviteeForUser);
}
}
@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.BindingResult;
import ru.soune.ReferralService;
import ru.soune.nocopy.dto.*;
import ru.soune.nocopy.dto.register.RegAnswer;
import ru.soune.nocopy.dto.register.RegRequest;
@@ -34,6 +35,9 @@ public class RegRequestHandler implements RequestHandler {
private final EmailService emailService;
//TODO add when add all referall
// private final ReferralService referralService;
@Override
public BaseResponse handle(BaseRequest request) throws ValidationException {
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
@@ -81,6 +85,8 @@ public class RegRequestHandler implements RequestHandler {
regAnswer.setToken(token);
regAnswer.setVerified(true);
regAnswer.setActive(true);
//TODO add when add all referall
// referralService.onRegister(authToken.getUser().getId(), regRequest.getReferralLink());
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), regAnswer);