fs-danaus
2023-07-10 4849078e3450b8d3b3030a658a34dd58b0630fc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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();
        }
    }
 
 
}