fix: 修复用户添加逻辑并增加MQTT定时连接功能
修复用户添加时未检查身份证号是否已存在的问题,改为根据身份证号判断是新增还是更新用户 为MQTT服务添加定时连接功能,每5分钟尝试连接一次,并避免重复连接相同配置
This commit is contained in:
parent
c6b2c98bd8
commit
0b07c719a3
|
|
@ -198,12 +198,23 @@ public class Ab98UserApplicationService {
|
|||
throw new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "姓名不匹配");
|
||||
}
|
||||
AddAb98UserCommand addAb98UserCommand = getAddAb98UserCommand(ab98UserDto);
|
||||
Ab98UserModel model = userModelFactory.create();
|
||||
model.loadAddCommand(addAb98UserCommand);
|
||||
model.insert();
|
||||
ab98UserEntity = model.selectById();
|
||||
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
||||
return ab98UserEntity;
|
||||
|
||||
ab98UserEntity = userService.getByIdnum(addAb98UserCommand.getIdnum());
|
||||
if (ab98UserEntity != null) {
|
||||
Ab98UserModel model = userModelFactory.loadById(ab98UserEntity.getAb98UserId());
|
||||
addAb98UserCommand.setAb98UserId(ab98UserEntity.getAb98UserId());
|
||||
model.loadUpdateCommand(addAb98UserCommand);
|
||||
model.updateById();
|
||||
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
||||
return ab98UserEntity;
|
||||
} else {
|
||||
Ab98UserModel model = userModelFactory.create();
|
||||
model.loadAddCommand(addAb98UserCommand);
|
||||
model.insert();
|
||||
ab98UserEntity = model.selectById();
|
||||
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
||||
return ab98UserEntity;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.eclipse.paho.client.mqttv3.*;
|
||||
|
||||
|
|
@ -31,6 +32,13 @@ public class MqttService implements MqttCallback {
|
|||
&& config.getUsername().equals(other.getUsername())
|
||||
&& config.getPassword().equals(other.getPassword());
|
||||
}
|
||||
|
||||
public boolean isSameConfig(MqttServerEntity other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
return config.getMqttServerId().equals(other.getMqttServerId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -55,8 +63,21 @@ public class MqttService implements MqttCallback {
|
|||
});
|
||||
}
|
||||
|
||||
@Scheduled(fixedRate = 5 * 60 * 1000) // 每5分钟执行一次 (300000毫秒)
|
||||
public void scheduledConnect() {
|
||||
try {
|
||||
connect();
|
||||
} catch (MqttException e) {
|
||||
log.error("定时MQTT连接失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void connect() throws MqttException {
|
||||
for (MqttServerEntity config : mqttServerService.selectAll()) {
|
||||
if (clientConfigs.stream().anyMatch(cc -> cc.isSameConfig(config))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 检查是否已有相同连接的client实例
|
||||
ClientConfig existingConfig = clientConfigs.stream()
|
||||
.filter(cc -> cc.isSameConnection(config))
|
||||
|
|
|
|||
Loading…
Reference in New Issue