Account: update and block request
This commit is contained in:
parent
c1c5ec4c9c
commit
54e828432d
5 changed files with 118 additions and 61 deletions
|
|
@ -7,8 +7,8 @@ import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.platform.dictionary.AccountTypeDictionary;
|
import ru.clearing.platform.dictionary.AccountTypeDictionary;
|
||||||
import ru.spcex.clearing.account.errors.AccountError;
|
import ru.spcex.clearing.account.errors.AccountError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountCorrespondentNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountCorrespondentUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
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.EnumPresentRule;
|
||||||
|
|
@ -35,27 +35,27 @@ import java.util.function.Function;
|
||||||
@Configuration
|
@Configuration
|
||||||
public class AccountValidationConfig {
|
public class AccountValidationConfig {
|
||||||
|
|
||||||
@Bean("accountNewRequestValidator")
|
@Bean("accountCorrespondentNewRequestValidator")
|
||||||
public Function<AccountNewRequest, IValidator> accountNewRequestValidator(
|
public Function<AccountCorrespondentNewRequest, IValidator> accountCorrespondentNewRequestValidator(
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
) {
|
) {
|
||||||
return accountNewRequest -> {
|
return accountCorrespondentNewRequest -> {
|
||||||
ImdgValidationContext<AccountNewRequest> context = new ImdgValidationContext<>();
|
ImdgValidationContext<AccountCorrespondentNewRequest> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(accountNewRequest);
|
context.setValidatedObject(accountCorrespondentNewRequest);
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Account);
|
addImdg.accept(IMDGDistributedNames.Map_Account);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_AccountTypeDictionary);
|
addImdg.accept(IMDGDistributedNames.Map_AccountTypeDictionary);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
IdPresentRule.instance("companyId",
|
IdPresentRule.instance("companyId",
|
||||||
AccountNewRequest::getCompanyId,
|
AccountCorrespondentNewRequest::getCompanyId,
|
||||||
IMDGDistributedNames.Map_Company,
|
IMDGDistributedNames.Map_Company,
|
||||||
Company.class,
|
Company.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
AccountError.CompanyNotFound,
|
AccountError.CompanyNotFound,
|
||||||
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : AccountError.CompanyNotActive),
|
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : AccountError.CompanyNotActive),
|
||||||
FieldRequiredRule.instance("account",
|
FieldRequiredRule.instance("account",
|
||||||
AccountNewRequest::getAccount,
|
AccountCorrespondentNewRequest::getAccount,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
accountValue -> {
|
accountValue -> {
|
||||||
Imdg<Account> accountImdg = context.obtainMap(
|
Imdg<Account> accountImdg = context.obtainMap(
|
||||||
|
|
@ -70,7 +70,7 @@ public class AccountValidationConfig {
|
||||||
return AccountError.AccountAlreadyExist;
|
return AccountError.AccountAlreadyExist;
|
||||||
}),
|
}),
|
||||||
FieldRequiredRule.instance("status",
|
FieldRequiredRule.instance("status",
|
||||||
AccountNewRequest::getStatus,
|
AccountCorrespondentNewRequest::getStatus,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
false,
|
false,
|
||||||
statusValue -> {
|
statusValue -> {
|
||||||
|
|
@ -79,12 +79,12 @@ public class AccountValidationConfig {
|
||||||
return AccountError.WrongFieldValue;
|
return AccountError.WrongFieldValue;
|
||||||
}),
|
}),
|
||||||
EnumPresentRule.instance("accountType",
|
EnumPresentRule.instance("accountType",
|
||||||
AccountNewRequest::getAccountType,
|
AccountCorrespondentNewRequest::getAccountType,
|
||||||
AccountType.values(),
|
AccountType.values(),
|
||||||
AccountError.WrongFieldValue,
|
AccountError.WrongFieldValue,
|
||||||
AccountError.RequiredFieldEmpty),
|
AccountError.RequiredFieldEmpty),
|
||||||
DictionaryPresentRule.instance("accountType",
|
DictionaryPresentRule.instance("accountType",
|
||||||
AccountNewRequest::getAccountType,
|
AccountCorrespondentNewRequest::getAccountType,
|
||||||
IMDGDistributedNames.Map_AccountTypeDictionary,
|
IMDGDistributedNames.Map_AccountTypeDictionary,
|
||||||
AccountTypeDictionary.class,
|
AccountTypeDictionary.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
|
|
@ -97,32 +97,32 @@ public class AccountValidationConfig {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("accountUpdateRequestValidator")
|
@Bean("accountCorrespondentUpdateRequestValidator")
|
||||||
public Function<AccountUpdateRequest, IValidator> accountUpdateRequestValidator(
|
public Function<AccountCorrespondentUpdateRequest, IValidator> accountCorrespondentUpdateRequestValidator(
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
) {
|
) {
|
||||||
return accountUpdateRequest -> {
|
return accountCorrespondentUpdateRequest -> {
|
||||||
ImdgValidationContext<AccountUpdateRequest> context = new ImdgValidationContext<>();
|
ImdgValidationContext<AccountCorrespondentUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(accountUpdateRequest);
|
context.setValidatedObject(accountCorrespondentUpdateRequest);
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Account);
|
addImdg.accept(IMDGDistributedNames.Map_Account);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_AccountTypeDictionary);
|
addImdg.accept(IMDGDistributedNames.Map_AccountTypeDictionary);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
IdPresentRule.instance("id",
|
IdPresentRule.instance("id",
|
||||||
AccountUpdateRequest::getId,
|
AccountCorrespondentUpdateRequest::getId,
|
||||||
IMDGDistributedNames.Map_Account,
|
IMDGDistributedNames.Map_Account,
|
||||||
Account.class,
|
Account.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
AccountError.AccountNotFound,
|
AccountError.AccountNotFound,
|
||||||
account -> {
|
account -> {
|
||||||
String statusFromRequest = accountUpdateRequest.getStatus();
|
String statusFromRequest = accountCorrespondentUpdateRequest.getStatus();
|
||||||
if (statusFromRequest != null && !statusFromRequest.equalsIgnoreCase(account.getStatus()))
|
if (statusFromRequest != null && !statusFromRequest.equalsIgnoreCase(account.getStatus()))
|
||||||
return AccountError.WrongFieldValue;
|
return AccountError.WrongFieldValue;
|
||||||
return null;
|
return null;
|
||||||
}),
|
}),
|
||||||
IdPresentRule.instance("companyId",
|
IdPresentRule.instance("companyId",
|
||||||
AccountUpdateRequest::getCompanyId,
|
AccountCorrespondentUpdateRequest::getCompanyId,
|
||||||
IMDGDistributedNames.Map_Company,
|
IMDGDistributedNames.Map_Company,
|
||||||
Company.class,
|
Company.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
|
|
@ -130,22 +130,22 @@ public class AccountValidationConfig {
|
||||||
false,
|
false,
|
||||||
company -> {
|
company -> {
|
||||||
IErrorEnumId error = WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : AccountError.CompanyNotActive;
|
IErrorEnumId error = WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : AccountError.CompanyNotActive;
|
||||||
error = Objects.equals(company.getId(), accountUpdateRequest.getCompanyId()) ? error : AccountError.WrongFieldValue;
|
error = Objects.equals(company.getId(), accountCorrespondentUpdateRequest.getCompanyId()) ? error : AccountError.WrongFieldValue;
|
||||||
return error;
|
return error;
|
||||||
}),
|
}),
|
||||||
EnumPresentRule.instance("status",
|
EnumPresentRule.instance("status",
|
||||||
AccountUpdateRequest::getStatus,
|
AccountCorrespondentUpdateRequest::getStatus,
|
||||||
AccountStatus.values(),
|
AccountStatus.values(),
|
||||||
false,
|
false,
|
||||||
AccountError.WrongFieldValue,
|
AccountError.WrongFieldValue,
|
||||||
AccountError.RequiredFieldEmpty),
|
AccountError.RequiredFieldEmpty),
|
||||||
EnumPresentRule.instance("accountType",
|
EnumPresentRule.instance("accountType",
|
||||||
AccountUpdateRequest::getAccountType,
|
AccountCorrespondentUpdateRequest::getAccountType,
|
||||||
AccountType.values(),
|
AccountType.values(),
|
||||||
AccountError.WrongFieldValue,
|
AccountError.WrongFieldValue,
|
||||||
AccountError.RequiredFieldEmpty),
|
AccountError.RequiredFieldEmpty),
|
||||||
DictionaryPresentRule.instance("accountType",
|
DictionaryPresentRule.instance("accountType",
|
||||||
AccountUpdateRequest::getAccountType,
|
AccountCorrespondentUpdateRequest::getAccountType,
|
||||||
IMDGDistributedNames.Map_AccountTypeDictionary,
|
IMDGDistributedNames.Map_AccountTypeDictionary,
|
||||||
AccountTypeDictionary.class,
|
AccountTypeDictionary.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
|
|
@ -158,8 +158,8 @@ public class AccountValidationConfig {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("accountBlockRequestValidator")
|
@Bean("accountCorrespondentBlockRequestValidator")
|
||||||
public Function<CommonDeleteRequest, IValidator> accountBlockRequestValidator(
|
public Function<CommonDeleteRequest, IValidator> accountCorrespondentBlockRequestValidator(
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
) {
|
) {
|
||||||
return accountDeleteRequest -> {
|
return accountDeleteRequest -> {
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import ru.spcex.clearing.account.errors.AccountError;
|
||||||
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.account.AccountNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountCorrespondentNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountCorrespondentUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01Request;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01Request;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdfToStatementRequestPart;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdfToStatementRequestPart;
|
||||||
|
|
@ -27,6 +27,7 @@ import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.AccountStatus;
|
||||||
import ru.spcex.platform.enumeration.Allowed;
|
import ru.spcex.platform.enumeration.Allowed;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -41,6 +42,7 @@ import ru.spcex.platform.utils.validation.IValidator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -53,8 +55,8 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
private final IMessageResolver messageResolver;
|
private final IMessageResolver messageResolver;
|
||||||
private final UserRoleVerification userRoleVerification;
|
private final UserRoleVerification userRoleVerification;
|
||||||
private final ValidationHelper validationHelper;
|
private final ValidationHelper validationHelper;
|
||||||
private final Function<AccountNewRequest, IValidator> accountNewRequestValidator;
|
private final Function<AccountCorrespondentNewRequest, IValidator> accountNewRequestValidator;
|
||||||
private final Function<AccountUpdateRequest, IValidator> accountUpdateRequestValidator;
|
private final Function<AccountCorrespondentUpdateRequest, IValidator> accountUpdateRequestValidator;
|
||||||
private final Function<CommonDeleteRequest, IValidator> accountBlockRequestValidator;
|
private final Function<CommonDeleteRequest, IValidator> accountBlockRequestValidator;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -64,11 +66,11 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
IMessageResolver messageResolver,
|
IMessageResolver messageResolver,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
@Qualifier("accountNewRequestValidator")
|
@Qualifier("accountCorrespondentNewRequestValidator")
|
||||||
Function<AccountNewRequest, IValidator> accountNewRequestValidator,
|
Function<AccountCorrespondentNewRequest, IValidator> accountNewRequestValidator,
|
||||||
@Qualifier("accountUpdateRequestValidator")
|
@Qualifier("accountCorrespondentUpdateRequestValidator")
|
||||||
Function<AccountUpdateRequest, IValidator> accountUpdateRequestValidator,
|
Function<AccountCorrespondentUpdateRequest, IValidator> accountUpdateRequestValidator,
|
||||||
@Qualifier("accountBlockRequestValidator")
|
@Qualifier("accountCorrespondentBlockRequestValidator")
|
||||||
Function<CommonDeleteRequest, IValidator> accountBlockRequestValidator) {
|
Function<CommonDeleteRequest, IValidator> accountBlockRequestValidator) {
|
||||||
super(kafkaQueue);
|
super(kafkaQueue);
|
||||||
this.accountMap = imdgProvider.getImdg(
|
this.accountMap = imdgProvider.getImdg(
|
||||||
|
|
@ -94,14 +96,20 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
callback(AccountSdf01Request.class)
|
callback(AccountSdf01Request.class)
|
||||||
.setConsumer(this::accountNewSdf01)
|
.setConsumer(this::accountNewSdf01)
|
||||||
.forDestination(Consts.ACCOUNT_NEW_SDF01, callbacks::put);
|
.forDestination(Consts.ACCOUNT_NEW_SDF01, callbacks::put);
|
||||||
callback(AccountNewRequest.class)
|
callback(AccountCorrespondentNewRequest.class)
|
||||||
.setConsumer(this::accountNew)
|
.setConsumer(this::accountCorrespondentNew)
|
||||||
.forDestination(Consts.DESTINATION_ACCOUNT_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_ACCOUNT_CORRESPONDENT_NEW, callbacks::put);
|
||||||
|
callback(AccountCorrespondentUpdateRequest.class)
|
||||||
|
.setConsumer(this::accountCorrespondentUpdate)
|
||||||
|
.forDestination(Consts.DESTINATION_ACCOUNT_CORRESPONDENT_UPDATE, callbacks::put);
|
||||||
|
callback(CommonDeleteRequest.class)
|
||||||
|
.setConsumer(this::accountCorrespondentBlock)
|
||||||
|
.forDestination(Consts.DESTINATION_ACCOUNT_CORRESPONDENT_BLOCK, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate accountNew(BaseRequest<AccountNewRequest> userRequest) {
|
public RequestInfoUpdate accountCorrespondentNew(BaseRequest<AccountCorrespondentNewRequest> userRequest) {
|
||||||
log.debug("AccountNewRequest received");
|
log.debug("AccountCorrespondentNewRequest received");
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
@ -109,7 +117,7 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, accountNewRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, accountNewRequestValidator);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
AccountNewRequest req = userRequest.getRequestPayload();
|
AccountCorrespondentNewRequest req = userRequest.getRequestPayload();
|
||||||
|
|
||||||
Long companyId = req.getCompanyId();
|
Long companyId = req.getCompanyId();
|
||||||
ImdgPredicateBuilder clearingMemberCategoryPredicateBuilder = clearingMemberCategoryMap.predicateBuilder();
|
ImdgPredicateBuilder clearingMemberCategoryPredicateBuilder = clearingMemberCategoryMap.predicateBuilder();
|
||||||
|
|
@ -118,11 +126,7 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
// todo выяснить у репортера, что делать в такой ситуации (нужна ли отдельная ошибка)
|
// todo выяснить у репортера, что делать в такой ситуации (нужна ли отдельная ошибка)
|
||||||
if (clearingMemberCategories.isEmpty()) {
|
if (clearingMemberCategories.isEmpty()) {
|
||||||
String errMsg = messageResolver.resolve(new EnumMessage(AccountError.WrongFieldValue, "companyId"));
|
return makeError(AccountError.WrongFieldValue, "companyId", userRequest.getId());
|
||||||
return new RequestInfoUpdate()
|
|
||||||
.setId(userRequest.getId())
|
|
||||||
.setStatus(Status.Error)
|
|
||||||
.setMessage(errMsg);
|
|
||||||
}
|
}
|
||||||
if (clearingMemberCategories.size() > 1) {
|
if (clearingMemberCategories.size() > 1) {
|
||||||
log.warn("ClearingMemberCategory for companyId {} contains multiply elements, use first", companyId);
|
log.warn("ClearingMemberCategory for companyId {} contains multiply elements, use first", companyId);
|
||||||
|
|
@ -139,20 +143,12 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.FOND.getKey());
|
servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.FOND.getKey());
|
||||||
} else {
|
} else {
|
||||||
// todo выяснить у репортера, что делать в такой ситуации
|
// todo выяснить у репортера, что делать в такой ситуации
|
||||||
String errMsg = messageResolver.resolve(new EnumMessage(AccountError.WrongFieldValue, "companyId"));
|
return makeError(AccountError.WrongFieldValue, "companyId", userRequest.getId());
|
||||||
return new RequestInfoUpdate()
|
|
||||||
.setId(userRequest.getId())
|
|
||||||
.setStatus(Status.Error)
|
|
||||||
.setMessage(errMsg);
|
|
||||||
}
|
}
|
||||||
ImdgPredicate finalRelationPredicate = relationPredicateBuilder.and(consumerIdPredicate, servicePredicate);
|
ImdgPredicate finalRelationPredicate = relationPredicateBuilder.and(consumerIdPredicate, servicePredicate);
|
||||||
Collection<Relation> relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate);
|
Collection<Relation> relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate);
|
||||||
if (relations.isEmpty()) {
|
if (relations.isEmpty()) {
|
||||||
String errMsg = messageResolver.resolve(new EnumMessage(AccountError.WrongFieldValue, "companyId"));
|
return makeError(AccountError.WrongFieldValue, "companyId", userRequest.getId());
|
||||||
return new RequestInfoUpdate()
|
|
||||||
.setId(userRequest.getId())
|
|
||||||
.setStatus(Status.Error)
|
|
||||||
.setMessage(errMsg);
|
|
||||||
}
|
}
|
||||||
if (relations.size() > 1) {
|
if (relations.size() > 1) {
|
||||||
log.warn("Relation for consumerId {} contains multiply elements, use first", companyId);
|
log.warn("Relation for consumerId {} contains multiply elements, use first", companyId);
|
||||||
|
|
@ -172,6 +168,58 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RequestInfoUpdate accountCorrespondentUpdate(BaseRequest<AccountCorrespondentUpdateRequest> userRequest) {
|
||||||
|
log.debug("AccountCorrespondentUpdateRequest received");
|
||||||
|
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, accountUpdateRequestValidator);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
AccountCorrespondentUpdateRequest request = userRequest.getRequestPayload();
|
||||||
|
|
||||||
|
Account account = accountMap.getSingleObjectByID(request.getId());
|
||||||
|
|
||||||
|
if (request.getAccount() != null && !account.getAccount().equalsIgnoreCase(request.getAccount()))
|
||||||
|
return makeError(AccountError.WrongFieldValue, "account", userRequest.getId());
|
||||||
|
account.setAccount(request.getAccount());
|
||||||
|
|
||||||
|
if (request.getCompanyId() != null && !Objects.equals(account.getCompanyId(), request.getCompanyId()))
|
||||||
|
return makeError(AccountError.WrongFieldValue, "companyId", userRequest.getId());
|
||||||
|
|
||||||
|
if (request.getAccountType() != null && !account.getAccountType().equalsIgnoreCase(request.getAccountType()))
|
||||||
|
return makeError(AccountError.WrongFieldValue, "accountType", userRequest.getId());
|
||||||
|
|
||||||
|
if (request.getStatus() != null && !account.getStatus().equalsIgnoreCase(request.getStatus()))
|
||||||
|
return makeError(AccountError.WrongFieldValue, "status", userRequest.getId());
|
||||||
|
|
||||||
|
accountMap.update(account);
|
||||||
|
|
||||||
|
log.debug("successfully processed, update account id {}", account.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequestInfoUpdate accountCorrespondentBlock(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
|
log.debug("AccountBlockRequest received");
|
||||||
|
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, accountBlockRequestValidator);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
CommonDeleteRequest request = userRequest.getRequestPayload();
|
||||||
|
|
||||||
|
Account account = accountMap.getSingleObjectByID(request.getId());
|
||||||
|
account.setStatus(AccountStatus.BLOCKED.getKey());
|
||||||
|
|
||||||
|
accountMap.update(account);
|
||||||
|
|
||||||
|
log.debug("successfully processed, block account id {}", account.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate accountNewSdf01(BaseRequest<AccountSdf01Request> userRequest) {
|
public RequestInfoUpdate accountNewSdf01(BaseRequest<AccountSdf01Request> userRequest) {
|
||||||
log.debug("AccountSdf01Request received");
|
log.debug("AccountSdf01Request received");
|
||||||
|
|
||||||
|
|
@ -212,4 +260,13 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
request.setAccountCreationResults(results);
|
request.setAccountCreationResults(results);
|
||||||
kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request);
|
kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate makeError(AccountError accountError, String fieldName, Long reqId) {
|
||||||
|
String errMsg = messageResolver.resolve(new EnumMessage(accountError, fieldName));
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(reqId)
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errMsg);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,9 @@ public interface Consts {
|
||||||
String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update";
|
String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update";
|
||||||
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";
|
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";
|
||||||
|
|
||||||
String DESTINATION_ACCOUNT_NEW = "account-new";
|
String DESTINATION_ACCOUNT_CORRESPONDENT_NEW = "account-correspondent-new";
|
||||||
String DESTINATION_ACCOUNT_UPDATE = "account-update";
|
String DESTINATION_ACCOUNT_CORRESPONDENT_UPDATE = "account-correspondent-update";
|
||||||
String DESTINATION_ACCOUNT_BLOCK = "account-block";
|
String DESTINATION_ACCOUNT_CORRESPONDENT_BLOCK = "account-correspondent-block";
|
||||||
|
|
||||||
String DESTINATION_RELATION_UPDATE = "relation-update";
|
String DESTINATION_RELATION_UPDATE = "relation-update";
|
||||||
String DESTINATION_PROFILE_DOCUMENT_NEW = "profile-document-new";
|
String DESTINATION_PROFILE_DOCUMENT_NEW = "profile-document-new";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.account;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class AccountNewRequest {
|
public class AccountCorrespondentNewRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public Long companyId;
|
public Long companyId;
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.account;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class AccountUpdateRequest {
|
public class AccountCorrespondentUpdateRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public Long id;
|
public Long id;
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue