TRX vor 1 Jahr
Ursprung
Commit
9bcb1a3c3c

+ 19 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/type/ArtemisType.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.client.utils.type;
+
+import lombok.Getter;
+
+/**
+ * 消息类型
+ */
+public enum ArtemisType {
+    Send("发送"),
+    Receive("接收"),
+    ;
+
+    @Getter
+    private String remark;
+
+    ArtemisType(String remark) {
+        this.remark = remark;
+    }
+}

+ 55 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/mqtt/ArtemisMessage.java

@@ -0,0 +1,55 @@
+package com.zhongshu.card.server.core.domain.mqtt;
+
+import com.google.gson.JsonObject;
+import com.zhongshu.card.client.utils.type.ArtemisType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * artemis 接收到的发送的消息
+ *
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+@NonLeaked
+public class ArtemisMessage extends SuperMain {
+
+    @Schema(description = "消息类型:接收 发送")
+    private ArtemisType artemisType;
+
+    @Schema(description = "消息ID")
+    private String messageId;
+
+    @Schema(description = "消息的topIc")
+    private String topIc;
+
+    @Schema(description = "关联设备ID")
+    private String deviceId;
+
+    @Schema(description = "关联设备名称")
+    private String deviceName;
+
+    @Schema(description = "消息类型")
+    private JsonObject jsonObject;
+
+    @Schema(description = "时间")
+    private String timeStr;
+
+    @Schema(description = "是否已响应")
+    private Boolean isResponse = Boolean.FALSE;
+
+    @Schema(description = "响应时间")
+    private Long responseTime;
+
+    @Schema(description = "响应时间Str")
+    private String responseTimeStr;
+}

+ 70 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/iotCenter/ApiRequestService.java

@@ -0,0 +1,70 @@
+package com.zhongshu.card.server.core.iotCenter;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONUtil;
+import com.github.microservice.core.util.net.apache.HttpClientUtil;
+import com.github.microservice.core.util.net.apache.HttpModel;
+import com.github.microservice.core.util.net.apache.ResponseModel;
+import com.zhongshu.card.server.core.iotCenter.apiConf.APIResponseModel;
+import com.zhongshu.card.server.core.iotCenter.apiConf.ApiConfParam;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.server.core.iotCenter.conf.IotCenterAPIConfig;
+import com.zhongshu.card.server.core.iotCenter.conf.IotCenterConf;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Slf4j
+@Service
+public class ApiRequestService extends SuperService {
+
+    @Autowired
+    IotCenterConf iotCenterConf;
+
+    /**
+     * 发送请求
+     *
+     * @param apiName
+     * @param data
+     * @return
+     */
+    public APIResponseModel sendIotCenterAPI(String apiName, Map<String, Object> data) {
+        APIResponseModel responseModel = new APIResponseModel();
+        if (StringUtils.isEmpty(iotCenterConf.getUrl())) {
+            responseModel.setIsFailed("未配置物联网平台URL");
+            return responseModel;
+        }
+        try {
+            ApiConfParam apiConfParam = IotCenterAPIConfig.getApiConfParam(apiName);
+            if (ObjectUtils.isEmpty(apiConfParam)) {
+                responseModel.setIsFailed("未找到API配置");
+                return responseModel;
+            }
+            String json = JSONUtil.toJsonStr(data);
+            String url = iotCenterConf.getUrl() + apiConfParam.getApiName();
+            ResponseModel request = HttpClientUtil.request(HttpModel.builder()
+                    .url(url).method(apiConfParam.getMethodType()).body(data).build());
+            if (request.getCode() == 200) {
+                responseModel = BeanUtil.copyProperties(request.getBody(), APIResponseModel.class);
+            } else {
+                responseModel = BeanUtil.copyProperties(request.getBody(), APIResponseModel.class);
+            }
+            responseModel.setParam(apiConfParam);
+        } catch (Exception e) {
+            e.printStackTrace();
+            responseModel.setIsFailed(String.format("请求出错:%s", e.getMessage()));
+            return responseModel;
+        }
+        return responseModel;
+    }
+
+}

+ 40 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/iotCenter/apiConf/APIResponseModel.java

