| | |
| | | return false; |
| | | } |
| | | $(function () { |
| | | //checkSysIsExpired('<%=dbid%>','false'); //检查系统是否停止使用 Added by Johns Wang ,2017-05-26 |
| | | maintaince.dbid =<%=dbid%>; |
| | | maintaince.isStop = 'false'; |
| | | setInterval(maintaince.checkSysIsExpired, 10000);//10秒调用一次 |
| | | setInterval(messagehint.popupMessageHint, 120000);//120秒调用一次 (120000) |
| | | |
| | | //是否显示系统消息 2012-09-18 |
| | |
| | | resizeiFrameHeight(); |
| | | }); |
| | | $(function () { |
| | | <%--initWebsocket('<%= hostUrl.replace("https", "wss").replace("http", "ws") %>','<%=session.getAttribute(SessionKey.HRCODE)%>','<%=dbid%>','<%= session.getId() %>');--%> |
| | | initWebsocket('<%= hostUrl.replace("https", "wss").replace("http", "ws") %>','<%=session.getAttribute(SessionKey.HRCODE)%>',<%=dbid%>,'<%= session.getId() %>'); |
| | | }); |
| | | </script> |
| | | </body> |
| | |
| | | var timeron=null; |
| | | function initWebsocket(hostUrl,userCode,dbId,sessionId) { |
| | | function initWebsocket(hostUrl,userCode,dbId,sessionId,userType) { |
| | | // 初始化weosocket |
| | | var userFromType=1; |
| | | if(userType!=undefined) userFromType=userType; |
| | | var localHostUrl = hostUrl; |
| | | var localUserCode = userCode ; |
| | | var localDbId = dbId; |
| | | var localSessionId = sessionId ; |
| | | var info = '/ws/websocketMessage/'+localUserCode + '/'+ localDbId+'/' + localSessionId ; |
| | | var info = '/ws/websocketMessage/'+localUserCode + '/'+ localDbId+'/' + localSessionId+'/'+userFromType ; |
| | | var url = localHostUrl + info ; |
| | | websocket = new WebSocket(url); |
| | | |
| | | websocket.onopen = function () { |
| | | // 连接建立之后执行 |
| | | console.log('WebSocket连接成功'); |
| | | //console.log('WebSocket连接成功'); |
| | | // this.connectUser() |
| | | // this.$indicator.close() |
| | | clearTimeout(timeron);//by danaus 2020/3/20 20:42 |
| | |
| | | websocket.onerror = function (e) { |
| | | // 连接建立失败3S重连 |
| | | timeron=setTimeout(function () { |
| | | initWebsocket(localHostUrl,localUserCode,localDbId,localSessionId); |
| | | initWebsocket(localHostUrl,localUserCode,localDbId,localSessionId,userType); |
| | | }, 3000); |
| | | console.log('连接建立失败', e); |
| | | console.log('连接建立失败,3秒后重连', e); |
| | | }; |
| | | |
| | | websocket.onclose = function (e) { |
| | |
| | | // setTimeout(function () { |
| | | // initWebsocket(localHostUrl,localUserCode,localDbId,localSessionId); |
| | | // }, 3000); |
| | | if (webSocket != null){ |
| | | websocket.close(); |
| | | } |
| | | console.log('断开连接', e); |
| | | }; |
| | | |
| | | |
| | | // 接收消息 |
| | | websocket.onmessage = function (e) { |
| | | console.log('接收消息', e); |
| | | var json= JSON.parse(e.data); |
| | | if(json.info.msgType==6014){ |
| | | //重定向到登录页面 |
| | | location="/login.jsp?m=6015&d="+json.info.dbId; |
| | | }else if(json.info.msgType==6015){ |
| | | //刷新当前页面 |
| | | location="/login.jsp"; |
| | | }else if(json.info.msgType==6002){ |
| | | //右下角弹窗 |
| | | |
| | | } |
| | | // console.log('接收消息', json); |
| | | } |
| | | } |
| | |
| | | //location =oauth2HostName+"/oauth2/qq.do?"+SessionKey+"="+select.value+"&orghost="+hostUrl; |
| | | }); |
| | | |
| | | maintaince.dbid=select.value; |
| | | maintaince.isStop='false'; |
| | | setInterval(maintaince.checkSysIsExpired, 10000);//10秒调用一次 |
| | | //maintaince.dbid=select.value; |
| | | // maintaince.isStop='false'; |
| | | //setInterval(maintaince.checkSysIsExpired, 10000);//10秒调用一次 |
| | | //checkSysIsExpired('<%=dbId%>','false'); //检查系统是否停止使用 Added by Johns Wang ,2017-05-26 |
| | | |
| | | |
| | |
| | | <%@page import="com.yc.sdk.weixinmp.util.UserAgentUtil" %> |
| | | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> |
| | | <% |
| | | String msgType=request.getParameter("m");//停用系统webscoket返回的参数,用它作为是否需要刷新当前页面的标记 by danaus 2022/7/5 17:48 |
| | | String msgDbid=request.getParameter("d");//停用系统webscoket返回的参数,用它作为是否需要刷新当前页面的标记 by danaus 2022/7/5 17:48 |
| | | String dsPath = request.getServletContext().getRealPath("/") + "WEB-INF" + File.separator + "classes" + File.separator + "dataSource" + File.separator + "_dataSource.xml"; |
| | | Calendar date = Calendar.getInstance(); |
| | | int year = date.get(Calendar.YEAR); |
| | |
| | | rel="stylesheet"/> |
| | | <script type="text/javascript" |
| | | src="<%=hostUrl%>/js/index/maintaince.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/index/maintaince.js")%>"></script> |
| | | <script src="<%=hostUrl%>/js/index/WebSocketMessage.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/index/WebSocketMessage.js")%>" |
| | | type="text/javascript"></script> |
| | | </head> |
| | | <title>404页面不存在</title> |
| | | <body> |
| | | |
| | | <script type="text/javascript"> |
| | | $(function () { |
| | | if("<%=msgType%>"==6015){ |
| | | initWebsocket('<%= hostUrl.replace("https", "wss").replace("http", "ws") %>','<%=session.getAttribute(SessionKey.HRCODE)%>',<%=msgDbid%>,'<%= session.getId() %>','<%=msgType%>'); |
| | | } |
| | | //maintaince.dbid =<%=dbId%>; |
| | | //maintaince.isStop = 'true'; |
| | | //setInterval(maintaince.checkSysIsExpired, 10000);//10秒调用一次 |
| | | //checkSysIsExpired('<%=dbId%>','true'); //检查系统是否停止使用 Added by Johns Wang ,2017-05-26 |
| | | }); |
| | | </script> |
| | | <style> |
| | | .col-center-block { |
| | | float: none; |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script type="text/javascript"> |
| | | $(function () { |
| | | maintaince.dbid =<%=dbId%>; |
| | | maintaince.isStop = 'true'; |
| | | setInterval(maintaince.checkSysIsExpired, 10000);//10秒调用一次 |
| | | //checkSysIsExpired('<%=dbId%>','true'); //检查系统是否停止使用 Added by Johns Wang ,2017-05-26 |
| | | }); |
| | | </script> |
| | | </body> |
| | | </html> |
| | | <% |
| | |
| | | <script src="<%=hostUrl %>/layui/layui.all.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/layui/layui.all.js")%>"></script> |
| | | <script src="<%=hostUrl %>/js/loginValidate.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/loginValidate.js")%>" |
| | | type="text/javascript"></script> |
| | | <script src="<%=hostUrl%>/js/index/WebSocketMessage.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/index/WebSocketMessage.js")%>" |
| | | type="text/javascript"></script> |
| | | </head> |
| | | <script type="text/javascript"> |
| | | $(function () { |
| | | if("<%=msgType%>"==6015){ |
| | | initWebsocket('<%= hostUrl.replace("https", "wss").replace("http", "ws") %>','<%=session.getAttribute(SessionKey.HRCODE)%>',<%=msgDbid%>,'<%= session.getId() %>','<%=msgType%>'); |
| | | } |
| | | }); |
| | | </script> |
| | | <body class="login"> |
| | | <div class="login_m"> |
| | | <div class="login_boder"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/javascript"><!-- |
| | | <script type="text/javascript"> |
| | | $(document).delegate('#button-submit', 'click', function() { |
| | | <% if (! isStop) { %> |
| | | if (! confirm("是否真的停止系统,如果选【确定】,则系统将立即停止访问!") ) { |
| | | if (! confirm("是否真的停止系统,如果选【确定】,系统将立即停止访问!") ) { |
| | | return ; |
| | | } |
| | | <% } %> |
| | |
| | | } |
| | | }); |
| | | }); |
| | | //--></script> |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
| | |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | map.put("sessionInfo", getSessionInfo(session)); |
| | | map.put("userType", session.getAttribute(SessionKey.USERTYPE)); |
| | | map.put("isStopSystem", session.getAttribute(SessionKey.isStopSystem)); |
| | | map.put("isAdmin", ("SuperUser".equalsIgnoreCase(session.getAttribute(SessionKey.USERTYPE) + "") || "DeveloperUser".equalsIgnoreCase(session.getAttribute(SessionKey.USERTYPE) + "")) ? 1 : 0);//非普通用户都有所有权限 |
| | | final DataSourceEntity dataSourceMap = MultiDataSource.getDataSourceMap(dbId); |
| | | map.put("isShowAttendance", dataSourceMap.isShowAttendanceButton() ? 1 : 0);//打卡 |
| | |
| | | package com.yc.action.panval; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.google.gson.JsonObject; |
| | | import com.jspsmart.upload.Files; |
| | | import com.jspsmart.upload.Request; |
| | | import com.jspsmart.upload.SmartUpload; |
| | | import com.yc.action.BaseAction; |
| | | import com.yc.action.grid.GridUtils; |
| | | import com.yc.entity.DataSourceActionEntity; |
| | | import com.yc.entity.DataSourceActionEntity.ActionEnum; |
| | | import com.yc.entity.DataSourceEntity; |
| | |
| | | import com.yc.exception.ApplicationException; |
| | | import com.yc.exception.CallBackMessage; |
| | | import com.yc.factory.FactoryBean; |
| | | import com.yc.im.service.RedisDAO; |
| | | import com.yc.im.util.RedisSocket; |
| | | import com.yc.multiData.JdbcPoolConfig; |
| | | import com.yc.multiData.MultiDataSource; |
| | | import com.yc.multiData.SpObserver; |
| | | import com.yc.sdk.WebSocketMessage.action.WebSocketMessageServer; |
| | | import com.yc.sdk.WebSocketMessage.entity.MessageInfo; |
| | | import com.yc.sdk.WebSocketMessage.entity.MessageType; |
| | | import com.yc.sdk.password.action.ChangePassword; |
| | | import com.yc.sdk.shopping.entity.SampleTypeEntity; |
| | | import com.yc.sdk.shopping.util.SettingKey; |
| | | import com.yc.sdk.weixincp.util.AsynchronousExecution; |
| | | import com.yc.service.BaseService; |
| | |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.dao.DataAccessException; |
| | | |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.awt.*; |
| | | import java.awt.color.ColorSpace; |
| | | import java.awt.image.*; |
| | | import java.awt.image.BufferedImage; |
| | | import java.awt.image.ColorConvertOp; |
| | | import java.awt.image.Raster; |
| | | import java.io.*; |
| | | import java.net.InetAddress; |
| | | import java.net.URLDecoder; |
| | | import java.net.UnknownHostException; |
| | | import java.sql.SQLException; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.List; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ConcurrentMap; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | |
| | | MultiDataSource multiDataSource = (MultiDataSource) FactoryBean.getBean("multiDataSource"); |
| | | multiDataSource.refreshDataSource(dbId);// 是为了增加一个数据源实现不重启就可以访问新增的数据源。也就是对原有保存在内存的数据源集合进行更新 2014-11-26 |
| | | } |
| | | |
| | | MessageInfo messageInfo = new MessageInfo(); |
| | | //---刷新本地tomcat内存的数据源 |
| | | messageInfo.setMsgType(MessageType.CHECK_SYSTEM_DISABLED); |
| | | messageInfo.setDbId(Integer.parseInt(dbId)); |
| | | DataSourceActionEntity dataSourceActionEntity = new DataSourceActionEntity() ; |
| | | dataSourceActionEntity.setDbId(dbId); |
| | | dataSourceActionEntity.setAction(action.getName()); |
| | | |
| | | RedisDAO redisDAO = (RedisDAO) FactoryBean.getBean("redisDAO");//发送消息 |
| | | redisDAO.publishMessage(RedisSocket.CHANNEL_DATASOURCE, GridUtils.toJsonNotNull(dataSourceActionEntity)); |
| | | messageInfo.setMsg(JSON.toJSONString(dataSourceActionEntity)); |
| | | WebSocketMessageServer.publishMessageToRedis(messageInfo); |
| | | return true ; |
| | | } |
| | | |
| | | |
| | | public static void refreshDataSourceV2(String dbId,ActionEnum action,String actionType) throws Exception{ |
| | | refreshDataSource(dbId,action); |
| | | //---通知webscoket |
| | | MessageInfo messageInfo = new MessageInfo(); |
| | | messageInfo.setDbId(Integer.parseInt(dbId)); |
| | | if("stop".equalsIgnoreCase(actionType)) { |
| | | messageInfo.setMsgType(MessageType.NOTICE_SYSTEM_STOP); |
| | | }else{ |
| | | messageInfo.setMsgType(MessageType.NOTICE_SYSTEM_START); |
| | | messageInfo.setUserFromType(MessageType.NOTICE_SYSTEM_START+"");//作为key的一部分,识别是用来刷新登录页面 |
| | | } |
| | | WebSocketMessageServer.publishMessageToRedis(messageInfo); |
| | | } |
| | | |
| | | /** |
| | | * 判断当前 dbid 是否存在于 cookies 中 |
| | |
| | | import com.yc.im.util.RedisSocket; |
| | | import com.yc.sdk.WebSocketMessage.entity.*; |
| | | import com.yc.sdk.jedis.RedisKey; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | |
| | | public static List<WsMessageUserEntity> getOnlineUser(Integer dbId, String userFromType) { |
| | | List<WsMessageUserEntity> wsMessageUserList = new ArrayList<WsMessageUserEntity>(); |
| | | for(Map.Entry<String, WsMessageUserEntity> entry:onlineUserList.entrySet()){ |
| | | if (entry.getKey().startsWith(RedisSocket.CHANEL_WS_MESSAGES + ":" + dbId + ":" + userFromType + ":")) { |
| | | if (entry.getKey().startsWith(RedisSocket.CHANEL_WS_MESSAGES + ":" + dbId + ":" + (StringUtils.isNotBlank(userFromType)?(userFromType + ":"):""))) { |
| | | wsMessageUserList.add(entry.getValue()) ; |
| | | } |
| | | //System.out.println(entry.getKey()+"--->"+entry.getValue()); |
| | |
| | | TasksMessageIfc tasksMessageIfc; |
| | | @Autowired |
| | | VersionMessageIfc versionMessageIfc; |
| | | @Autowired |
| | | RefreshDataSourceMessageIfc refreshDataSourceMessageIfc; |
| | | |
| | | @Override |
| | | public void onMessage(Message message, byte[] pattern) { |
| | | try { |
| | | RedisSerializer<?> serializer = redisTemplate.getValueSerializer(); |
| | | Object body = serializer.deserialize(message.getBody()); |
| | | //String channel = new String(pattern); //取订阅频道 主题 channel |
| | | MessageInfo msg=null; |
| | | if(body instanceof MessageInfo) { |
| | | MessageInfo msg = null; |
| | | if (body instanceof MessageInfo) { |
| | | msg = (MessageInfo) body; |
| | | }else { |
| | | } else { |
| | | msg = MessageInfo.build(String.valueOf(body)); |
| | | } |
| | | //System.out.println("订阅接收到的消息:"+msg.toString()); |
| | | |
| | | //群发所有小程序用户 |
| | | if (msg.getMsgType().equals(MessageType.REFRESH_PANICBUYING) && (msg.getUserCode()==null|| msg.getUserCode().equals("")) ) { |
| | | List<WsMessageUserEntity> wsMessageUserEntityList = WebSocketMessageServer.getOnlineUser(msg.getDbId(), msg.getUserFromType()); |
| | | //只有是存在于当前的用户信息才需要处理,否则不需要处理 |
| | | if (wsMessageUserEntityList != null && wsMessageUserEntityList.size() != 0) { |
| | | for (WsMessageUserEntity wsMessageUserEntity : wsMessageUserEntityList) { |
| | | handlerMessage(msg, wsMessageUserEntity); |
| | | } |
| | | } |
| | | }else if(msg.getMsgType().equals(MessageType.REFRESH_TASK)|| |
| | | msg.getMsgType().equals(MessageType.REFRESH_LOCALVERSION_TASK)){ |
| | | //对于没用websocket接收的情况,直接处理相关消息 |
| | | handlerMessage(msg,null); |
| | | |
| | | }else{ |
| | | List<WsMessageUserEntity> wsMessageUserEntityList = WebSocketMessageServer.getOnlineUser(msg.getDbId(), msg.getUserFromType(),msg.getUserCode()); |
| | | //群发所有小程序用户 |
| | | if ((msg.getMsgType().equals(MessageType.REFRESH_PANICBUYING) && (msg.getUserCode() == null || msg.getUserCode().equals(""))) || |
| | | MessageType.NOTICE_SYSTEM_STOP.equals(msg.getMsgType())|| |
| | | MessageType.NOTICE_SYSTEM_START.equals(msg.getMsgType())) { |
| | | List<WsMessageUserEntity> wsMessageUserEntityList = WebSocketMessageServer.getOnlineUser(msg.getDbId(), msg.getUserFromType()); |
| | | //只有是存在于当前的用户信息才需要处理,否则不需要处理 |
| | | if (wsMessageUserEntityList != null && wsMessageUserEntityList.size() != 0) { |
| | | for (WsMessageUserEntity wsMessageUserEntity : wsMessageUserEntityList) { |
| | | handlerMessage(msg, wsMessageUserEntity); |
| | | } |
| | | } |
| | | } else if (msg.getMsgType().equals(MessageType.REFRESH_TASK) || |
| | | msg.getMsgType().equals(MessageType.REFRESH_LOCALVERSION_TASK)) { |
| | | //对于没用websocket接收的情况,直接处理相关消息 |
| | | handlerMessage(msg, null); |
| | | |
| | | } else { |
| | | List<WsMessageUserEntity> wsMessageUserEntityList = WebSocketMessageServer.getOnlineUser(msg.getDbId(), msg.getUserFromType(), msg.getUserCode()); |
| | | //只有是存在于当前的用户信息才需要处理,否则不需要处理 |
| | | if (wsMessageUserEntityList != null && wsMessageUserEntityList.size() != 0) { |
| | | for (WsMessageUserEntity wsMessageUserEntity : wsMessageUserEntityList) { |
| | |
| | | * @return |
| | | */ |
| | | protected void handlerMessage(MessageInfo message, WsMessageUserEntity userEntity) { |
| | | MessageIfc messageIfc = null; |
| | | if (message != null && message.getMsgType() != null) { |
| | | MessageIfc messageIfc = null; |
| | | if (message != null && message.getMsgType() != null) { |
| | | switch (message.getMsgType()) { |
| | | case 6001: //APP扫码登录 |
| | | // messageIfc=imMessageIfc; |
| | |
| | | case 6004: //收取服务费续费通知 |
| | | //messageIfc=imMessageIfc; |
| | | break; |
| | | case 6005: //检查系统是否停用,代替maintaince.do |
| | | //messageIfc=imMessageIfc; |
| | | case 6005: //检查系统是否停用,代替maintaince.do |
| | | case 6014: //关闭系统通知 |
| | | case 6015: //启用系统通知 |
| | | messageIfc = refreshDataSourceMessageIfc; |
| | | break; |
| | | case 6006: //小程序扫码核销(扫码了,等待按“核销”按钮) |
| | | messageIfc=heXiaoMessageIfc; |
| | | messageIfc = heXiaoMessageIfc; |
| | | break; |
| | | case 6007: //发送即时消息 im |
| | | messageIfc = imMessageIfc; |
| | |
| | | messageIfc = apiAuthMessageIfc; |
| | | break; |
| | | case 6009: //刷新小程序端活动内容 MessageType.REFRESH_PANICBUYING |
| | | messageIfc = refreshPanicBuyingIfc ; |
| | | break; |
| | | messageIfc = refreshPanicBuyingIfc; |
| | | break; |
| | | case 6010: //小程序扫码核销(点了“核销”按钮) |
| | | messageIfc=heXiaoMessageIfc; |
| | | messageIfc = heXiaoMessageIfc; |
| | | break; |
| | | case 6011: //农行支付结果通知回调 |
| | | messageIfc=abcPayMessageIfc; |
| | | messageIfc = abcPayMessageIfc; |
| | | break; |
| | | case 6012: //刷新任务作业 |
| | | messageIfc=tasksMessageIfc; |
| | | messageIfc = tasksMessageIfc; |
| | | break; |
| | | case 6013: //刷新内存版本号 |
| | | messageIfc=versionMessageIfc; |
| | | messageIfc = versionMessageIfc; |
| | | break; |
| | | default: |
| | | } |
| | | if (messageIfc != null) { |
| | | messageIfc.handlerMessage(message, userEntity); |
| | | messageIfc.handlerMessage(message, userEntity); |
| | | } |
| | | } |
| | | } |
| | |
| | | public final static Integer ABC_PAY_CALLBACK =6011; //农行支付回调通知 |
| | | public final static Integer REFRESH_TASK =6012; //刷新系统作业任务 |
| | | public final static Integer REFRESH_LOCALVERSION_TASK =6013; //刷新内存版本号 |
| | | public final static Integer NOTICE_SYSTEM_STOP =6014; //通知关闭系统,返回登录界面 |
| | | public final static Integer NOTICE_SYSTEM_START =6015; //通知启用系统,刷新登录界面 |
| | | |
| | | } |
New file |
| | |
| | | package com.yc.sdk.WebSocketMessage.service; |
| | | |
| | | public interface RefreshDataSourceMessageIfc extends MessageIfc{ |
| | | } |
New file |
| | |
| | | package com.yc.sdk.WebSocketMessage.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.yc.entity.DataSourceActionEntity; |
| | | import com.yc.factory.FactoryBean; |
| | | 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 org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * 处理数据源 |
| | | */ |
| | | @Service |
| | | public class RefreshDataSourceMessageImpl implements RefreshDataSourceMessageIfc { |
| | | @Override |
| | | public void handlerMessage(MessageInfo message, WsMessageUserEntity userEntity) { |
| | | //TODO 业务逻辑处理 |
| | | try { |
| | | if (message != null) { |
| | | DataSourceActionEntity dataSourceActionEntity = JSON.parseObject(message.getMsg(), DataSourceActionEntity.class); |
| | | if(message.getMsgType().equals(MessageType.CHECK_SYSTEM_DISABLED)) { |
| | | if (dataSourceActionEntity != null) { |
| | | MultiDataSource multiDataSource = (MultiDataSource) FactoryBean.getBean("multiDataSource"); |
| | | if (DataSourceActionEntity.ActionEnum.REFRESH.getName().equals(dataSourceActionEntity.getAction())) { |
| | | multiDataSource.refreshDataSource(dataSourceActionEntity.getDbId()); //刷新本地数据源 |
| | | } |
| | | if (DataSourceActionEntity.ActionEnum.DELETE.getName().equals(dataSourceActionEntity.getAction())) { |
| | | multiDataSource.removeDataSource(dataSourceActionEntity.getDbId()); //删除数据源 |
| | | } |
| | | if (DataSourceActionEntity.ActionEnum.REFRESHEXPIREDDATE.getName().equals(dataSourceActionEntity.getAction())) { |
| | | multiDataSource.refreshExpiredDataSource(); //更新过期的数据源 |
| | | } |
| | | } |
| | | }else{ |
| | | //发通知关闭系统 |
| | | |
| | | userEntity.sendMessageV2(message); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | // expiredDate |
| | | demo.updateExpiredDate(dataSourceEntity.getDbId(), days ) ; |
| | | } catch (DataAccessException e) { |
| | | errJson.addProperty("warning",(e.getCause()!=null? e.getCause().getMessage():e.getMessage())); |
| | | json.add("error", errJson); |
| | | String msg=(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); |
| | | if(request.getHeader("x-app-type")!=null) { |
| | | json.addProperty("state", -1); |
| | | json.addProperty("msg", msg); |
| | | }else { |
| | | errJson.addProperty("warning",msg); |
| | | json.add("error", errJson); |
| | | } |
| | | this.printJson(response, json.toString()); |
| | | return; |
| | | }catch (Exception e) { |
| | | errJson.addProperty("warning",(e.getCause()!=null? e.getCause().getMessage():e.getMessage())); |
| | | json.add("error", errJson); |
| | | String msg=(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); |
| | | if(request.getHeader("x-app-type")!=null) { |
| | | json.addProperty("state", -1); |
| | | json.addProperty("msg", msg); |
| | | }else{ |
| | | errJson.addProperty("warning",msg); |
| | | json.add("error", errJson); |
| | | } |
| | | this.printJson(response, json.toString()); |
| | | return; |
| | | } finally { |
| | |
| | | //删除所有在线用户 |
| | | |
| | | int count = SessionListener.delSession(request,dataSourceEntity.getDbId()+"") ; |
| | | |
| | | json.addProperty("hint", "系统已经停止,停止时已强制【"+count+"】用户退出了系统!"); |
| | | json.addProperty("redirect", hostUrl + "/shopping/maintaince/maintaince.jsp"+ (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString)) ; |
| | | String msg="系统已经停止使用,停止时已强制【" + count + "】用户退出系统!稍后将自动重定向到登录界面"; |
| | | if(request.getHeader("x-app-type")!=null) { |
| | | json.addProperty("state", 0); |
| | | json.addProperty("msg", msg); |
| | | }else { |
| | | json.addProperty("hint",msg ); |
| | | json.addProperty("redirect", hostUrl + "/shopping/maintaince/maintaince.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)); |
| | | } |
| | | }else { |
| | | json.addProperty("isstop","false" ); |
| | | json.addProperty("hint", "系统已经启用,可以正常登录系统!"); |
| | | json.addProperty("redirect", hostUrl + "/shopping/maintaince/maintaince.jsp"+ (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString)) ; |
| | | |
| | | String msg="系统已经启用,可以正常登录系统!"; |
| | | if(request.getHeader("x-app-type")!=null) { |
| | | json.addProperty("state", 0); |
| | | json.addProperty("msg", msg); |
| | | }else { |
| | | json.addProperty("isstop", "false"); |
| | | json.addProperty("hint", msg); |
| | | json.addProperty("redirect", hostUrl + "/shopping/maintaince/maintaince.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)); |
| | | } |
| | | } |
| | | //AsynchronousExecution.doRefreshUri(hostUrl,"/SyncDataSource.do", ""); //doRefreshDataSource(); |
| | | |
| | | InvGet.refreshDataSource(dataSourceEntity.getDbId()+"",DataSourceActionEntity.ActionEnum.REFRESH); //直接刷新本机 |
| | | InvGet.refreshDataSourceV2(dataSourceEntity.getDbId()+"",DataSourceActionEntity.ActionEnum.REFRESH,action); //直接刷新本机 |
| | | }catch(Exception e) { |
| | | this.printJson(response, e.getMessage()); |
| | | e.printStackTrace(); |