|
|
@@ -0,0 +1,71 @@
|
|
|
+package com.middle.platform.data.biz.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.middle.platform.common.exception.BusinessException;
|
|
|
+import com.middle.platform.common.utils.Result;
|
|
|
+import com.middle.platform.data.biz.pojo.IotDeviceUrlVo;
|
|
|
+import com.middle.platform.data.biz.pojo.IotHttpUrlVo;
|
|
|
+import com.middle.platform.data.biz.pojo.constant.UrlProtocol;
|
|
|
+import com.middle.platform.manage.api.feign.DeviceApi;
|
|
|
+import com.middle.platform.manage.api.pojo.DeviceDetailVo;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.net.InetAddress;
|
|
|
+import java.net.UnknownHostException;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author xucaiqin
|
|
|
+ * @date 2023-12-15 08:46:49
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/device")
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class UrlController {
|
|
|
+ @Value("${spring.rabbitmq.host}")
|
|
|
+ private String host;
|
|
|
+ @Value("${spring.rabbitmq.username}")
|
|
|
+ private String username;
|
|
|
+ @Value("${spring.rabbitmq.password}")
|
|
|
+ private String password;
|
|
|
+ @Value("${spring.rabbitmq.port}")
|
|
|
+ private String port;
|
|
|
+
|
|
|
+ private final DeviceApi deviceApi;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 属性上报
|
|
|
+ *
|
|
|
+ * @param id 设备id
|
|
|
+ */
|
|
|
+ @GetMapping("/url")
|
|
|
+ public Result<Object> url(@RequestParam("id") Long id) throws UnknownHostException {
|
|
|
+ DeviceDetailVo deviceDetailVo = deviceApi.deviceDetail(id);
|
|
|
+ if (Objects.isNull(deviceDetailVo)) {
|
|
|
+ throw new BusinessException("设备不存在");
|
|
|
+ }
|
|
|
+ if (StrUtil.equals(String.valueOf(deviceDetailVo.getReportProtocol()), UrlProtocol.MQTT)) {
|
|
|
+ IotDeviceUrlVo iotDeviceUrlVo = new IotDeviceUrlVo();
|
|
|
+ iotDeviceUrlVo.setUsername(username);
|
|
|
+ iotDeviceUrlVo.setPassword(password);
|
|
|
+ iotDeviceUrlVo.setHost(host);
|
|
|
+ iotDeviceUrlVo.setPort(port);
|
|
|
+ iotDeviceUrlVo.setUrl("mqtt://" + iotDeviceUrlVo.getHost());
|
|
|
+ return Result.ok(iotDeviceUrlVo);
|
|
|
+ }
|
|
|
+ InetAddress inetAddress = InetAddress.getLocalHost();
|
|
|
+ IotHttpUrlVo iotHttpUrlVo = new IotHttpUrlVo();
|
|
|
+ iotHttpUrlVo.setHost(inetAddress.getHostAddress());
|
|
|
+ iotHttpUrlVo.setPort("9000");//网关端口,暂时默认9000写死
|
|
|
+ iotHttpUrlVo.setMethod("POST");
|
|
|
+ iotHttpUrlVo.setPath(String.format("/iot-data/data/report/%s/%s", deviceDetailVo.getProductCode(), deviceDetailVo.getSn()));
|
|
|
+ iotHttpUrlVo.setUrl("http://" + iotHttpUrlVo.getHost() + ":" + iotHttpUrlVo.getPort() + iotHttpUrlVo.getPath());
|
|
|
+ return Result.ok(iotHttpUrlVo);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|