From b6e53e7dba39b46afb8c0000ca043f32c06a42b8 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 3 Oct 2022 09:56:46 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-65 --- .../utility/service/UserSettingService.java | 56 +++++++++++++++++++ .../platform/messaging/domain/Consts.java | 1 + .../utilities/UserSettingsUpdateRequest.java | 36 ++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserSettingService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserSettingService.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserSettingService.java new file mode 100644 index 000000000..726580197 --- /dev/null +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserSettingService.java @@ -0,0 +1,56 @@ +package ru.spcex.clearing.utility.service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.user.UserSettings; +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.utilities.UserSettingsUpdateRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.util.Map; + +@Service +public class UserSettingService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg userSettingsMap; + + @Autowired + public UserSettingService(Consumer kafkaQueue, ImdgProvider imdgProvider) { + super(kafkaQueue); + this.userSettingsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_UserSettings, UserSettings.class); + } + + @Override + public void afterPropertiesSet() { + callback(UserSettingsUpdateRequest.class) + .setConsumer(this::updateUserSettings) + .forDestination(Consts.USER_SETTINGS_UPDATE, callbacks::put); + init(); + } + + private void updateUserSettings(BaseRequest userRequest) { + UserSettingsUpdateRequest req = userRequest.getRequestPayload(); + log.debug("UserSettingsUpdateRequest received userId = {}", req.getUserId()); + UserSettings settings = userSettingsMap.getSingleObjectByFieldValues(Map.of("userId", req.getUserId())); + if (settings != null) { + log.debug("found user settings for userId={}, id={}", req.getUserId(), settings.getId()); + settings.setVersion(req.getVersion()); + settings.setJson(req.getJson()); + userSettingsMap.update(settings); + } else { + settings = new UserSettings(); + settings.setUserId(req.getUserId()); + settings.setVersion(req.getVersion()); + settings.setJson(req.getJson()); + userSettingsMap.insert(settings); + } + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 2360f8d2f..212900ad1 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -25,6 +25,7 @@ public interface Consts { String USER_AUTH_SUCCESS = "user-auth-success"; String USER_LOGOUT_SUCCESS = "user-logout-success"; + String USER_SETTINGS_UPDATE = "user-settings-update"; //todo String STATEMENT_PROCESS = "statement-process"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java new file mode 100644 index 000000000..cc22c7766 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java @@ -0,0 +1,36 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.utilities; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class UserSettingsUpdateRequest { + @JsonProperty + public Long userId; + @JsonProperty + public String version; + @JsonProperty + public String json; + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getJson() { + return json; + } + + public void setJson(String json) { + this.json = json; + } +}