--- Добавил обработку удаления информации о контактах
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.clearing.platform.dictionary.ContactTypeDictionary;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ContactNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
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.DictionaryPresentRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
|
||||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
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.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
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.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
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.ContactNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
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 ValidationHelper validationHelper;
|
||||||
private final Function<ContactNewRequest, IValidator> contactNewRequestValidator;
|
private final Function<ContactNewRequest, IValidator> contactNewRequestValidator;
|
||||||
private final Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator;
|
private final Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator;
|
||||||
|
private final Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator;
|
||||||
private final UserRoleVerification userRoleVerification;
|
private final UserRoleVerification userRoleVerification;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -40,6 +42,7 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
@Qualifier("contactNewRequestValidator") Function<ContactNewRequest, IValidator> contactNewRequestValidator,
|
@Qualifier("contactNewRequestValidator") Function<ContactNewRequest, IValidator> contactNewRequestValidator,
|
||||||
|
@Qualifier("contactDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator,
|
||||||
@Qualifier("contactUpdateRequestValidator") Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator) {
|
@Qualifier("contactUpdateRequestValidator") Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.contactMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
this.contactMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||||
|
|
@ -47,6 +50,7 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
this.contactNewRequestValidator = contactNewRequestValidator;
|
this.contactNewRequestValidator = contactNewRequestValidator;
|
||||||
this.contactUpdateRequestValidator = contactUpdateRequestValidator;
|
this.contactUpdateRequestValidator = contactUpdateRequestValidator;
|
||||||
|
this.contactDeleteRequestValidator = contactDeleteRequestValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -57,6 +61,9 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
callback(ContactUpdateRequest.class)
|
callback(ContactUpdateRequest.class)
|
||||||
.setFunction(this::contactUpdate)
|
.setFunction(this::contactUpdate)
|
||||||
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
||||||
|
callback(CommonDeleteRequest.class)
|
||||||
|
.setFunction(this::companySymbolDelete)
|
||||||
|
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,4 +105,22 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
log.debug("successfully processed, id {}", contact.getId());
|
log.debug("successfully processed, id {}", contact.getId());
|
||||||
return null;
|
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