package com.yc.sdk.WebSocketMessage.service;
|
|
import com.alibaba.fastjson.JSON;
|
import com.yc.entity.DataSourceActionEntity;
|
import com.yc.entity.DataSourceEntity;
|
import com.yc.factory.FactoryBean;
|
import com.yc.listener.SessionListener;
|
import com.yc.multiData.MultiDataSource;
|
import com.yc.sdk.WebSocketMessage.entity.MessageInfo;
|
import com.yc.sdk.WebSocketMessage.entity.MessageType;
|
import com.yc.sdk.WebSocketMessage.entity.WsMessageUserEntity;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* 处理数据源
|
*/
|
@Service
|
@Slf4j
|
public class RefreshDataSourceMessageImpl implements RefreshDataSourceMessageIfc {
|
@Override
|
public void handlerMessage(MessageInfo message, WsMessageUserEntity userEntity) {
|
//TODO 业务逻辑处理
|
try {
|
if (message != null) {
|
if(message.getMsgType().equals(MessageType.CHECK_SYSTEM_DISABLED)) {
|
DataSourceActionEntity dataSourceActionEntity = JSON.parseObject(message.getMsg(), DataSourceActionEntity.class);
|
if (dataSourceActionEntity != null) {
|
MultiDataSource multiDataSource = (MultiDataSource) FactoryBean.getBean("multiDataSource");
|
if (DataSourceActionEntity.ActionEnum.REFRESH.getName().equals(dataSourceActionEntity.getAction())) {
|
List<DataSourceEntity> dataSourceEntities = multiDataSource.refreshDataSource(dataSourceActionEntity.getDbId());//刷新本地数据源
|
if(dataSourceEntities!=null&&dataSourceEntities.size()>0){
|
//null或负数表示未过期,正数表示已过期
|
if(dataSourceEntities.get(0).isExpiredDate()){
|
//删除会话
|
if(StringUtils.isNotBlank(dataSourceActionEntity.getDbId())) {
|
SessionListener.delAllOnLineUser(dataSourceActionEntity.getDbId());
|
}
|
}
|
}
|
}
|
if (DataSourceActionEntity.ActionEnum.DELETE.getName().equals(dataSourceActionEntity.getAction())) {
|
multiDataSource.removeDataSource(dataSourceActionEntity.getDbId()); //删除数据源
|
//删除会话
|
if(StringUtils.isNotBlank(dataSourceActionEntity.getDbId())) {
|
SessionListener.delAllOnLineUser(dataSourceActionEntity.getDbId());
|
}
|
}
|
//代码已移到MaintainceSchedule类
|
/*if (DataSourceActionEntity.ActionEnum.REFRESHEXPIREDDATE.getName().equals(dataSourceActionEntity.getAction())) {
|
multiDataSource.refreshExpiredDataSource(); //更新过期的数据源
|
}*/
|
|
}
|
}else if(message.getMsgType().equals(MessageType.SWITCH_PHONE_NUMBER)) {
|
SessionListener.delAllOnLineUser(message.getDbId()+"",message.getUserCode());
|
}else{
|
//发通知关闭系统
|
//log.info("sendMessageV2:"+JSON.toJSONString(userEntity)+";message"+JSON.toJSONString(message));
|
userEntity.sendMessageV2(message);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
}
|