@@ -0,0 +1,40 @@
+package com.zhongshu.card.server.core.iotCenter.apiConf;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class APIResponseModel {
+    private Boolean failed;
+    private Boolean success;
+    private String msg;
+    private String state;
+    private String content;
+    private ApiConfParam param;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public boolean isFailed() {
+        return failed;
+    }
+
+    public void setIsFailed() {
+        this.success = Boolean.FALSE;
+        this.failed = Boolean.TRUE;
+        this.state = "fail";
+    }
+
+    public void setIsFailed(String msg) {
+        this.setIsFailed();
+        this.msg = msg;
+    }
+}

+ 26 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/iotCenter/apiConf/ApiConfParam.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.server.core.iotCenter.apiConf;
+
+import com.github.microservice.core.util.net.apache.MethodType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ApiConfParam {
+
+    @Schema(description = "API名称")
+    private String apiName;
+
+    @Schema(description = "方式")
+    private MethodType methodType;
+
+}

+ 35 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/iotCenter/conf/IotCenterAPIConfig.java

@@ -0,0 +1,35 @@
+package com.zhongshu.card.server.core.iotCenter.conf;
+
+import com.github.microservice.core.util.net.apache.MethodType;
+import com.zhongshu.card.server.core.iotCenter.apiConf.ApiConfParam;
+
+import java.util.HashMap;
+
+/**
+ * 物联网平台的 APIP诶这
+ *
+ * @author TRX
+ * @date 2024/6/25
+ */
+public class IotCenterAPIConfig {
+
+    // 测试发送消息
+    public static final String sendMessage = "/test/free/sendMessage";
+
+    public static final String ping = "/test/free/ping";
+
+    public static final HashMap<String, ApiConfParam> map = new HashMap<>();
+
+    static {
+        map.put(sendMessage, ApiConfParam.builder().apiName(sendMessage).methodType(MethodType.Json).build());
+        map.put(ping, ApiConfParam.builder().apiName(ping).methodType(MethodType.Get).build());
+
+
+
+    }
+
+    public static ApiConfParam getApiConfParam(String apiName) {
+        return map.get(apiName);
+    }
+
+}

+ 20 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/mqtt/MqttServiceImpl.java

@@ -6,6 +6,9 @@ import com.google.gson.JsonObject;
 import com.zhongshu.card.client.model.mqtt.SendMessageModel;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
+import com.zhongshu.card.server.core.iotCenter.ApiRequestService;
+import com.zhongshu.card.server.core.iotCenter.apiConf.APIResponseModel;
+import com.zhongshu.card.server.core.iotCenter.conf.IotCenterAPIConfig;
 import com.zhongshu.card.server.core.service.base.RedisService;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.mqtt.mqttConfig.client.MQClient;
@@ -20,6 +23,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.UUID;
 
 /**
@@ -39,6 +44,9 @@ public class MqttServiceImpl extends SuperService {
     @Autowired
     MQClient mqClient;
 
+    @Autowired
+    ApiRequestService apiRequestService;
+
     /**
      * 发送指令
      *
@@ -53,12 +61,23 @@ public class MqttServiceImpl extends SuperService {
             jsonObject.addProperty("data", param.getMessage());
             jsonObject.addProperty("time", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
             jsonObject.addProperty("ttl", 10 * 1000);
-            mqClient.sendObject(param.getTopic(), jsonObject.toString());
+//            mqClient.sendObject(param.getTopic(), jsonObject.toString());
             log.info("mqtt msg 发送成功");
         } catch (Exception e) {
             e.printStackTrace();
             msg = "发送失败: " + e.getMessage();
         }
+
+        Map<String, Object> data = new HashMap<>();
+        data.put("topic", "v1/23");
+        data.put("message", "测试");
+
+        APIResponseModel resultContent = apiRequestService.sendIotCenterAPI(
+                IotCenterAPIConfig.sendMessage, data);
+        if (resultContent.isSuccess()) {
+
+        }
+        log.info("是否成功: {} {}", resultContent.isSuccess(), resultContent.getContent());
         return ResultContent.buildSuccess(msg);
     }