SUPPORT-8817: add extract request with empty ervu id
This commit is contained in:
parent
5108caf305
commit
db390aa089
6 changed files with 55 additions and 10 deletions
|
|
@ -16,8 +16,12 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
import rtl.pgs.ervu.proto.ExtractRegistry;
|
||||
import rtl.pgs.ervu.proto.ResponseData;
|
||||
import ru.micord.ervu.dto.ExtractEmptyRequestDto;
|
||||
import ru.micord.ervu.dto.ExtractRequestDto;
|
||||
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
|
||||
import ru.micord.ervu.security.esia.model.PersonModel;
|
||||
import ru.micord.ervu.security.esia.service.PersonalDataService;
|
||||
import ru.micord.ervu.security.esia.token.EsiaTokensStore;
|
||||
import ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil;
|
||||
|
||||
/**
|
||||
|
|
@ -25,28 +29,50 @@ import ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil;
|
|||
*/
|
||||
@RestController
|
||||
public class ExtractController {
|
||||
|
||||
private final PersonalDataService personalDataService;
|
||||
private final ReplyingKafkaService<Object, Bytes> replyingKafkaService;
|
||||
|
||||
@Value("${ervu.kafka.registry.extract.empty.request.topic}")
|
||||
private String registryExtractEmptyRequestTopic;
|
||||
@Value("${ervu.kafka.registry.extract.request.topic}")
|
||||
private String registryExtractRequestTopic;
|
||||
@Value("${ervu.kafka.registry.extract.reply.topic}")
|
||||
private String registryExtractReplyTopic;
|
||||
|
||||
public ExtractController(ReplyingKafkaService<Object, Bytes> replyingKafkaService) {
|
||||
public ExtractController(PersonalDataService personalDataService, ReplyingKafkaService<Object, Bytes> replyingKafkaService) {
|
||||
this.personalDataService = personalDataService;
|
||||
this.replyingKafkaService = replyingKafkaService;
|
||||
}
|
||||
|
||||
@GetMapping(value = "/extract/{formatRegistry}")
|
||||
public ResponseEntity<Resource> getExtract(@PathVariable String formatRegistry) {
|
||||
String ervuId = SecurityUtil.getErvuId();
|
||||
byte[] reply;
|
||||
|
||||
if (ervuId == null) {
|
||||
if (ervuId != null) {
|
||||
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
|
||||
reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
|
||||
registryExtractReplyTopic, request
|
||||
).get();
|
||||
}
|
||||
else {
|
||||
String userAccountId = SecurityUtil.getUserId();
|
||||
if (userAccountId != null) {
|
||||
String esiaAccessToken = EsiaTokensStore.getAccessToken(userAccountId);
|
||||
PersonModel personModel = personalDataService.getPersonModel(esiaAccessToken);
|
||||
|
||||
ExtractEmptyRequestDto emptyRequest = new ExtractEmptyRequestDto(personModel.getLastName(),
|
||||
personModel.getFirstName(), personModel.getMiddleName(), personModel.getBirthDate(),
|
||||
personModel.getSnils(), formatRegistry
|
||||
);
|
||||
reply = replyingKafkaService.sendMessageAndGetReply(registryExtractEmptyRequestTopic,
|
||||
registryExtractReplyTopic, emptyRequest
|
||||
).get();
|
||||
}
|
||||
else {
|
||||
return ResponseEntity.noContent().build();
|
||||
}
|
||||
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
|
||||
byte[] reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
|
||||
registryExtractReplyTopic, request).get();
|
||||
}
|
||||
|
||||
try {
|
||||
ResponseData responseData = ResponseData.parseFrom(reply);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
package ru.micord.ervu.dto;
|
||||
|
||||
/**
|
||||
* @author r.latypov
|
||||
*/
|
||||
public record ExtractEmptyRequestDto(String lastName, String firstName, String middleName,
|
||||
String birthDate, String snils, String formatExtractRegistry) {
|
||||
}
|
||||
|
|
@ -24,11 +24,19 @@ public final class SecurityUtil {
|
|||
}
|
||||
|
||||
public static String getErvuId() {
|
||||
return getUserAccountIdPart(1);
|
||||
}
|
||||
|
||||
public static String getUserId() {
|
||||
return getUserAccountIdPart(0);
|
||||
}
|
||||
|
||||
private static String getUserAccountIdPart(int index) {
|
||||
return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication())
|
||||
.map(a -> ((JwtAuthentication) a).getUserAccountId())
|
||||
.map(userAccountId -> {
|
||||
String ervuId = userAccountId.split(":")[1];
|
||||
return "null".equals(ervuId) ? null : ervuId;
|
||||
String userAccountIdPart = userAccountId.split(":")[index];
|
||||
return "null".equals(userAccountIdPart) ? null : userAccountIdPart;
|
||||
})
|
||||
.orElse(null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -784,7 +784,8 @@ JBPM использует 3 корневых категории логирова
|
|||
- `ERVU_KAFKA_RECRUIT_HEADER_CLASS` - класс для идентификации в заголовке запроса на получение данных о повестке, временных мерах и воинском учете
|
||||
- `ERVU_KAFKA_SUBPOENA_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра повесток
|
||||
- `ERVU_KAFKA_SUBPOENA_EXTRACT_REPLY_TOPIC` - топик для получения выписки из Реестра повесток
|
||||
- `ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета
|
||||
- `ERVU_KAFKA_REGISTRY_EXTRACT_EMPTY_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета при отсутствии ErvuId
|
||||
- `ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета при наличии ErvuId
|
||||
- `ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC` - топик для получения выписки из Реестра воинского учета
|
||||
- `ERVU_KAFKA_EXTRACT_HEADER_CLASS` - класс для идентификации в заголовке запроса на получение выписки из Реестра повесток/Реестра воинского учета
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ ERVU_KAFKA_REPLY_TIMEOUT=30
|
|||
ERVU_KAFKA_RECRUIT_REQUEST_TOPIC=ervu.recruit.info.request
|
||||
ERVU_KAFKA_RECRUIT_REPLY_TOPIC=ervu.recruit.info.response
|
||||
ERVU_KAFKA_RECRUIT_HEADER_CLASS=Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5
|
||||
ERVU_KAFKA_REGISTRY_EXTRACT_EMPTY_REQUEST_TOPIC=ervu.extract.empty.request
|
||||
ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC=ervu.extract.info.request
|
||||
ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC=ervu.extract.info.response
|
||||
ERVU_KAFKA_EXTRACT_HEADER_CLASS=request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@
|
|||
<property name="ervu.kafka.recruit.request.topic" value="ervu.recruit.info.request"/>
|
||||
<property name="ervu.kafka.recruit.reply.topic" value="ervu.recruit.info.response"/>
|
||||
<property name="ervu.kafka.recruit.header.class" value="Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5"/>
|
||||
<property name="ervu.kafka.registry.extract.empty.request.topic" value="ervu.extract.empty.request"/>
|
||||
<property name="ervu.kafka.registry.extract.request.topic" value="ervu.extract.info.request"/>
|
||||
<property name="ervu.kafka.registry.extract.reply.topic" value="ervu.extract.info.response"/>
|
||||
<property name="ervu.kafka.extract.header.class" value="request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3"/>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue