---
Добавил обработку удаления информации о контактах
This commit is contained in:
aalehin 2023-05-25 15:09:59 +03:00
parent a665e8e0d6
commit d638615c2e
2 changed files with 54 additions and 2 deletions

View file

@ -7,14 +7,13 @@ import ru.clearing.classes.statics.data.profile.Contact;
import ru.clearing.platform.dictionary.ContactTypeDictionary;
import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
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.enumeration.ContactTypes;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.validation.IValidator;
@ -92,4 +91,32 @@ public class ContactValidationConfig {
};
}
@Bean("contactDeleteRequestValidator")
public Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return contactDeleteRequest -> {
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(contactDeleteRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_Company);
addImdg.accept(IMDGDistributedNames.Map_Contact);
return new ValidatorImpl<>(context,
IdPresentRule.instance("id",
CommonDeleteRequest::getId,
IMDGDistributedNames.Map_Contact,
Contact.class,
CompanyErrors.RequiredFieldEmpty,
CompanyErrors.RecordNotFound,
contact -> {
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
Company company = companyImdg.getSingleObjectByID(contact.getCompanyId());
if (company == null) {
return CompanyErrors.ContactNotFound;
}
return null;
})
);
};
}
}

View file

@ -12,6 +12,7 @@ import ru.clearing.classes.statics.data.profile.Contact;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
@ -31,6 +32,7 @@ public class ContactService extends QueueConsumer implements InitializingBean {
private final ValidationHelper validationHelper;
private final Function<ContactNewRequest, IValidator> contactNewRequestValidator;
private final Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator;
private final Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator;
private final UserRoleVerification userRoleVerification;
@Autowired
@ -40,6 +42,7 @@ public class ContactService extends QueueConsumer implements InitializingBean {
ValidationHelper validationHelper,
UserRoleVerification userRoleVerification,
@Qualifier("contactNewRequestValidator") Function<ContactNewRequest, IValidator> contactNewRequestValidator,
@Qualifier("contactDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator,
@Qualifier("contactUpdateRequestValidator") Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator) {
super(kafkaQueue, kafkaProducer);
this.contactMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
@ -47,6 +50,7 @@ public class ContactService extends QueueConsumer implements InitializingBean {
this.userRoleVerification = userRoleVerification;
this.contactNewRequestValidator = contactNewRequestValidator;
this.contactUpdateRequestValidator = contactUpdateRequestValidator;
this.contactDeleteRequestValidator = contactDeleteRequestValidator;
}
@Override
@ -57,6 +61,9 @@ public class ContactService extends QueueConsumer implements InitializingBean {
callback(ContactUpdateRequest.class)
.setFunction(this::contactUpdate)
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setFunction(this::companySymbolDelete)
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
init();
}
@ -98,4 +105,22 @@ public class ContactService extends QueueConsumer implements InitializingBean {
log.debug("successfully processed, id {}", contact.getId());
return null;
}
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> userRequest) {
log.debug("CommonDeleteRequest received for contact service.");
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactDeleteRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate;
CommonDeleteRequest req = userRequest.getRequestPayload();
Contact contact = contactMap.getSingleObjectByID(req.getId());
contactMap.delete(contact);
log.debug("successfully deleted, id {}", contact.getId());
return null;
}
}