24282 %!s(int64=2) %!d(string=hai) anos
pai
achega
d3135cb3f8

+ 0 - 36
hx-iot/src/main/java/com/fjhx/iot/config/IoTDAConfig.java

@@ -1,36 +0,0 @@
-package com.fjhx.iot.config;
-
-public class IoTDAConfig {
-
-    // REGION_ID:如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-4"
-    private static final String REGION_ID = "cn-north-4";
-    // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
-    private static final String ENDPOINT = "a1625d5cc8.iotda.cn-north-4.myhuaweicloud.com";
-
-    private static final String ak = "VPOCS8WGONHWOBOZNVVJ";
-    private static final String sk = "4mvyTAn75I0hvyAm8rKxuXi6TSyGDG5yblW43ci1";
-    private static final String projectId = "0f130b202d00f4e52fc0c01deb21f36a";
-
-    /**
-     * IoTDA 操作
-     */
-    // @Bean
-    // public IoTDAClient ioTDAClient() {
-    //     // 创建认证
-    //     ICredential auth = new IoTDACredentials()
-    //             .withAk(ak)
-    //             .withSk(sk)
-    //             .withProjectId(projectId);
-    //
-    //     // 创建IoTDAClient实例并初始化
-    //     return IoTDAClient.newBuilder()
-    //             .withCredential(auth)
-    //             // 基础版:请选择IoTDARegion中的Region对象
-    //             .withRegion(IoTDARegion.CN_NORTH_4)
-    //             // 标准版/企业版:需自行创建Region对象
-    //             // .withRegion(new Region(REGION_ID, ENDPOINT))
-    //             .build();
-    // }
-
-
-}

+ 1 - 0
hx-iot/src/main/java/com/fjhx/iot/listener/DtaListener.java

