Jelajahi Sumber

提交指令下发和修改统一返回

邵洋 1 tahun lalu
induk
melakukan
198b098728

+ 34 - 0
pole-service/src/main/java/com/zksy/pole/controller/InstructionIssuanceController.java

@@ -0,0 +1,34 @@
+package com.zksy.pole.controller;
+
+import com.zksy.common.domain.Result;
+import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+import com.zksy.pole.service.InstructionIssuanceServer;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 指令下发
+ * @date 2024/8/28 17:21:56
+ */
+@RestController
+@RequestMapping("/instruct/issued")
+@Api(tags = "指令下发", description = "指令下发 desc")
+public class InstructionIssuanceController {
+    @Autowired
+    private InstructionIssuanceServer server;
+
+    @ApiOperation(value = "灯具即时控制")
+    @GetMapping(value = "/reportEnvironmentalData")
+    public Result reportEnvironmentalData(ReportEnvironmentalDataDto dto){
+        Result result = Result.ok(server.instructionIssuance(dto));
+        return result;
+    }
+
+}

+ 25 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/ReportEnvironmentalDataDto.java

@@ -0,0 +1,25 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 灯具及时控制参数
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "灯具及时控制参数dto")
+public class ReportEnvironmentalDataDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+    @ApiModelProperty(value = "亮度")
+    private String brightness;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+}

+ 15 - 0
pole-service/src/main/java/com/zksy/pole/service/InstructionIssuanceServer.java

@@ -0,0 +1,15 @@
+package com.zksy.pole.service;
+
+import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 指令下发Server
+ * @date 2024/8/28 17:34:12
+ */
+public interface InstructionIssuanceServer {
+
+    public String instructionIssuance(ReportEnvironmentalDataDto dto);
+}

+ 62 - 0
pole-service/src/main/java/com/zksy/pole/service/impl/InstructionIssuanceServerImpl.java

