ialbert 2022-10-03 09:56:46 +03:00
parent 95cb6c0eff
commit b6e53e7dba
3 changed files with 93 additions and 0 deletions

View file

@ -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<UserSettings> userSettingsMap;
@Autowired
public UserSettingService(Consumer<String, Object> 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<UserSettingsUpdateRequest> 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);
}
}
}

View file

@ -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";

View file

@ -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;
}
}