| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | } |