TRX 1 tahun lalu
induk
melakukan
258b9a0703

+ 38 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DevicePermissIotService.java

@@ -3,12 +3,14 @@ package com.zhongshu.card.server.core.service.devices;
 import cn.hutool.json.JSONUtil;
 import com.github.microservice.models.device.DevicePerQuery;
 import com.github.microservice.models.device.UserPerQuery;
+import com.github.microservice.models.devicePermiss.DeviceAboutPermiss;
 import com.github.microservice.models.devicePermiss.DeviceUsersInfo;
 import com.github.microservice.models.devicePermiss.GateWayPermissModel;
 import com.github.microservice.models.devicePermiss.ProjectUserPermiss;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.school.CardInfoModel;
 import com.zhongshu.card.client.type.school.CardState;
+import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.domain.devices.DevicePermiss;
 import com.zhongshu.card.server.core.domain.org.Organization;
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +51,41 @@ public class DevicePermissIotService {
     @Autowired
     private DevicePermissService devicePermissService;
 
+    @Autowired
+    private DevicePermissDao devicePermissDao;
+
+    @Autowired
+    private DevicePermissEventService devicePermissEventService;
+
+    /**
+     * 组装设备权限变更的数据
+     *
+     * @param ids  DevicePermiss 设备用户绑定数据ID
+     * @param mark 0: 删除   1:新增、修改   2:全量
+     * @return
+     */
+    public ResultContent changeDeviceUser(List<String> ids, int mark) {
+        List<DevicePermiss> list = devicePermissDao.findByIdIn(ids);
+        if (ObjectUtils.isNotEmpty(list)) {
+            Map<String, List<DevicePermiss>> map = list.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
+            map.forEach((gateWayId, tempList) -> {
+                GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
+                gateWayPermissModel.setGateWayId(gateWayId);
+
+                List<DeviceAboutPermiss> devices = tempList.stream().map(it -> {
+                    DeviceAboutPermiss permiss = new DeviceAboutPermiss();
+                    permiss.setDeviceId(it.getDeviceId());
+                    permiss.addUser(it.getUserId());
+                    permiss.setMark(mark);
+                    return permiss;
+                }).collect(Collectors.toUnmodifiableList());
+                gateWayPermissModel.setDevices(devices);
+                devicePermissEventService.requestDeviceBindData(gateWayPermissModel, tempList.get(0).getProjectOid());
+            });
+        }
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 查询设备的权限数据
      *

+ 11 - 41
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DevicePermissService.java

@@ -26,7 +26,6 @@ import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.projectAbout.OrgUserFace;
 import com.zhongshu.card.server.core.domain.school.CardInfo;
-import com.zhongshu.card.server.core.event.DevicePermissChangeEvent;
 import com.zhongshu.card.server.core.event.OrgUserBindUpdateSyncEvent;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.projectAbout.CardInfoServiceImpl;
@@ -79,9 +78,6 @@ public class DevicePermissService extends SuperService {
     @Autowired
     private OrganizationUserDao organizationUserDao;
 
-    @Autowired
-    ApplicationContext applicationContext;
-
     @Autowired
     private OrgUserFaceService orgUserFaceService;
 
@@ -91,6 +87,9 @@ public class DevicePermissService extends SuperService {
     @Autowired
     private DevicePermissEventService devicePermissEventService;
 
+    @Autowired
+    private DevicePermissIotService devicePermissIotService;
+
     /**
      * 设备绑定用户
      *
@@ -119,8 +118,9 @@ public class DevicePermissService extends SuperService {
             // 机构用户数据
             List<OrganizationUser> orgUsers = organizationUserDao.findByIdIn(ids);
             if (ObjectUtils.isNotEmpty(orgUsers)) {
+
+                List<DevicePermiss> permisses = new ArrayList<DevicePermiss>();
                 for (DeviceInfo deviceInfo : deviceInfos) {
-                    List<DevicePermiss> permisses = new ArrayList<DevicePermiss>();
                     for (OrganizationUser organizationUser : orgUsers) {
                         String userId = organizationUser.getUserId();
                         // 判断是否是编辑
@@ -135,14 +135,11 @@ public class DevicePermissService extends SuperService {
                         buildOrgUserInfo(permiss, organizationUser);
                         permisses.add(permiss);
                     }
-                    devicePermissDao.saveAll(permisses);
                 }
+                devicePermissDao.saveAll(permisses);
+                // 下发设备权限增加数据
+                devicePermissIotService.changeDeviceUser(permisses.stream().map(it -> it.getId()).collect(Collectors.toList()), 1);
             }
-
-            // 设备权限发生变化
-            DevicePermissChangeEvent event = new DevicePermissChangeEvent(this,
-                    param.getDeviceIds(), projectOid);
-            applicationContext.publishEvent(event);
         }
         return ResultContent.buildSuccess();
     }
@@ -251,10 +248,10 @@ public class DevicePermissService extends SuperService {
         devicePermissDao.save(entity);
         if (dataState == DataState.Disable) {
             // 移除权限
-            changeDeviceUser(List.of(id), 0);
+            devicePermissIotService.changeDeviceUser(List.of(id), 0);
         } else {
             // 启用
-            changeDeviceUser(List.of(id), 1);
+            devicePermissIotService.changeDeviceUser(List.of(id), 1);
         }
         return ResultContent.buildSuccess();
     }
@@ -268,40 +265,13 @@ public class DevicePermissService extends SuperService {
     public ResultContent deleteByIds(IDsParam param) {
         if (ObjectUtils.isNotEmpty(param.getIds())) {
             // 1: 移除权限
-            changeDeviceUser(param.getIds(), 0);
+            devicePermissIotService.changeDeviceUser(param.getIds(), 0);
             // 2:删除数据
             devicePermissDao.deleteAllById(param.getIds());
         }
         return ResultContent.buildSuccess();
     }
 
-    /**
-     * 移除权限
-     *
-     * @param ids
-     * @return
-     */
-    public ResultContent changeDeviceUser(List<String> ids, int mark) {
-        List<DevicePermiss> list = devicePermissDao.findByIdIn(ids);
-        if (ObjectUtils.isNotEmpty(list)) {
-            Map<String, List<DevicePermiss>> map = list.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
-            map.forEach((gateWayId, tempList) -> {
-                GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
-                gateWayPermissModel.setGateWayId(gateWayId);
-
-                List<DeviceAboutPermiss> devices = tempList.stream().map(it -> {
-                    DeviceAboutPermiss permiss = new DeviceAboutPermiss();
-                    permiss.setDeviceId(it.getDeviceId());
-                    permiss.addUser(it.getUserId());
-                    permiss.setMark(mark);
-                    return permiss;
-                }).collect(Collectors.toUnmodifiableList());
-                gateWayPermissModel.setDevices(devices);
-                devicePermissEventService.requestDeviceBindData(gateWayPermissModel, tempList.get(0).getProjectOid());
-            });
-        }
-        return ResultContent.buildSuccess();
-    }
 
     /**
      * 得到设备关联的用户