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