@@ -64,6 +64,7 @@ public class DtaListener {
 
         DynamicDataSourceContextHolder.clear();
         TenantHolder.clear();
+
     }
 
     public static MessageConsumer getMessageConsumer(TdaConfig tdaConfig) {

+ 3 - 0
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaApplicationServiceImpl.java

@@ -13,6 +13,7 @@ import com.fjhx.iot.utils.IoTDAUtil;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
@@ -46,6 +47,7 @@ public class TdaApplicationServiceImpl extends ServiceImpl<TdaApplicationMapper,
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(TdaApplicationDto tdaApplicationDto) {
         // 华为ioDta添加资源空间
@@ -54,6 +56,7 @@ public class TdaApplicationServiceImpl extends ServiceImpl<TdaApplicationMapper,
         this.save(tdaApplicationDto);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(Long id) {
         // 华为ioDta删除资源空间

+ 4 - 0
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaConfigServiceImpl.java

@@ -14,6 +14,7 @@ import com.fjhx.iot.service.tda.TdaConfigService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.jms.JMSException;
 import javax.jms.MessageConsumer;
@@ -46,6 +47,7 @@ public class TdaConfigServiceImpl extends ServiceImpl<TdaConfigMapper, TdaConfig
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(TdaConfigDto tdaConfigDto) {
         tdaConfigDto.setId(IdWorker.getId());
@@ -54,6 +56,7 @@ public class TdaConfigServiceImpl extends ServiceImpl<TdaConfigMapper, TdaConfig
         DtaListener.listenerMap.put(tdaConfigDto.getId(), messageConsumer);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(TdaConfigDto tdaConfigDto) {
         MessageConsumer messageConsumer = DtaListener.getMessageConsumer(tdaConfigDto);
@@ -72,6 +75,7 @@ public class TdaConfigServiceImpl extends ServiceImpl<TdaConfigMapper, TdaConfig
         DtaListener.listenerMap.put(tdaConfigDto.getId(), messageConsumer);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(Long id) {
         this.removeById(id);

+ 8 - 4
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaDeviceServiceImpl.java

@@ -19,6 +19,7 @@ import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
@@ -57,6 +58,7 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(TdaDeviceDto tdaDeviceDto) {
         String nodeId = tdaDeviceDto.getNodeId();
@@ -70,16 +72,18 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
         TdaApplication tdaApplication = tdaApplicationService.getById(tdaProduct.getTdaApplicationId());
 
         // 华为ioDta添加设备
-        IoTDAUtil.DeviceKey deviceKey = IoTDAUtil.addDevice(
-                tdaApplication.getTdaConfigId(), nodeId, deviceName, tdaProduct.getAppId(), productId);
+        IoTDAUtil.DeviceKey deviceKey = IoTDAUtil.addDevice(tdaApplication.getTdaConfigId(),
+                nodeId, deviceName, tdaProduct.getAppId(), productId, tdaDeviceDto.getSecret());
 
         tdaDeviceDto.setProductId(productId);
-        tdaDeviceDto.setDeviceId(deviceKey.getDeviceId());
-        tdaDeviceDto.setSecret(deviceKey.getSecret());
+        tdaDeviceDto.setDeviceId(tdaDeviceDto.getNodeId());
+
+        // tdaDeviceDto.setSecret(deviceKey.getSecret());
 
         this.save(tdaDeviceDto);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(Long id) {
 

+ 3 - 0
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaProductServiceImpl.java

@@ -16,6 +16,7 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
@@ -49,6 +50,7 @@ public class TdaProductServiceImpl extends ServiceImpl<TdaProductMapper, TdaProd
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(TdaProductDto tdaProductDto) {
 
@@ -64,6 +66,7 @@ public class TdaProductServiceImpl extends ServiceImpl<TdaProductMapper, TdaProd
         this.save(tdaProductDto);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(Long id) {
 

+ 17 - 5
hx-iot/src/main/java/com/fjhx/iot/utils/IoTDAUtil.java

@@ -4,10 +4,10 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.fjhx.iot.entity.tda.po.TdaConfig;
 import com.fjhx.iot.service.tda.TdaConfigService;
 import com.huaweicloud.sdk.core.auth.ICredential;
+import com.huaweicloud.sdk.core.region.Region;
 import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
 import com.huaweicloud.sdk.iotda.v5.auth.IoTDACredentials;
 import com.huaweicloud.sdk.iotda.v5.model.*;
-import com.huaweicloud.sdk.iotda.v5.region.IoTDARegion;
 import com.ruoyi.common.exception.ServiceException;
 import lombok.Data;
 
@@ -15,7 +15,12 @@ import java.util.Collections;
 
 public class IoTDAUtil {
 
-    private static TdaConfigService tdaConfigService = SpringUtil.getBean(TdaConfigService.class);
+    // REGION_ID:如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-4"
+    private static final String REGION_ID = "ap-southeast-1";
+    // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
+    private static final String ENDPOINT = "a0ba517e07.st1.iotda-app.ap-southeast-1.myhuaweicloud.com";
+
+    private static final TdaConfigService tdaConfigService = SpringUtil.getBean(TdaConfigService.class);
 
     /**
      * 创建资源空间
@@ -136,13 +141,20 @@ public class IoTDAUtil {
      * @param productId  产品id
      * @return 设备secret
      */
-    public static DeviceKey addDevice(Long configId, String nodeId, String deviceName, String appId, String productId) {
+    public static DeviceKey addDevice(Long configId, String nodeId, String deviceName,
+                                      String appId, String productId, String secret) {
+
+        AuthInfo authInfo = new AuthInfo();
+        authInfo.setSecret(secret);
+
         AddDeviceRequest addDeviceRequest = new AddDeviceRequest();
         AddDevice addDevice = new AddDevice();
         addDevice.setNodeId(nodeId);
         addDevice.setDeviceName(deviceName);
         addDevice.setAppId(appId);
         addDevice.setProductId(productId);
+        addDevice.setAuthInfo(authInfo);
+        addDevice.setDeviceId(nodeId);
 
         addDeviceRequest.setBody(addDevice);
         AddDeviceResponse addDeviceResponse = getIoTDAClient(configId).addDevice(addDeviceRequest);
@@ -195,9 +207,9 @@ public class IoTDAUtil {
         return IoTDAClient.newBuilder()
                 .withCredential(auth)
                 // 基础版:请选择IoTDARegion中的Region对象
-                .withRegion(IoTDARegion.CN_NORTH_4)
+                // .withRegion(IoTDARegion.CN_NORTH_4)
                 // 标准版/企业版:需自行创建Region对象
-                // .withRegion(new Region(REGION_ID, ENDPOINT))
+                .withRegion(new Region(REGION_ID, ENDPOINT))
                 .build();
     }