@@ -0,0 +1,62 @@
+package com.zksy.pole.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.zksy.pole.MQTTServer.request.MqttRequest;
+import com.zksy.pole.MQTTServer.server.MQTTServer;
+import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+import com.zksy.pole.service.InstructionIssuanceServer;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelId;
+import io.netty.handler.codec.mqtt.*;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 指令下发实现层
+ * @date 2024/8/28 17:41:04
+ */
+@Service
+public class InstructionIssuanceServerImpl implements InstructionIssuanceServer {
+    private static final Map<String,Object> msgMap= new HashMap<>();
+
+    @Override
+    public String instructionIssuance(ReportEnvironmentalDataDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("light_nums",dto.getLightNums());
+        jsonObject.put("brightness",dto.getBrightness());
+        jsonObject.put("package_id","1050");
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    public void writeAndFlush(MqttQoS qos,String topic,JSONObject jsonObject){
+        MqttRequest request = new MqttRequest((jsonObject.toString().getBytes()));
+        MqttPublishMessage pubMessage = (MqttPublishMessage) MqttMessageFactory.newMessage(
+                new MqttFixedHeader(MqttMessageType.PUBLISH,request.isDup(),qos,request.isRetained(),0),
+                new MqttPublishVariableHeader(topic, 0),
+                Unpooled.buffer().writeBytes(request.getPayload()));
+        msgMap.put(pubMessage.variableHeader().packetId()+"",pubMessage.variableHeader().packetId()+"");
+        if(MQTTServer.subscribeMap.containsKey(topic)){
+            List<ChannelId> channelList= MQTTServer.subscribeMap.get(topic);
+            for (int i = 0; i < channelList.size(); i++) {
+                //订阅次此topic的Mqtt客户端搜到此消息,
+                Channel channel= MQTTServer.MQTTdeviceChannelGroup.find(channelList.get(i));
+                if(channel!=null) {
+                    pubMessage.retain();
+                    channel.writeAndFlush(pubMessage);
+                }
+            }
+            pubMessage.release();
+        }
+    }
+}

+ 8 - 14
visualization-service/src/main/java/com/zksy/visualization/controller/VisualizationController.java

@@ -1,15 +1,9 @@
 package com.zksy.visualization.controller;
 
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.zksy.common.domain.R;
+import com.zksy.common.domain.Result;
 import com.zksy.service.MinioFileStorageService;
 import com.zksy.visualization.config.IccConfigProperty;
-import com.zksy.visualization.domain.response.PublicKeyResponse;
-import com.zksy.visualization.utils.RSAutil;
-import com.zksy.visualization.utils.UnsafeOkHttpClient;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,7 +28,7 @@ public class VisualizationController {
     @Autowired
     private MinioFileStorageService minioFileStorageService;
     @GetMapping("/test")
-    public R test() {
+    public Result test() {
         String authorization = redisTemplate
                 .opsForValue()
                 .get("Authorization:" + iccConfigProperty.getUsername());
@@ -45,25 +39,25 @@ public class VisualizationController {
         try {
             Response response = httpClient.newCall(request).execute();
             if(!response.isSuccessful()){
-                return R.error("请求失败");
+                return Result.error("请求失败");
             }
             ResponseBody responseBody = response.body();
             if (responseBody != null) {
-                return R.ok(responseBody.string());
+                return Result.ok(responseBody.string());
             }
         } catch (Exception e) {
             log.error("error:{}", e);
         }
-        return R.error("请求失败");
+        return Result.error("请求失败");
     }
     @PostMapping
-    public R upload(MultipartFile file){
+    public Result upload(MultipartFile file){
         try {
             String s = minioFileStorageService.uploadFile(file, "test");
             System.out.println(s);
         } catch (Exception e) {
-            return R.error("失败");
+            return Result.error("失败");
         }
-        return R.ok();
+        return Result.ok();
     }
 }

+ 0 - 4
visualization-service/src/main/java/com/zksy/visualization/schedule/ScheduledTasks.java

@@ -3,7 +3,6 @@ package com.zksy.visualization.schedule;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zksy.common.domain.R;
 import com.zksy.visualization.config.IccConfigProperty;
 import com.zksy.visualization.domain.response.AuthResponse;
 import com.zksy.visualization.domain.response.PublicKeyResponse;
@@ -11,13 +10,10 @@ import com.zksy.visualization.utils.RSAutil;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ExitCodeGenerator;
-import org.springframework.boot.SpringApplication;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;

+ 3 - 3
zksy-common/src/main/java/com/zksy/common/advice/CommonExceptionAdvice.java

@@ -1,6 +1,6 @@
 package com.zksy.common.advice;
 
-import com.zksy.common.domain.R;
+import com.zksy.common.domain.Result;
 import com.zksy.common.exception.BadRequestException;
 import com.zksy.common.exception.CommonException;
 import com.zksy.common.exception.DbException;
@@ -62,7 +62,7 @@ public class CommonExceptionAdvice {
         return processResponse(new CommonException("服务器内部异常", 500));
     }
 
-    private ResponseEntity<R<Void>> processResponse(CommonException e){
-        return ResponseEntity.status(e.getCode()).body(R.error(e));
+    private ResponseEntity<Result<Void>> processResponse(CommonException e){
+        return ResponseEntity.status(e.getCode()).body(Result.error(e));
     }
 }

+ 0 - 45
zksy-common/src/main/java/com/zksy/common/domain/R.java

@@ -1,45 +0,0 @@
-package com.zksy.common.domain;
-
-import com.zksy.common.exception.CommonException;
-import lombok.Data;
-
-
-@Data
-public class R<T> {
-    private int code;
-    private String msg;
-    private T data;
-
-    public static R<Void> ok() {
-        return ok(null);
-    }
-
-    public static <T> R<T> ok(T data) {
-        return new R<>(200, "OK", data);
-    }
-
-    public static <T> R<T> error(String msg) {
-        return new R<>(500, msg, null);
-    }
-
-    public static <T> R<T> error(int code, String msg) {
-        return new R<>(code, msg, null);
-    }
-
-    public static <T> R<T> error(CommonException e) {
-        return new R<>(e.getCode(), e.getMessage(), null);
-    }
-
-    public R() {
-    }
-
-    public R(int code, String msg, T data) {
-        this.code = code;
-        this.msg = msg;
-        this.data = data;
-    }
-
-    public boolean success(){
-        return code == 200;
-    }
-}

+ 48 - 0
zksy-common/src/main/java/com/zksy/common/domain/Result.java

@@ -0,0 +1,48 @@
+package com.zksy.common.domain;
+
+import com.zksy.common.exception.CommonException;
+import lombok.Data;
+
+
+/**
+ * @author Administrator
+ */
+@Data
+public class Result<T> {
+    private int code;
+    private String msg;
+    private T data;
+
+    public static Result<Void> ok() {
+        return ok(null);
+    }
+
+    public static <T> Result<T> ok(T data) {
+        return new Result<>(200, "OK", data);
+    }
+
+    public static <T> Result<T> error(String msg) {
+        return new Result<>(500, msg, null);
+    }
+
+    public static <T> Result<T> error(int code, String msg) {
+        return new Result<>(code, msg, null);
+    }
+
+    public static <T> Result<T> error(CommonException e) {
+        return new Result<>(e.getCode(), e.getMessage(), null);
+    }
+
+    public Result() {
+    }
+
+    public Result(int code, String msg, T data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public boolean success(){
+        return code == 200;
+    }
+}