瀏覽代碼

更新!

TRX 1 年之前
父節點
當前提交
c9c22c0bcb

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/permiss/PermissSendState.java

@@ -8,6 +8,7 @@ import lombok.Getter;
 public enum PermissSendState {
     Send("已下发"),
     SendSuccess("下发成功"),
+    SendFailed("下发失败"),
     Success("成功"),
     Failed("失败"),
     ;

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DevicePermissSendLog.java

@@ -60,6 +60,8 @@ public class DevicePermissSendLog extends SuperMain {
     @Schema(description = "下发状态")
     private PermissSendState sendState = PermissSendState.Send;
 
+    @Schema(description = "下发请求的结果")
+    private String sendMsg = "";
     //----------------------------------响应数据 start ---------------------------
 
     @Schema(description = "是否响应")

+ 50 - 14
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DevicePermissEventService.java

@@ -69,6 +69,9 @@ public class DevicePermissEventService {
     @Autowired
     private DevicePermissSendLogDao devicePermissSendLogDao;
 
+    @Autowired
+    private DevicePermissSendLogService devicePermissSendLogService;
+
     @Autowired
     private void init(ApplicationContext applicationContext) {
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
@@ -174,30 +177,17 @@ public class DevicePermissEventService {
                     // 网关 对应的设备
                     HashMap<String, List<String>> map = deviceGroupByGateWayId(deviceIds);
                     if (!map.isEmpty()) {
-                        List<DevicePermissSendLog> list = new ArrayList<>();
                         // 遍历发送
                         map.keySet().stream().forEach(gateWayId -> {
                             DeviceUsersInfo deviceUsersInfo = new DeviceUsersInfo();
+                            deviceUsersInfo.setGroupId(groupId);
                             deviceUsersInfo.setGateWayId(gateWayId);
                             // 用户数据 (去重)
                             List<ProjectUserPermiss> userPermiss = devicePermissIotService.getUserPermiss(projectOid, userIds[0]);
-                            for (ProjectUserPermiss projectUserPermiss : userPermiss) {
-                                projectUserPermiss.setDataId(CommonUtil.UUID());
-                                DevicePermissSendLog sendLog = new DevicePermissSendLog();
-                                sendLog.setGateWayId(gateWayId);
-                                sendLog.setUserId(userId);
-                                sendLog.setGroupId(groupId);
-                                sendLog.setData(projectUserPermiss);
-                                sendLog.setSendTime(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
-                                sendLog.setEvent(IotIdentifierConfig.queryDeviceUsersInfo);
-                                sendLog.setTtl(new Date(System.currentTimeMillis() + TtlConfig.permissLogTTl));
-                                list.add(sendLog);
-                            }
                             deviceUsersInfo.setUsers(userPermiss);
                             // 下发用户数据
                             requestDevicesUsersData(deviceUsersInfo, projectOid);
                         });
-                        devicePermissSendLogDao.saveAll(list);
                     }
                 }
             });
@@ -260,6 +250,28 @@ public class DevicePermissEventService {
         IotSendParam param = new IotSendParam();
         param.setGateWayId(gateWayId);
         param.setIdentifier(IotIdentifierConfig.queryDeviceBindUsers);
+
+        String groupId = gateWayPermissModel.getGroupId();
+        if (ObjectUtils.isNotEmpty(gateWayPermissModel.getDevices())
+                && StringUtils.isNotEmpty(groupId)) {
+            List<DevicePermissSendLog> list = new ArrayList<>();
+            for (DeviceAboutPermiss deviceAboutPermiss : gateWayPermissModel.getDevices()) {
+                deviceAboutPermiss.setDataId(CommonUtil.UUID());
+
+                DevicePermissSendLog sendLog = new DevicePermissSendLog();
+                sendLog.setDataId(deviceAboutPermiss.getDataId());
+                sendLog.setGateWayId(gateWayId);
+                sendLog.setDeviceId(deviceAboutPermiss.getDeviceId());
+                sendLog.setGroupId(groupId);
+                sendLog.setData(gateWayPermissModel);
+                sendLog.setSendTime(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+                sendLog.setEvent(IotIdentifierConfig.queryDeviceBindUsers);
+                sendLog.setTtl(new Date(System.currentTimeMillis() + TtlConfig.permissLogTTl));
+                list.add(sendLog);
+            }
+            devicePermissSendLogDao.saveAll(list);
+        }
+
         // 组装消息内容
         JSONObject jsonObject = gateWayPermissModel.toJson();
         param.setData(jsonObject);
@@ -269,6 +281,7 @@ public class DevicePermissEventService {
         } else {
             log.error("设备权限下发失败 网关ID:{} {}", gateWayId, resultContent.getMsg());
         }
+        devicePermissSendLogService.markPermissSend(groupId, resultContent.isSuccess(), resultContent.getMsg());
     }
 
     /**
@@ -297,6 +310,28 @@ public class DevicePermissEventService {
         IotSendParam param = new IotSendParam();
         param.setGateWayId(gateWayId);
         param.setIdentifier(IotIdentifierConfig.queryDeviceUsersInfo);
+
+        String groupId = deviceUsersInfo.getGroupId();
+        if (ObjectUtils.isNotEmpty(deviceUsersInfo.getUsers())
+                && StringUtils.isNotEmpty(groupId)) {
+            List<DevicePermissSendLog> list = new ArrayList<>();
+            for (ProjectUserPermiss projectUserPermiss : deviceUsersInfo.getUsers()) {
+                projectUserPermiss.setDataId(CommonUtil.UUID());
+                DevicePermissSendLog sendLog = new DevicePermissSendLog();
+                sendLog.setDataId(projectUserPermiss.getDataId());
+                sendLog.setGateWayId(gateWayId);
+                sendLog.setUserId(projectUserPermiss.getUid());
+                sendLog.setUserId(projectUserPermiss.getUn());
+                sendLog.setGroupId(groupId);
+                sendLog.setData(projectUserPermiss);
+                sendLog.setSendTime(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+                sendLog.setEvent(IotIdentifierConfig.queryDeviceUsersInfo);
+                sendLog.setTtl(new Date(System.currentTimeMillis() + TtlConfig.permissLogTTl));
+                list.add(sendLog);
+            }
+            devicePermissSendLogDao.saveAll(list);
+        }
+
         // 组装消息内容
         JSONObject jsonObject = deviceUsersInfo.toJson();
         param.setData(jsonObject);
@@ -306,6 +341,7 @@ public class DevicePermissEventService {
         } else {
             log.error("用户信息下发失败 网关ID:{} {}", gateWayId, resultContent.getMsg());
         }
+        devicePermissSendLogService.markPermissSend(groupId, resultContent.isSuccess(), resultContent.getMsg());
     }
 
     /**

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

@@ -4,12 +4,19 @@ import cn.hutool.json.JSONUtil;
 import com.github.microservice.models.device.DevicePermissSendResponseParam;
 import com.github.microservice.models.device.DevicePermissSendResponseResult;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.type.permiss.PermissSendState;
 import com.zhongshu.card.server.core.dao.devices.DevicePermissSendLogDao;
+import com.zhongshu.card.server.core.domain.devices.DevicePermissSendLog;
+import com.zhongshu.card.server.core.service.base.CommonService;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author TRX
  * @date 2024/10/31
@@ -21,6 +28,9 @@ public class DevicePermissSendLogService extends SuperService {
     @Autowired
     private DevicePermissSendLogDao devicePermissSendLogDao;
 
+    @Autowired
+    private CommonService commonService;
+
     /**
      * 下发权限数据的响应
      *
@@ -48,4 +58,27 @@ public class DevicePermissSendLogService extends SuperService {
         }
         return false;
     }
+
+    /**
+     * 编辑
+     *
+     * @param groupId
+     * @param isSuccess
+     */
+    public void markPermissSend(String groupId, Boolean isSuccess, String message) {
+        if (StringUtils.isNotEmpty(groupId)) {
+            Map<String, Object> where = new HashMap<>();
+            where.put("groupId", groupId);
+
+            Map<String, Object> standardData = new HashMap<>();
+            if (isSuccess != null && isSuccess) {
+                standardData.put("sendState", PermissSendState.SendSuccess);
+            } else {
+                standardData.put("sendState", PermissSendState.SendFailed);
+            }
+            standardData.put("sendMsg", message);
+            commonService.updateData(where, standardData, DevicePermissSendLog.class.getSimpleName());
+        }
+    }
+
 }