From 926e738fce2c959eb903f4a072fc97fe1b276a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Fri, 1 Aug 2025 19:36:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=BC=B9=E7=AA=97=E5=90=91=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handacid/app/controller/TestController.java | 20 +++++++++++++++++++- .../app/websocket/server/AlertGenerator.java | 16 ++++++++++++++++ .../handacid/app/websocket/server/AlertLevel.java | 8 ++++++++ .../app/websocket/server/WebSocketMessageType.java | 10 ++++++++++ .../app/websocket/server/WebSocketSender.java | 13 +++++++++++++ .../iflytop/handacid/common/result/ResultCode.java | 5 ++++- 6 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/iflytop/handacid/app/websocket/server/AlertGenerator.java create mode 100644 src/main/java/com/iflytop/handacid/app/websocket/server/AlertLevel.java diff --git a/src/main/java/com/iflytop/handacid/app/controller/TestController.java b/src/main/java/com/iflytop/handacid/app/controller/TestController.java index 7b749ad..bc259c9 100644 --- a/src/main/java/com/iflytop/handacid/app/controller/TestController.java +++ b/src/main/java/com/iflytop/handacid/app/controller/TestController.java @@ -1,9 +1,12 @@ package com.iflytop.handacid.app.controller; -import com.iflytop.handacid.app.common.enums.ChannelCode; import com.iflytop.handacid.app.core.state.DeviceState; import com.iflytop.handacid.app.service.TestService; +import com.iflytop.handacid.app.websocket.server.AlertGenerator; +import com.iflytop.handacid.app.websocket.server.AlertLevel; +import com.iflytop.handacid.app.websocket.server.WebSocketSender; import com.iflytop.handacid.common.result.Result; +import com.iflytop.handacid.common.result.ResultCode; import com.iflytop.handacid.hardware.service.AppEventBusService; import com.iflytop.handacid.hardware.type.A8kPacket; import com.iflytop.handacid.hardware.type.CmdId; @@ -27,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController; public class TestController { private final DeviceState deviceState; private final AppEventBusService eventBus; + private final WebSocketSender webSocketSender; private final TestService testService; @Operation(summary = "启动虚拟模式") @@ -59,4 +63,18 @@ public class TestController { return Result.success(); } + @Operation(summary = "推送弹窗") + @PostMapping("/push-popup") + public Result pushPopup(AlertLevel lv, String resultCode) { + webSocketSender.pushPopup(AlertGenerator.generateJson(lv,ResultCode.getByCode(resultCode))); + return Result.success(); + } + + @Operation(summary = "推送小提示") + @PostMapping("/push-toast") + public Result pushToast(AlertLevel lv, String resultCode) { + webSocketSender.pushToast(AlertGenerator.generateJson(lv,ResultCode.getByCode(resultCode))); + return Result.success(); + } + } diff --git a/src/main/java/com/iflytop/handacid/app/websocket/server/AlertGenerator.java b/src/main/java/com/iflytop/handacid/app/websocket/server/AlertGenerator.java new file mode 100644 index 0000000..66621f6 --- /dev/null +++ b/src/main/java/com/iflytop/handacid/app/websocket/server/AlertGenerator.java @@ -0,0 +1,16 @@ +package com.iflytop.handacid.app.websocket.server; + +import cn.hutool.json.JSONObject; +import com.iflytop.handacid.common.result.ResultCode; + +public class AlertGenerator { + + public static JSONObject generateJson(AlertLevel alertLevel, ResultCode resultCode) { + JSONObject jsonObject = new JSONObject(); + jsonObject.set("level", alertLevel); + jsonObject.set("code", resultCode.getCode()); + jsonObject.set("msg", resultCode.getMsg()); + return jsonObject; + } + +} diff --git a/src/main/java/com/iflytop/handacid/app/websocket/server/AlertLevel.java b/src/main/java/com/iflytop/handacid/app/websocket/server/AlertLevel.java new file mode 100644 index 0000000..c53ff5c --- /dev/null +++ b/src/main/java/com/iflytop/handacid/app/websocket/server/AlertLevel.java @@ -0,0 +1,8 @@ +package com.iflytop.handacid.app.websocket.server; + +public enum AlertLevel { + INFO, // 普通消息 + WARNING, // 警告 + ERROR, // 错误 + ALARM, // 报警 +} diff --git a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketMessageType.java b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketMessageType.java index 0165acf..dc2afab 100644 --- a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketMessageType.java +++ b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketMessageType.java @@ -25,5 +25,15 @@ public class WebSocketMessageType { */ public static final String PUMP_POSITION = "pump_position"; + /** + * 弹窗 + */ + public static final String POPUP = "popup"; + + /** + * 提醒 + */ + public static final String TOAST = "toast"; + } diff --git a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java index e5528bd..8b93939 100644 --- a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java +++ b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java @@ -26,6 +26,19 @@ public class WebSocketSender { sessionManager.broadcast(json); } + /** + * 弹窗 + */ + public void pushPopup(Object data){ + push(WebSocketMessageType.POPUP, data); + } + + /** + * 小提醒 + */ + public void pushToast(Object data){ + push(WebSocketMessageType.TOAST, data); + } public void pushDebug(Object data) { push(WebSocketMessageType.CMD_DEBUG, data); diff --git a/src/main/java/com/iflytop/handacid/common/result/ResultCode.java b/src/main/java/com/iflytop/handacid/common/result/ResultCode.java index 684e8e5..cd93c79 100644 --- a/src/main/java/com/iflytop/handacid/common/result/ResultCode.java +++ b/src/main/java/com/iflytop/handacid/common/result/ResultCode.java @@ -1,9 +1,12 @@ package com.iflytop.handacid.common.result; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import lombok.AllArgsConstructor; import lombok.Getter; import java.io.Serializable; +import java.util.Map; /** * 统一前端响应码定义 @@ -81,7 +84,7 @@ public enum ResultCode implements IResultCode, Serializable { /** * 根据 code 获取枚举 */ - public static ResultCode parse(String code) { + public static ResultCode getByCode(String code) { for (ResultCode item : values()) { if (item.code.equals(code)) { return item;