From a836f03a5d1fbfa81e147d09ffdfa87ba3975c13 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 18 三月 2025 16:45:02 +0800
Subject: [PATCH] 1
---
server/jtt808_parent/jtt808-server/src/main/java/org/yzh/web/endpoint/JTHandlerInterceptor.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/server/jtt808_parent/jtt808-server/src/main/java/org/yzh/web/endpoint/JTHandlerInterceptor.java b/server/jtt808_parent/jtt808-server/src/main/java/org/yzh/web/endpoint/JTHandlerInterceptor.java
new file mode 100644
index 0000000..6f7fb19
--- /dev/null
+++ b/server/jtt808_parent/jtt808-server/src/main/java/org/yzh/web/endpoint/JTHandlerInterceptor.java
@@ -0,0 +1,117 @@
+package org.yzh.web.endpoint;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import io.github.yezhihao.netmc.core.HandlerInterceptor;
+import io.github.yezhihao.netmc.session.Session;
+import netscape.javascript.JSObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.yzh.commons.util.Byte2NumberUtils;
+import org.yzh.protocol.basics.JTMessage;
+import org.yzh.protocol.commons.JT808;
+import org.yzh.protocol.commons.transform.AttributeKey;
+import org.yzh.protocol.commons.transform.attribute.Battery;
+import org.yzh.protocol.t808.T0001;
+import org.yzh.protocol.t808.T0200;
+import org.yzh.web.model.entity.DeviceDO;
+import org.yzh.web.model.enums.SessionKey;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+public class JTHandlerInterceptor implements HandlerInterceptor<JTMessage> {
+
+ private static final Logger log = LoggerFactory.getLogger(JTHandlerInterceptor.class);
+
+ /** 鏈壘鍒板搴旂殑Handle */
+ @Override
+ public JTMessage notSupported(JTMessage request, Session session) {
+ T0001 response = new T0001();
+ response.copyBy(request);
+ response.setMessageId(JT808.骞冲彴閫氱敤搴旂瓟);
+ response.setSerialNo(session.nextSerialNo());
+
+ response.setResponseSerialNo(request.getSerialNo());
+ response.setResponseMessageId(request.getMessageId());
+ response.setResultCode(T0001.NotSupport);
+
+ log.info("{}\n<<<<-鏈瘑鍒殑娑堟伅{}\n>>>>-{}", session, request, response);
+ return response;
+ }
+
+
+ /** 璋冪敤涔嬪悗锛岃繑鍥炲�间负void鐨� */
+ @Override
+ public JTMessage successful(JTMessage request, Session session) {
+ T0001 response = new T0001();
+ response.copyBy(request);
+ response.setMessageId(JT808.骞冲彴閫氱敤搴旂瓟);
+ response.setSerialNo(session.nextSerialNo());
+
+ response.setResponseSerialNo(request.getSerialNo());
+ response.setResponseMessageId(request.getMessageId());
+ response.setResultCode(T0001.Success);
+ log.info(session.getId());
+// log.info("{}\n<<<<-{}\n>>>>-{}", session, request, response);
+ return response;
+ }
+
+ /** 璋冪敤涔嬪悗鎶涘嚭寮傚父鐨� */
+ @Override
+ public JTMessage exceptional(JTMessage request, Session session, Exception e) {
+ T0001 response = new T0001();
+ response.copyBy(request);
+ response.setMessageId(JT808.骞冲彴閫氱敤搴旂瓟);
+ response.setSerialNo(session.nextSerialNo());
+
+ response.setResponseSerialNo(request.getSerialNo());
+ response.setResponseMessageId(request.getMessageId());
+ response.setResultCode(T0001.Failure);
+
+ log.warn(session + "\n<<<<-" + request + "\n>>>>-" + response + '\n', e);
+ return response;
+ }
+
+ /** 璋冪敤涔嬪墠 */
+ @Override
+ public boolean beforeHandle(JTMessage request, Session session) {
+ int messageId = request.getMessageId();
+ if (messageId == JT808.缁堢娉ㄥ唽 || messageId == JT808.缁堢閴存潈)
+ return true;
+ boolean transform = request.transform();
+ if (messageId == JT808.浣嶇疆淇℃伅姹囨姤) {
+ DeviceDO device = SessionKey.getDevice(session);
+ if (device != null){
+ device.setLocation((T0200) request);
+ if(device.getLocation()!=null && device.getLocation().getAttributes()!=null ){
+ Battery battery= (Battery) device.getLocation().getAttributes().get(AttributeKey.Battery);
+ if(battery !=null){
+ device.setBatteryVoltage(battery.getVoltage());
+ }
+ }
+ }
+
+ return transform;
+ }
+ if (!session.isRegistered()) {
+ log.info("{}鏈敞鍐岀殑璁惧<<<<-{}", session, request);
+ return true;
+ }
+ return true;
+ }
+
+ /** 璋冪敤涔嬪悗 */
+ @Override
+ public void afterHandle(JTMessage request, JTMessage response, Session session) {
+ if (response != null) {
+ response.copyBy(request);
+ response.setSerialNo(session.nextSerialNo());
+
+ if (response.getMessageId() == 0) {
+ response.setMessageId(response.reflectMessageId());
+ }
+ }
+// log.info("{}\n<<<<-{}\n>>>>-{}", session, request, response);
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.3