Browse Source

更新!

TRX 1 năm trước cách đây
mục cha
commit
a55dfc7162

+ 4 - 1
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/controller/free/GateWayFreeController.java

@@ -53,7 +53,10 @@ public class GateWayFreeController {
             return resultContent;
         }
         log.info("-----------------------注册网关---------------------- {}", param);
-        return gateWayInfoService.registerGateWay(param);
+        gateWayInfoService.registerGateWay(param);
+
+        gateWayUserInfoService.initData();
+        return ResultContent.buildSuccess();
     }
 
     @Operation(summary = "网关绑定设备")

+ 2 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/dao/mqtt/GateWayMqttSecurityDao.java

@@ -18,4 +18,6 @@ public interface GateWayMqttSecurityDao extends org.springframework.data.mongodb
 
     void deleteByMqttInfoAndGateWayInfo(MqttInfo mqttInfo, GateWayInfo gateWayInfo);
 
+    void deleteByMqttInfoAndAddressMatch(MqttInfo mqttInfo, String addressMatch);
+
 }

+ 1 - 1
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/listener/MongodbAutoEvent.java

@@ -40,7 +40,7 @@ public class MongodbAutoEvent extends AbstractMongoEventListener<Object> {
         Object source = event.getSource();
         try {
             String className = source.getClass().getName();
-            log.info("onAfterDelete 删除了数据... {}", event.getType().getName());
+//            log.info("onAfterDelete 删除了数据... {}", event.getType().getName());
             Document document = event.getDocument();
             if (document != null && document.getObjectId("_id") != null) {
                 String id = document.getObjectId("_id").toString();

+ 11 - 15
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/mqtt/GateWayUserInfoService.java

@@ -413,13 +413,6 @@ public class GateWayUserInfoService {
                 ActiveMQServerControl addressControl = MBeanServerInvocationHandler.newProxyInstance(connection, addressObjectName, ActiveMQServerControl.class, false);
 
                 final String _roleName = MqttConfig.adminRoleName;
-                addressControl.addSecuritySettings("#", _roleName, _roleName, _roleName, _roleName,
-                        _roleName, _roleName, _roleName, _roleName,
-                        _roleName, _roleName);
-//
-//                addressControl.addSecuritySettings("/v1/gateway/#", _roleName, _roleName, _roleName, _roleName,
-//                        _roleName, _roleName, _roleName, _roleName, _roleName, _roleName);
-
                 for (GateWayInfo gateWayInfo : gateWayInfos) {
                     // 以前的权限
                     List<GateWayMqttSecurity> list = gateWayMqttSecurityDao.findByMqttInfoAndGateWayInfo(mqttInfo, gateWayInfo);
@@ -447,8 +440,13 @@ public class GateWayUserInfoService {
                         String userName = gateWayUserInfo.getUserName();
                         String roleName = gateWayUserInfo.getRoleName();
 
+                        List<String> roleNames = new ArrayList<>();
+                        roleNames.add(roleName);
+                        roleNames.add(_roleName);
+
+                        roleName = String.join(",", roleNames);
                         List<GateWayMqttSecurity> securities = new ArrayList<>();
-                        addressMatchs.stream().forEach(addressMatch -> {
+                        for (String addressMatch : addressMatchs) {
                             GateWayMqttSecurity gateWayMqttSecurity = new GateWayMqttSecurity();
                             gateWayMqttSecurity.setUserName(userName);
                             gateWayMqttSecurity.setRoleName(roleName);
@@ -458,12 +456,8 @@ public class GateWayUserInfoService {
                             gateWayMqttSecurity.setMqttName(mqttInfo.getName());
                             gateWayMqttSecurity.setAddressMatch(addressMatch);
                             try {
-                                if (!roleName.equals(MqttConfig.adminRoleName)) {
-                                    addressControl.addSecuritySettings(addressMatch, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName);
-                                }
-                                addressControl.addSecuritySettings(addressMatch, _roleName, _roleName, _roleName, _roleName,
-                                        _roleName, _roleName, _roleName, _roleName,
-                                        _roleName, _roleName);
+                                addressControl.addSecuritySettings(addressMatch, roleName, roleName, roleName,
+                                        roleName, roleName, roleName, roleName, roleName, roleName, roleName);
 
                                 gateWayMqttSecurity.setIsSync(Boolean.TRUE);
                                 gateWayMqttSecurity.setMsg("同步成功");
@@ -474,7 +468,7 @@ public class GateWayUserInfoService {
                             }
                             gateWayMqttSecurity.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
                             securities.add(gateWayMqttSecurity);
-                        });
+                        }
                         gateWayMqttSecurityDao.saveAll(securities);
                     }
                 }
@@ -526,6 +520,8 @@ public class GateWayUserInfoService {
 
                         List<GateWayMqttSecurity> securities = new ArrayList<>();
                         addressMatchs.stream().forEach(addressMatch -> {
+                            gateWayMqttSecurityDao.deleteByMqttInfoAndAddressMatch(mqttInfo, addressMatch);
+
                             GateWayMqttSecurity gateWayMqttSecurity = new GateWayMqttSecurity();
                             gateWayMqttSecurity.setUserName(userName);
                             gateWayMqttSecurity.setRoleName(roleName);

+ 1 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/util/JMXUtil.java

@@ -58,6 +58,7 @@ public class JMXUtil {
      */
     public static List<String> buildAddressMatch(GateWayInfo gateWayInfo, List<DeviceInfo> deviceInfoList) {
         List<String> list = new ArrayList<String>();
+        list.add("$sys.mqtt.sessions");
         if (ObjectUtils.isNotEmpty(gateWayInfo)) {
             list.addAll(buildGateWayAddressMatch(gateWayInfo));
         }