--- Добавил обработку удаления информации о контактах
This commit is contained in:
parent
a665e8e0d6
commit
d638615c2e
2 changed files with 54 additions and 2 deletions
|
|
@ -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;
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue