diff --git a/admin/src/main/java/com/multictrl/common/config/DJIConfig.java b/admin/src/main/java/com/multictrl/common/config/DJIConfig.java index 2f8cf2d..33bf75a 100644 --- a/admin/src/main/java/com/multictrl/common/config/DJIConfig.java +++ b/admin/src/main/java/com/multictrl/common/config/DJIConfig.java @@ -19,7 +19,15 @@ public class DJIConfig { private String appLicense; private String ntpServerHost; private Integer ntpServerPort; - private String organizationName = "dji"; - private String organizationId = "djiId"; - private String deviceBindCode = "djiCode"; + private DockBind dockBind = new DockBind(); + + @Data + public static class DockBind { + private String url; + private String username; + private String password; + private String organizationName; + private String organizationId; + private String deviceBindCode; + } } diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/MiscController.java b/admin/src/main/java/com/multictrl/modules/business/controller/MiscController.java index b3e6a25..7dbc2cc 100644 --- a/admin/src/main/java/com/multictrl/modules/business/controller/MiscController.java +++ b/admin/src/main/java/com/multictrl/modules/business/controller/MiscController.java @@ -42,4 +42,12 @@ public class MiscController { return new Result<>().ok(miscService.pageHmsLog(params)); } + + @GetMapping("/getDockBindInfo") + @Operation(summary = "机库注册信息") + @RequiresPermissions("bus:misc:getDockBindInfo") + public Result getDockBindInfo() { + + return new Result<>().ok(miscService.getDockBindInfo()); + } } diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/DockBindDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/DockBindDTO.java new file mode 100644 index 0000000..e3755ec --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/dto/DockBindDTO.java @@ -0,0 +1,25 @@ +package com.multictrl.modules.business.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 机库绑定参数 + * + * @author Sdy + * @since 1.0.0 2026/6/22 + */ +@Data +@Schema(name = "机库绑定参数") +public class DockBindDTO { + @Schema(description = "MQTT网关地址") + private String url; + @Schema(description = "MQTT账号") + private String username; + @Schema(description = "MQTT密码") + private String password; + @Schema(description = "组织ID") + private String organizationId; + @Schema(description = "设备绑定码") + private String deviceBindCode; +} diff --git a/admin/src/main/java/com/multictrl/modules/business/handler/RequestsHandler.java b/admin/src/main/java/com/multictrl/modules/business/handler/RequestsHandler.java index ed5bf84..bd1934c 100644 --- a/admin/src/main/java/com/multictrl/modules/business/handler/RequestsHandler.java +++ b/admin/src/main/java/com/multictrl/modules/business/handler/RequestsHandler.java @@ -85,8 +85,9 @@ public class RequestsHandler implements MessageHandler { } deviceJson.set("device_callsign", System.currentTimeMillis()); deviceJson.set("is_device_bind_organization", true); - deviceJson.set("organization_id", djiConfig.getOrganizationId()); - deviceJson.set("organization_name", djiConfig.getOrganizationName()); + DJIConfig.DockBind dockBind = djiConfig.getDockBind(); + deviceJson.set("organization_id", dockBind.getOrganizationId()); + deviceJson.set("organization_name", dockBind.getOrganizationName()); bindStatus.add(deviceJson); } output.set("bind_status", bindStatus); @@ -102,7 +103,8 @@ public class RequestsHandler implements MessageHandler { } else if (BusinessConstant.AIRPORT_ORGANIZATION_GET.equals(method)) {//第三步 查询设备绑定对应的组织信息 String deviceBindingCode = data.getStr("device_binding_code"); String organizationId = data.getStr("organization_id"); - if (!djiConfig.getDeviceBindCode().equals(deviceBindingCode) || !djiConfig.getOrganizationId() + DJIConfig.DockBind dockBind = djiConfig.getDockBind(); + if (!dockBind.getDeviceBindCode().equals(deviceBindingCode) || !dockBind.getOrganizationId() .equals(organizationId)) { data.set("result", 2); mqttPushService.pushMessageByClient1(topic + BusinessConstant._REPLY, message.toString()); @@ -110,7 +112,7 @@ public class RequestsHandler implements MessageHandler { return; } JSONObject output = new JSONObject(); - output.set("organization_name", djiConfig.getOrganizationName()); + output.set("organization_name", dockBind.getOrganizationName()); data.set("result", 0); data.set("output", output); mqttPushService.pushMessageByClient1(topic + BusinessConstant._REPLY, message.toString()); diff --git a/admin/src/main/java/com/multictrl/modules/business/service/MiscService.java b/admin/src/main/java/com/multictrl/modules/business/service/MiscService.java index 6701e64..e87881b 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/MiscService.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/MiscService.java @@ -1,6 +1,7 @@ package com.multictrl.modules.business.service; import com.multictrl.common.page.PageData; +import com.multictrl.modules.business.dto.DockBindDTO; import com.multictrl.modules.business.dto.HmsDTO; import java.util.Map; @@ -15,4 +16,7 @@ public interface MiscService { //获取HMS健康日志 PageData pageHmsLog(Map params); + + //获取机库注册信息 + DockBindDTO getDockBindInfo(); } diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/MiscServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/MiscServiceImpl.java index a4de019..b6e71c6 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/MiscServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/MiscServiceImpl.java @@ -2,11 +2,13 @@ package com.multictrl.modules.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.multictrl.common.config.DJIConfig; import com.multictrl.common.constant.Constant; import com.multictrl.common.page.PageData; import com.multictrl.common.utils.ConvertUtils; import com.multictrl.common.utils.HmsUtils; import com.multictrl.modules.business.dao.HmsDao; +import com.multictrl.modules.business.dto.DockBindDTO; import com.multictrl.modules.business.dto.HmsDTO; import com.multictrl.modules.business.entity.HmsEntity; import com.multictrl.modules.business.service.MiscService; @@ -27,6 +29,7 @@ import java.util.Map; @RequiredArgsConstructor public class MiscServiceImpl implements MiscService { private final HmsDao hmsDao; + private final DJIConfig djiConfig; @Override public PageData pageHmsLog(Map params) { @@ -44,4 +47,11 @@ public class MiscServiceImpl implements MiscService { return new PageData<>(list, page.getTotal()); } + + @Override + public DockBindDTO getDockBindInfo() { + DJIConfig.DockBind dockBind = djiConfig.getDockBind(); + + return ConvertUtils.sourceToTarget(dockBind, DockBindDTO.class); + } } diff --git a/admin/src/main/java/com/multictrl/modules/security/controller/LoginController.java b/admin/src/main/java/com/multictrl/modules/security/controller/LoginController.java index 4924421..d379952 100644 --- a/admin/src/main/java/com/multictrl/modules/security/controller/LoginController.java +++ b/admin/src/main/java/com/multictrl/modules/security/controller/LoginController.java @@ -1,5 +1,6 @@ package com.multictrl.modules.security.controller; +import com.multictrl.common.config.DJIConfig; import com.multictrl.common.exception.ErrorCode; import com.multictrl.common.exception.RenException; import com.multictrl.common.utils.IpUtils; @@ -56,6 +57,7 @@ public class LoginController { private final CaptchaService captchaService; private final SysLogLoginService sysLogLoginService; private final DockService dockService; + private final DJIConfig djiConfig; @GetMapping("captcha") @@ -158,11 +160,27 @@ public class LoginController { return new MqttAuthVO().setResult("deny"); } - //给机场配置专属用户名密码 + //后端专属用户名密码 if (login.getUsername().equals("dock") && login.getPassword().equals("Dock@2023")) { return new MqttAuthVO().setResult("allow").setIs_superuser(true).setAcl(new ArrayList<>()); } + //给机场配置专属用户名密码 + DJIConfig.DockBind dockBind = djiConfig.getDockBind(); + if (login.getUsername().equals(dockBind.getUsername()) && login.getPassword().equals(dockBind.getPassword())) { + List aclList = new ArrayList<>(); + aclList.add(new MqttAuthVO.Acl().setAction("publish").setPermission("deny").setTopic("thing/product/+/services")); + aclList.add(new MqttAuthVO.Acl().setAction("publish").setPermission("deny").setTopic("thing/product/+/drc/down")); + aclList.add(new MqttAuthVO.Acl().setAction("publish").setPermission("allow").setTopic("#")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("deny").setTopic("thing/product/+/osd")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("deny").setTopic("thing/product/+/events")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("deny").setTopic("thing/product/+/status")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("deny").setTopic("thing/product/+/state")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("deny").setTopic("thing/product/+/requests")); + aclList.add(new MqttAuthVO.Acl().setAction("subscribe").setPermission("allow").setTopic("#")); + return new MqttAuthVO().setResult("allow").setIs_superuser(false).setAcl(aclList); + } + //用户、账号、密码校验 SysUserDTO user = sysUserService.getByUsername(login.getUsername()); if (user == null || user.getStatus() == UserStatusEnum.DISABLE.value() || diff --git a/admin/src/main/resources/application-docker.yml b/admin/src/main/resources/application-docker.yml index f65a586..552f362 100644 --- a/admin/src/main/resources/application-docker.yml +++ b/admin/src/main/resources/application-docker.yml @@ -61,6 +61,13 @@ dji: appLicense: fr/l8puzVxAIHCGa5Gkq7Swu1BQ0C4BjLJhGiWE8eaujp7KrDRcg1/AZ+sMuuOmR/MZiHktUK5f+gg+JWopwAe8cfTp6A4aYqIXbCh6DGMgCYYu3BBodrGxG2U6MSJ8q2lhh144iMT/Bv/wEZXX/IMt22wtT28TSwNCQ7CI+0vw= ntpServerHost: ${host.ip} ntpServerPort: 61627 + dockBind: + url: tcp://${host.ip}:61627 + username: dockbind + password: dock@123.1 + organizationName: dji + organizationId: djidock + deviceBindCode: djicode srs: ip: ${host.ip} diff --git a/prj-deploy/file/api/conf/application-docker.yml b/prj-deploy/file/api/conf/application-docker.yml index 6a69fba..0166ffb 100644 --- a/prj-deploy/file/api/conf/application-docker.yml +++ b/prj-deploy/file/api/conf/application-docker.yml @@ -61,6 +61,13 @@ dji: appLicense: fr/l8puzVxAIHCGa5Gkq7Swu1BQ0C4BjLJhGiWE8eaujp7KrDRcg1/AZ+sMuuOmR/MZiHktUK5f+gg+JWopwAe8cfTp6A4aYqIXbCh6DGMgCYYu3BBodrGxG2U6MSJ8q2lhh144iMT/Bv/wEZXX/IMt22wtT28TSwNCQ7CI+0vw= ntpServerHost: ${host.ip} ntpServerPort: 61627 + dockBind: + url: tcp://${host.ip}:61627 + username: dockbind + password: dock@123.1 + organizationName: dji + organizationId: djidock + deviceBindCode: djicode srs: ip: ${host.ip}