This commit is contained in:
etreschenkov 2024-10-02 14:01:31 +03:00
parent b87f5dbb80
commit c70874b179
3 changed files with 57 additions and 17 deletions

View file

@ -5,11 +5,14 @@ import java.util.function.Consumer;
import java.util.function.Function;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.security.RiskParameter;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterUpdateRequest;
import ru.spcex.clearing.securities.errors.SecuritiesError;
import ru.spcex.clearing.securities.validation.rule.RiskParameterValidationRule;
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
@ -19,8 +22,8 @@ import ru.spcex.platform.utils.validation.ValidatorImpl;
@Configuration
public class RiskParameterValidationConfig {
@Bean("riskParameterValidator")
public Function<RiskParameterNewRequest, IValidator> riskParameterValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
@Bean("riskParameterNewValidator")
public Function<RiskParameterNewRequest, IValidator> riskParameterNewValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
return riskParameter -> {
ImdgValidationContext<RiskParameterNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(riskParameter);
@ -34,4 +37,22 @@ public class RiskParameterValidationConfig {
);
};
}
@Bean("riskParameterUpdateValidator")
public Function<RiskParameterUpdateRequest, IValidator> riskParameterUpdateValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
return riskParameter -> {
ImdgValidationContext<RiskParameterUpdateRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(riskParameter);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_RiskParameter);
return new ValidatorImpl<>(context,
IdPresentRule.instance("id",
RiskParameterUpdateRequest::getId,
IMDGDistributedNames.Map_RiskParameter,
RiskParameter.class,
SecuritiesError.RequiredFieldIsEmpty,
SecuritiesError.RequiredFieldIsEmpty)
);
};
}
}

View file

@ -7,6 +7,7 @@ import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.security.RiskParameter;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterUpdateRequest;
import ru.spcex.platform.classes.base.interfaces.IClearingFacade;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
@ -29,7 +30,7 @@ public class RiskParameterFacade implements IClearingFacade {
* Создает clientCode, TCR и опционально TCRList, если указаны валюты.
*/
public void createRiskParameter(RiskParameterNewRequest request) {
log.trace("Start process creating new client code");
log.trace("Start process creating new risk_parameter");
RiskParameter riskParameter = new RiskParameter();
riskParameter.setCurrencyPairId(request.getCurrencyPairId());
@ -42,6 +43,16 @@ public class RiskParameterFacade implements IClearingFacade {
log.debug("successfully processed, new risk_parameter id {}", riskParameter.getId());
}
public void updateRiskParameter(RiskParameterUpdateRequest request) {
log.trace("Start process update risk_parameter");
RiskParameter riskParameterForUpdate = riskParameterImdg.getSingleObjectByID(request.getId());
riskParameterForUpdate.setValue(request.getValue());
riskParameterForUpdate.setWorkflowStatus(request.getStatus());
riskParameterImdg.update(riskParameterForUpdate);
log.debug("successfully processed, updated risk_parameter id {}", riskParameterForUpdate.getId());
}
@Override
public void lock() {

View file

@ -26,7 +26,8 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider;
private final RiskParameterFacade riskParameterFacade;
private final Function<RiskParameterNewRequest, IValidator> riskParameterValidator;
private final Function<RiskParameterNewRequest, IValidator> riskParameterNewValidator;
private final Function<RiskParameterUpdateRequest, IValidator> riskParameterUpdateValidator;
private final UserRoleVerification userRoleVerification;
private final IMessageResolver messageResolver;
@ -34,13 +35,15 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi
Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider,
RiskParameterFacade riskParameterFacade,
Function<RiskParameterNewRequest, IValidator> riskParameterValidator,
Function<RiskParameterNewRequest, IValidator> riskParameterNewValidator,
Function<RiskParameterUpdateRequest, IValidator> riskParameterUpdateValidator,
UserRoleVerification userRoleVerification,
IMessageResolver messageResolver) {
super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider;
this.riskParameterFacade = riskParameterFacade;
this.riskParameterValidator = riskParameterValidator;
this.riskParameterNewValidator = riskParameterNewValidator;
this.riskParameterUpdateValidator = riskParameterUpdateValidator;
this.userRoleVerification = userRoleVerification;
this.messageResolver = messageResolver;
}
@ -63,7 +66,7 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(riskParameterRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
RiskParameterNewRequest request = riskParameterRequest.getRequestPayload();
IValidator validator = riskParameterValidator.apply(request);
IValidator validator = riskParameterNewValidator.apply(request);
Optional<EnumMessage> error = validator.tillFirstError();
if (error.isPresent()) {
String errMsg = messageResolver.resolve(error.get());
@ -77,16 +80,21 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi
return null;
}
private RequestInfoUpdate riskParameterUpdate(BaseRequest<RiskParameterUpdateRequest> clientCodeNewRequest) {
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(clientCodeNewRequest);
// if (requestInfoUpdate != null) return requestInfoUpdate;
// RiskParameterUpdateRequest request = clientCodeNewRequest.getRequestPayload();
// ValidationResult validationResult = clientCodeValidator.checkBackendNewRequest(request);
// if (!validationResult.isValid()) {
// return makeErrorResponse(clientCodeNewRequest, validationResult);
// }
//
// clientCodeFacade.createClientCode(request, validationResult.validator());
private RequestInfoUpdate riskParameterUpdate(BaseRequest<RiskParameterUpdateRequest> riskParameterUpdateRequest) {
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(riskParameterUpdateRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
RiskParameterUpdateRequest request = riskParameterUpdateRequest.getRequestPayload();
IValidator validator = riskParameterUpdateValidator.apply(request);
Optional<EnumMessage> error = validator.tillFirstError();
if (error.isPresent()) {
String errMsg = messageResolver.resolve(error.get());
return new RequestInfoUpdate()
.setId(riskParameterUpdateRequest.getId())
.setStatus(ru.spcex.clearing.platform.messaging.service.Status.Error)
.setMessage(errMsg);
}
riskParameterFacade.updateRiskParameter(request);
return null;
}
}