From e5237d8e088a46c19cabaf2ec40a033258d0dbfc Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 10 Dec 2021 02:02:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E9=80=9A=E7=9F=A5=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E5=B0=8F=E7=BA=A2=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/Application.java | 2 + .../com/jmfy/controller/LoginController.java | 63 +++++++++++++++ .../jmfy/controller/OrderInfoController.java | 2 + .../jmfy/controller/ServerInfoController.java | 3 +- .../com/jmfy/utils/AutoServerManager.java | 4 + src/main/resources/templates/exporOrder.html | 2 +- src/main/resources/templates/index.html | 76 ++++++++++++++++++- src/main/resources/templates/welcome.html | 14 +++- 8 files changed, 159 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/Application.java b/src/main/java/com/Application.java index a12d601..58dfbff 100644 --- a/src/main/java/com/Application.java +++ b/src/main/java/com/Application.java @@ -2,6 +2,7 @@ package com; import com.jmfy.config.GlobalSysSettings; import com.jmfy.controller.GlobalSysController; +import com.jmfy.controller.LoginController; import com.jmfy.handler.BaseHandler; import com.jmfy.handler.ManagerManager; import com.jmfy.thrift.pool.ThriftPoolUtils; @@ -45,6 +46,7 @@ public class Application extends SpringBootServletInitializer { MinuteTask minuteTask = configurableApplicationContext.getBean(MinuteTask.class); minuteTask.setsHotFixManager(sHotFixManager); TaskKit.scheduleWithFixedDelay(minuteTask,30,60, TimeUnit.SECONDS); + TaskKit.scheduleWithFixedDelay(LoginController::sessionHandler, 1000, 200, TimeUnit.MILLISECONDS); FileCacheUtils.initData(); } diff --git a/src/main/java/com/jmfy/controller/LoginController.java b/src/main/java/com/jmfy/controller/LoginController.java index f2fbc76..b78e2f9 100644 --- a/src/main/java/com/jmfy/controller/LoginController.java +++ b/src/main/java/com/jmfy/controller/LoginController.java @@ -1,5 +1,6 @@ package com.jmfy.controller; +import com.alibaba.fastjson.JSONObject; import com.jmfy.WebSecurityConfig; import com.jmfy.dao.CUserDao; import com.jmfy.dao.ChannelInfoDao; @@ -10,6 +11,7 @@ import com.jmfy.model.vo.IdentityVo; import com.jmfy.model.vo.PowersEnum; import com.jmfy.model.vo.PowersVo; import com.jmfy.utils.DateUtil; +import com.jmfy.utils.ExpiryMap; import com.jmfy.utils.JsonUtil; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -20,6 +22,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.*; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; import java.util.stream.Collectors; /** @@ -34,6 +38,65 @@ public class LoginController { static final String ROOT = "root"; + /** + * id记录 + */ + private static int sessionId = 0; + /** + * 消息map + */ + private static ExpiryMap sessionMaps = new ExpiryMap<>(); + /** + * 队列大小 + */ + private static final int QUEUE_LENGTH = 10000*10; + /** + * 基于内存的阻塞队列 + */ + private static BlockingQueue queue = new LinkedBlockingQueue<>(QUEUE_LENGTH); + + /** + * 添加信息至队列中 + * @param content + */ + public static void addQueue(String content) { + queue.offer(content); + } + + /** + * 消息处理 + */ + public static void sessionHandler(){ + String str = null; + while ((str = queue.poll()) != null){ + sessionMaps.put(String.valueOf(sessionId),str,10*60*1000); + sessionId++; + } + } + + /** + * 获取消息 + * @return + */ + @RequestMapping(value = "/action", method = {RequestMethod.POST, RequestMethod.GET}) + public @ResponseBody String action(){ + if (sessionMaps.isEmpty()){ + return null; + } + return JSONObject.toJSONString(sessionMaps); + } + + /** + * 删除消息 + * @return + */ + @RequestMapping(value = "/readAction", method = {RequestMethod.POST, RequestMethod.GET}) + public @ResponseBody int readAction(HttpServletRequest request){ + String id = request.getParameter("id"); + sessionMaps.remove(id); + return 1; + } + @GetMapping("/") public String index(){ return "index"; diff --git a/src/main/java/com/jmfy/controller/OrderInfoController.java b/src/main/java/com/jmfy/controller/OrderInfoController.java index 8f62b22..d74e16c 100644 --- a/src/main/java/com/jmfy/controller/OrderInfoController.java +++ b/src/main/java/com/jmfy/controller/OrderInfoController.java @@ -390,6 +390,7 @@ public class OrderInfoController { workbook.write(fOut); } catch (Exception e) { + LoginController.addQueue("订单列表《"+name+"》导出报错:"+e.getMessage()); e.printStackTrace(); } finally @@ -407,6 +408,7 @@ public class OrderInfoController { e.printStackTrace(); } } + LoginController.addQueue("订单列表《"+name+"》导出完成!"); LOGGER.info("导出订单操作,excel文件写入耗时:{}毫秒",DateUtil.now()-start); } diff --git a/src/main/java/com/jmfy/controller/ServerInfoController.java b/src/main/java/com/jmfy/controller/ServerInfoController.java index f3a1b70..9fb8beb 100644 --- a/src/main/java/com/jmfy/controller/ServerInfoController.java +++ b/src/main/java/com/jmfy/controller/ServerInfoController.java @@ -102,6 +102,7 @@ public class ServerInfoController { } catch (Exception e) { e.printStackTrace(); } + LoginController.addQueue("服务器缓存刷新完成!"); state = 0; } @@ -457,7 +458,7 @@ public class ServerInfoController { portStatusMap.clear(); portStatusMap = cacheMap; } catch (Exception e) { - LOGGER.error("监听脚本报错:::"); + LoginController.addQueue("检查游戏端口状态报错:"+e.getMessage()); e.printStackTrace(); } finally { if (exec != null) { diff --git a/src/main/java/com/jmfy/utils/AutoServerManager.java b/src/main/java/com/jmfy/utils/AutoServerManager.java index 430ab58..6a620ba 100644 --- a/src/main/java/com/jmfy/utils/AutoServerManager.java +++ b/src/main/java/com/jmfy/utils/AutoServerManager.java @@ -1,5 +1,6 @@ package com.jmfy.utils; +import com.jmfy.controller.LoginController; import com.jmfy.dao.ServerInfoDao; import com.jmfy.handler.DingTalkLogic; import com.jmfy.handler.GMHandler; @@ -135,6 +136,7 @@ public class AutoServerManager { updateServer(oldServer, ServerStatusEnum.CROWDING.getId(), 0, serverId); // 新服务器状态更新 updateServer(serverInfo, ServerStatusEnum.FLUENT.getId(), 1, serverInfo.getServer_id()); + LoginController.addQueue("自动开服,服务器:" + serverInfo.getServer_id() +"清库重启完毕"); } } @@ -193,6 +195,7 @@ public class AutoServerManager { + restart+"}"; } while (i < 3); } catch (Exception e) { + LoginController.addQueue("检查服务器开启状态报错,服务器:"+serverId+",报错:"+e.getMessage()); cont = "服务器验证状态异常:{"+e.getMessage()+"}"; e.printStackTrace(); } @@ -232,6 +235,7 @@ public class AutoServerManager { if (serverStatus){ // 入库 serverInfoDao.updateServerInfo(clone); + LoginController.addQueue("手动开服,服务器:" + clone.getServer_id() +"清库重启完毕"); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/resources/templates/exporOrder.html b/src/main/resources/templates/exporOrder.html index 69b84b4..56a9675 100644 --- a/src/main/resources/templates/exporOrder.html +++ b/src/main/resources/templates/exporOrder.html @@ -57,7 +57,7 @@ - diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 7d3792f..163a5c2 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -28,12 +28,18 @@