mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
Merge pull request #2249 from xinnan-tech/hot-fix
update:优化未配置mqtt网关时的显示
This commit is contained in:
+23
-16
@@ -5,6 +5,10 @@ import java.util.List;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.http.HttpEntity;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -12,30 +16,26 @@ import org.springframework.web.bind.annotation.PutMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import xiaozhi.common.exception.ErrorCode;
|
import xiaozhi.common.exception.ErrorCode;
|
||||||
import xiaozhi.common.redis.RedisKeys;
|
import xiaozhi.common.redis.RedisKeys;
|
||||||
import xiaozhi.common.redis.RedisUtils;
|
import xiaozhi.common.redis.RedisUtils;
|
||||||
import xiaozhi.common.user.UserDetail;
|
import xiaozhi.common.user.UserDetail;
|
||||||
import xiaozhi.common.utils.Result;
|
import xiaozhi.common.utils.Result;
|
||||||
|
import xiaozhi.modules.device.dto.DeviceManualAddDTO;
|
||||||
import xiaozhi.modules.device.dto.DeviceRegisterDTO;
|
import xiaozhi.modules.device.dto.DeviceRegisterDTO;
|
||||||
import xiaozhi.modules.device.dto.DeviceUnBindDTO;
|
import xiaozhi.modules.device.dto.DeviceUnBindDTO;
|
||||||
import xiaozhi.modules.device.dto.DeviceUpdateDTO;
|
import xiaozhi.modules.device.dto.DeviceUpdateDTO;
|
||||||
import xiaozhi.modules.device.dto.DeviceManualAddDTO;
|
|
||||||
import xiaozhi.modules.device.entity.DeviceEntity;
|
import xiaozhi.modules.device.entity.DeviceEntity;
|
||||||
import xiaozhi.modules.device.service.DeviceService;
|
import xiaozhi.modules.device.service.DeviceService;
|
||||||
import xiaozhi.modules.security.user.SecurityUser;
|
import xiaozhi.modules.security.user.SecurityUser;
|
||||||
import xiaozhi.modules.sys.service.SysParamsService;
|
import xiaozhi.modules.sys.service.SysParamsService;
|
||||||
import org.springframework.web.client.RestTemplate;
|
|
||||||
import org.springframework.http.HttpEntity;
|
|
||||||
import org.springframework.http.HttpHeaders;
|
|
||||||
import org.springframework.http.HttpMethod;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
@Tag(name = "设备管理")
|
@Tag(name = "设备管理")
|
||||||
@RestController
|
@RestController
|
||||||
@@ -47,7 +47,8 @@ public class DeviceController {
|
|||||||
private final RestTemplate restTemplate;
|
private final RestTemplate restTemplate;
|
||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
|
|
||||||
public DeviceController(DeviceService deviceService, RedisUtils redisUtils, SysParamsService sysParamsService, RestTemplate restTemplate, ObjectMapper objectMapper) {
|
public DeviceController(DeviceService deviceService, RedisUtils redisUtils, SysParamsService sysParamsService,
|
||||||
|
RestTemplate restTemplate, ObjectMapper objectMapper) {
|
||||||
this.deviceService = deviceService;
|
this.deviceService = deviceService;
|
||||||
this.redisUtils = redisUtils;
|
this.redisUtils = redisUtils;
|
||||||
this.sysParamsService = sysParamsService;
|
this.sysParamsService = sysParamsService;
|
||||||
@@ -98,8 +99,8 @@ public class DeviceController {
|
|||||||
try {
|
try {
|
||||||
// 从系统参数中获取MQTT网关地址
|
// 从系统参数中获取MQTT网关地址
|
||||||
String mqttGatewayUrl = sysParamsService.getValue("server.mqtt_manager_api", true);
|
String mqttGatewayUrl = sysParamsService.getValue("server.mqtt_manager_api", true);
|
||||||
if (StringUtils.isBlank(mqttGatewayUrl)) {
|
if (StringUtils.isBlank(mqttGatewayUrl) || "null".equals(mqttGatewayUrl)) {
|
||||||
return new Result<String>().error("MQTT网关地址未配置");
|
return new Result<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取当前用户的设备列表
|
// 获取当前用户的设备列表
|
||||||
@@ -152,7 +153,8 @@ public class DeviceController {
|
|||||||
private String generateBearerToken() {
|
private String generateBearerToken() {
|
||||||
try {
|
try {
|
||||||
// 获取当前日期,格式为yyyy-MM-dd
|
// 获取当前日期,格式为yyyy-MM-dd
|
||||||
String dateStr = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
String dateStr = java.time.LocalDate.now()
|
||||||
|
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
|
||||||
// 获取MQTT签名密钥
|
// 获取MQTT签名密钥
|
||||||
String signatureKey = sysParamsService.getValue("server.mqtt_signature_key", false);
|
String signatureKey = sysParamsService.getValue("server.mqtt_signature_key", false);
|
||||||
@@ -214,13 +216,17 @@ public class DeviceController {
|
|||||||
try {
|
try {
|
||||||
// 从系统参数中获取MQTT网关地址
|
// 从系统参数中获取MQTT网关地址
|
||||||
String mqttGatewayUrl = sysParamsService.getValue("server.mqtt_manager_api", true);
|
String mqttGatewayUrl = sysParamsService.getValue("server.mqtt_manager_api", true);
|
||||||
if (StringUtils.isBlank(mqttGatewayUrl)) {
|
if (StringUtils.isBlank(mqttGatewayUrl) || "null".equals(mqttGatewayUrl)) {
|
||||||
return new Result<String>().error("MQTT网关地址未配置");
|
return new Result<String>().error("MQTT网关地址未配置");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建完整的URL
|
// 构建完整的URL
|
||||||
// 获取设备信息以构建mqttClientId
|
// 获取设备信息以构建mqttClientId
|
||||||
DeviceEntity deviceById = deviceService.selectById(deviceId);
|
DeviceEntity deviceById = deviceService.selectById(deviceId);
|
||||||
|
|
||||||
|
if (!deviceById.getUserId().equals(SecurityUser.getUser().getId())) {
|
||||||
|
return new Result<String>().error("设备不存在");
|
||||||
|
}
|
||||||
String macAddress = deviceById != null ? deviceById.getMacAddress() : "unknown";
|
String macAddress = deviceById != null ? deviceById.getMacAddress() : "unknown";
|
||||||
String groupId = deviceById != null ? deviceById.getBoard() : null;
|
String groupId = deviceById != null ? deviceById.getBoard() : null;
|
||||||
if (groupId == null) {
|
if (groupId == null) {
|
||||||
@@ -228,10 +234,10 @@ public class DeviceController {
|
|||||||
}
|
}
|
||||||
groupId = groupId.replace(":", "_");
|
groupId = groupId.replace(":", "_");
|
||||||
macAddress = macAddress.replace(":", "_");
|
macAddress = macAddress.replace(":", "_");
|
||||||
|
|
||||||
// 拼接为groupId@@@macAddress@@@deviceId格式
|
// 拼接为groupId@@@macAddress@@@deviceId格式
|
||||||
String mqttClientId = groupId + "@@@" + macAddress + "@@@" + macAddress;
|
String mqttClientId = groupId + "@@@" + macAddress + "@@@" + macAddress;
|
||||||
|
|
||||||
String url = "http://" + mqttGatewayUrl + "/api/commands/" + mqttClientId;
|
String url = "http://" + mqttGatewayUrl + "/api/commands/" + mqttClientId;
|
||||||
|
|
||||||
// 设置请求头
|
// 设置请求头
|
||||||
@@ -239,7 +245,8 @@ public class DeviceController {
|
|||||||
headers.set("Content-Type", "application/json");
|
headers.set("Content-Type", "application/json");
|
||||||
|
|
||||||
// 生成Bearer令牌
|
// 生成Bearer令牌
|
||||||
String dateStr = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
String dateStr = java.time.LocalDate.now()
|
||||||
|
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
String signatureKey = sysParamsService.getValue("server.mqtt_signature_key", false);
|
String signatureKey = sysParamsService.getValue("server.mqtt_signature_key", false);
|
||||||
if (StringUtils.isBlank(signatureKey)) {
|
if (StringUtils.isBlank(signatureKey)) {
|
||||||
return new Result<String>().error("MQTT签名密钥未配置");
|
return new Result<String>().error("MQTT签名密钥未配置");
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
delete from `sys_params` where param_code = 'server.mqtt_manager_api';
|
delete from `sys_params` where param_code = 'server.mqtt_manager_api';
|
||||||
INSERT INTO `sys_params` (id, param_code, param_value, value_type, param_type, remark)
|
INSERT INTO `sys_params` (id, param_code, param_value, value_type, param_type, remark)
|
||||||
VALUES (119, 'server.mqtt_manager_api', null, 'string', 1, 'MQTT网关管理API的地址');
|
VALUES (119, 'server.mqtt_manager_api', 'null', 'string', 1, 'MQTT网关管理API的地址');
|
||||||
@@ -346,12 +346,12 @@ databaseChangeLog:
|
|||||||
encoding: utf8
|
encoding: utf8
|
||||||
path: classpath:db/changelog/202509080922.sql
|
path: classpath:db/changelog/202509080922.sql
|
||||||
- changeSet:
|
- changeSet:
|
||||||
id: 202509161609
|
id: 202509161610
|
||||||
author: fyb
|
author: fyb
|
||||||
changes:
|
changes:
|
||||||
- sqlFile:
|
- sqlFile:
|
||||||
encoding: utf8
|
encoding: utf8
|
||||||
path: classpath:db/changelog/202509161609.sql
|
path: classpath:db/changelog/202509161610.sql
|
||||||
- changeSet:
|
- changeSet:
|
||||||
id: 202509161701
|
id: 202509161701
|
||||||
author: RanChen
|
author: RanChen
|
||||||
|
|||||||
Reference in New Issue
Block a user