From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 六月 2025 11:54:00 +0800
Subject: [PATCH] 6.9新增登录失败冻结逻辑

---
 springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java |   85 +++++++++++++++++++++++++-----------------
 1 files changed, 51 insertions(+), 34 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java b/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
index 4839a7f..d9f7b8f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
@@ -23,6 +23,7 @@
 import javax.annotation.Resource;
 import java.time.Duration;
 import java.util.Date;
+import java.util.Objects;
 
 @Slf4j
 @Component
@@ -39,6 +40,7 @@
     private RabbitTemplate rabbitTemplate;
 
     private static NettyServerHandler nettyServerHandler;
+
     /**
      * 客户端连接会触发
      */
@@ -52,22 +54,28 @@
      */
     @Override
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
-        MyTools myTools=new MyTools();
+        MyTools myTools = new MyTools();
         log.info("服务器收到消息: {}", msg.toString());
-        if(msg.toString().startsWith("4A1802")){
-            myTools.writeToClient("404A021823",ctx,"状态包");
+        if (msg.toString().startsWith("4A1802")) {
+            myTools.writeToClient("404A021823", ctx, "状态包");
         }
-        if(msg.toString().startsWith("4A0C0134")){
-            myTools.writeToClient("404A01"+ DateUtils.getDateFormatString(new Date(),"HHmmss")+"23",ctx,"心跳包");
+        if (msg.toString().startsWith("4A0C01")) {
+            myTools.writeToClient("404A01" + DateUtils.getDateFormatString(new Date(), "HHmmss") + "23", ctx, "心跳包");
         }
-        if(msg.toString().startsWith("4A1803")){
-            String serial=msg.toString().substring(14,24);
-            myTools.writeToClient("404A03"+msg.toString().substring(msg.toString().length()-2)+"23",ctx,"事件包");
-            ComPropertyAlarm comPropertyAlarm=new ComPropertyAlarm();
-            comPropertyAlarm.setCreateTime(DateUtil.date());
-            comPropertyAlarm.setSerialNo(serial);
-            comPropertyAlarm.setType(ComPropertyAlarm.type.one);
-            nettyServerHandler.comPropertyAlarmDao.insert(comPropertyAlarm);
+        if (msg.toString().startsWith("4A1803")) {
+            String serial = msg.toString().substring(14, 24);
+            myTools.writeToClient("404A03" + msg.toString().substring(msg.toString().length() - 2) + "23", ctx, "事件包");
+            if (msg.toString().startsWith("4A18031")) {
+                //正式处理
+                 delayAlarm(serial);
+                //展会处理
+//                ComPropertyAlarm comPropertyAlarm = new ComPropertyAlarm();
+//                comPropertyAlarm.setCreateTime(DateUtil.date());
+//                comPropertyAlarm.setSerialNo(serial);
+//                comPropertyAlarm.setType(ComPropertyAlarm.type.one);
+//                nettyServerHandler.comPropertyAlarmDao.insert(comPropertyAlarm);
+            }
+
         }
         ctx.flush();
     }
@@ -83,35 +91,44 @@
 
     @PostConstruct
     public void init() {
-        nettyServerHandler=this;
-        nettyServerHandler.comPropertyAlarmDao=this.comPropertyAlarmDao;
-        nettyServerHandler.stringRedisTemplate=this.stringRedisTemplate;
-        nettyServerHandler.rabbitTemplate=this.rabbitTemplate;
+        nettyServerHandler = this;
+        nettyServerHandler.comPropertyAlarmDao = this.comPropertyAlarmDao;
+        nettyServerHandler.stringRedisTemplate = this.stringRedisTemplate;
+        nettyServerHandler.rabbitTemplate = this.rabbitTemplate;
     }
 
-    private void delayAlarm(String serial){
-        int duration=0;
-        if(StringUtils.isNotEmpty(serial)){
-            if (nettyServerHandler.stringRedisTemplate.hasKey(serial)){
-                ComPropertyEquipment comPropertyEquipment= JSONObject.parseObject(nettyServerHandler.stringRedisTemplate.boundValueOps(serial).get(),ComPropertyEquipment.class);
-                if(nettyServerHandler.stringRedisTemplate.hasKey(comPropertyEquipment.getCommunityId().toString())){
-                    duration=Integer.parseInt(nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).get());
-                }else{
-                    ComPropertyAlarmSetting comPropertyAlarmSetting=nettyServerHandler.comPropertyAlarmSettingDao.getByCommunityId(comPropertyEquipment.getCommunityId());
-                    duration=comPropertyAlarmSetting.getTriggerTime();
-                    nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).set(comPropertyAlarmSetting.getTriggerTime().toString());
-                }
+    //报警事件包延迟处理方法
+    private void delayAlarm(String serial) {
+        int duration = 0;
+        if (StringUtils.isNotEmpty(serial)) {
+
+            ComPropertyEquipment comPropertyEquipment = new ComPropertyEquipment();
+            if (nettyServerHandler.stringRedisTemplate.hasKey(serial)) {
+                comPropertyEquipment = JSONObject.parseObject(nettyServerHandler.stringRedisTemplate.boundValueOps(serial).get(), ComPropertyEquipment.class);
+                duration = getDuration(Objects.requireNonNull(comPropertyEquipment));
                 nettyServerHandler.stringRedisTemplate.boundValueOps(serial).set(JSONObject.toJSONString(comPropertyEquipment), Duration.ofHours(duration));
-            }
-            else {
-                ComPropertyEquipment comPropertyEquipment=nettyServerHandler.comPropertyEquipmentDao.selectOne(new QueryWrapper<ComPropertyEquipment>().eq("serial_no",serial));
+            } else {
+                comPropertyEquipment = nettyServerHandler.comPropertyEquipmentDao.selectOne(new QueryWrapper<ComPropertyEquipment>().eq("serial_no", serial));
+                duration = getDuration(comPropertyEquipment);
                 nettyServerHandler.stringRedisTemplate.boundValueOps(serial).set(JSONObject.toJSONString(comPropertyEquipment));
             }
             int finalDuration = duration;
-            nettyServerHandler.rabbitTemplate.convertAndSend("delayed.queue","delayed.key", message -> {
-                message.getMessageProperties().setDelay(finalDuration);
+            nettyServerHandler.rabbitTemplate.convertAndSend("huacheng.delayed.exchange", "huacheng.delayed.key", comPropertyEquipment, message -> {
+                message.getMessageProperties().setHeader("x-delay", finalDuration * 1000 * 3601);
                 return message;
             });
         }
     }
+
+    private int getDuration(ComPropertyEquipment comPropertyEquipment) {
+        int duration;
+        if (nettyServerHandler.stringRedisTemplate.hasKey(comPropertyEquipment.getCommunityId().toString())) {
+            duration = Integer.parseInt(nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).get());
+        } else {
+            ComPropertyAlarmSetting comPropertyAlarmSetting = nettyServerHandler.comPropertyAlarmSettingDao.getByCommunityId(comPropertyEquipment.getCommunityId());
+            duration = comPropertyAlarmSetting.getTriggerTime();
+            nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).set(comPropertyAlarmSetting.getTriggerTime().toString());
+        }
+        return duration;
+    }
 }

--
Gitblit v1.7.1