浏览代码

1.调整小程序查询异常告警事件接口
2.调整小程序首页异常事件数量查询
3.完成小程序调取首页日活记录

hxd 2 月之前
父节点
当前提交
194ff65763

+ 5 - 5
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/EventController.java

@@ -29,9 +29,9 @@ public class EventController {
         return ApiResult.success(deviceGateway.handleEvent(eventListId));
     }
 
-    @GetMapping("/handleAlarmEvent/{alarmEventId}")
-    @Operation(summary = "小程序处理设备异常告警事件")
-    public ApiResult<Boolean> handleAlarmEvent(@PathVariable("alarmEventId") Long alarmEventId){
-        return ApiResult.success(deviceGateway.handleAlarmEvent(alarmEventId));
-    }
+//    @GetMapping("/handleAlarmEvent/{alarmEventId}")
+//    @Operation(summary = "小程序处理设备异常告警事件")
+//    public ApiResult<Boolean> handleAlarmEvent(@PathVariable("alarmEventId") Long alarmEventId){
+//        return ApiResult.success(deviceGateway.handleAlarmEvent(alarmEventId));
+//    }
 }

+ 5 - 5
portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebEventController.java

@@ -26,9 +26,9 @@ public class WebEventController {
     }
 
 
-    @GetMapping("/handleAlarmEvent")
-    @Operation(summary = "处理设备异常告警事件")
-    public ApiResult<Boolean> handleAlarmEvent(@RequestParam("alarmEventId") Long alarmEventId){
-        return ApiResult.success(deviceGateway.handleAlarmEvent(alarmEventId));
-    }
+//    @GetMapping("/handleAlarmEvent")
+//    @Operation(summary = "处理设备异常告警事件")
+//    public ApiResult<Boolean> handleAlarmEvent(@RequestParam("alarmEventId") Long alarmEventId){
+//        return ApiResult.success(deviceGateway.handleAlarmEvent(alarmEventId));
+//    }
 }

+ 1 - 1
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/home/HomeInfoDTO.java

@@ -29,7 +29,7 @@ public class HomeInfoDTO extends BaseVO {
     private Integer devNum;
 
     @Schema(description = "异常设备数量")
-    private Integer warnNum;
+    private long warnNum;
 
 
 }

+ 1 - 1
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/DeviceGateway.java

@@ -31,7 +31,7 @@ public interface DeviceGateway {
 
     Boolean handleEvent(Long eventListId);
 
-    Boolean handleAlarmEvent(Long alarmEventId);
+//    Boolean handleAlarmEvent(Long alarmEventId);
 
     Boolean webUpdateDevice(WebUpdateDeviceParams params);
 

+ 27 - 18
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -117,6 +117,9 @@ public class DeviceGatewayImpl implements DeviceGateway {
     private TblOprLogService logService;
 
     @Autowired
+    private DailyActiveUsersService dailyActiveUsersService;
+
+    @Autowired
     private org.springframework.data.redis.core.RedisTemplate<String, Object> redisTemplate;
 
 
@@ -145,7 +148,6 @@ public class DeviceGatewayImpl implements DeviceGateway {
 
         // 统计设备总数和告警数量
         int totalDevices = 0;
-        int warningDevices = 0;
         
         for (DevInfo devInfo : devInfos) {
             DeviceDTO dto = new DeviceDTO();
@@ -154,19 +156,21 @@ public class DeviceGatewayImpl implements DeviceGateway {
             
             // 统计设备数量
             totalDevices++;
-            // 统计异常设备数量(异常事件表未处理的设备)
-           boolean hasWarning = alarmEventService.QueryAlarm(devInfo.getDevId());
-           if (hasWarning) {
-               warningDevices++;
-           }
+
         }
 
+        // 统计异常事件数量(用户所有设备当天的异常事件数量)
+        List<Long> devIds = devInfos.stream()
+                .map(DevInfo::getDevId)
+                .collect(Collectors.toList());
+
+        long warningNums = alarmEventService.countUserDevicesAlarmEvents(devIds);
         
         homeInfoDTO.setDeviceList(deviceDTOs);
         // 设置设备总数
         homeInfoDTO.setDevNum(totalDevices);
         // 设置告警数量
-        homeInfoDTO.setWarnNum(warningDevices);
+        homeInfoDTO.setWarnNum(warningNums);
 
         /*
          * 查询群组数量
@@ -181,6 +185,11 @@ public class DeviceGatewayImpl implements DeviceGateway {
          */
         homeInfoDTO.setShareNum(devShareService.querySharedNumByUserId(userId).size());
 
+        /*
+         *  调取首页记录日活次数
+         */
+        dailyActiveUsersService.insertDailyActiveUsers(userId);
+
         return homeInfoDTO;
     }
 
@@ -374,17 +383,17 @@ public class DeviceGatewayImpl implements DeviceGateway {
         return this.eventService.update(updateWrapper);
     }
 
-    @Override
-    public Boolean handleAlarmEvent(Long alarmEventId) {
-        //获取当前操作者手机号
-        String phone = (String) StpUtil.getSession().get(UserConstants.SA_USER_PHONE);
-
-        LambdaUpdateWrapper<AlarmEvent> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.eq(AlarmEvent::getAlarmEventId, alarmEventId)
-                .set(AlarmEvent::getIsHandle, 1)
-                .set(AlarmEvent::getRemark, PhoneUtils.maskPhone(phone));
-        return this.alarmEventService.update(updateWrapper);
-    }
+//    @Override
+//    public Boolean handleAlarmEvent(Long alarmEventId) {
+//        //获取当前操作者手机号
+//        String phone = (String) StpUtil.getSession().get(UserConstants.SA_USER_PHONE);
+//
+//        LambdaUpdateWrapper<AlarmEvent> updateWrapper = new LambdaUpdateWrapper<>();
+//        updateWrapper.eq(AlarmEvent::getAlarmEventId, alarmEventId)
+//                .set(AlarmEvent::getIsHandle, 1)
+//                .set(AlarmEvent::getRemark, PhoneUtils.maskPhone(phone));
+//        return this.alarmEventService.update(updateWrapper);
+//    }
 
 
     @Override

+ 3 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/StatsGatewayImpl.java

@@ -46,14 +46,17 @@ public class StatsGatewayImpl implements StatsGateway {
         // 2.根据userId获取用户自己设备与被分享设备的id
             //2.1 获取用户被分享的设备id集合  sharedDevIds
         Optional<List<Long>> sharedDevIds = devShareService.queryDeviceIdByUserId(userId);
+        log.info("用户被分享的设备id集合: {}", sharedDevIds);
             //2.2 获取用户自己设备的id集合    devIds
         List<Long> devIds = devInfoService.queryByUserId(userId);
+        log.info("用户自己设备的id集合: {}", devIds);
             //2.3 合并devIds和sharedDevIds
         List<Long> allDevIds = Stream.concat(
                 Optional.ofNullable(devIds).orElseGet(Collections::emptyList).stream(),
                 sharedDevIds.orElseGet(Collections::emptyList).stream()
         ).distinct()  //去重 + 顺序
          .collect(Collectors.toList());
+        log.info("用户设备id集合: {}", allDevIds);
 
         if (allDevIds.isEmpty()){
             PageRecord<AlarmEventDTO> pr = new PageRecord<>();

+ 7 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/DailyActiveUsersMapper.java

@@ -0,0 +1,7 @@
+package com.hfln.portal.infrastructure.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hfln.portal.infrastructure.po.DailyActiveUsers;
+
+public interface DailyActiveUsersMapper extends BaseMapper<DailyActiveUsers> {
+}

+ 28 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/DailyActiveUsers.java

@@ -0,0 +1,28 @@
+package com.hfln.portal.infrastructure.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 每日活跃用户表
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("daily_active_users")
+public class DailyActiveUsers extends BasePO {
+
+    /**
+     * 主键ID,数据库自增策略
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long dailyActiveId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+}

+ 1 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/AlarmEventService.java

@@ -11,5 +11,5 @@ public interface AlarmEventService extends IService<AlarmEvent> {
 
         Page<AlarmEvent> QueryAlarmEvent(AlarmEventParams params, List<Long> devIdList);
 
-        boolean QueryAlarm(Long devId);
+       long countUserDevicesAlarmEvents(List<Long> devIds);
 }

+ 9 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DailyActiveUsersService.java

@@ -0,0 +1,9 @@
+package com.hfln.portal.infrastructure.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.infrastructure.po.DailyActiveUsers;
+
+public interface DailyActiveUsersService extends IService<DailyActiveUsers> {
+
+    void insertDailyActiveUsers (Long userId);
+}

+ 8 - 7
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/AlarmEventServiceImpl.java

@@ -53,18 +53,19 @@ public class AlarmEventServiceImpl extends ServiceImpl<AlarmEventMapper, AlarmEv
     }
 
     @Override
-    public boolean QueryAlarm(Long devId) {
-        LambdaQueryWrapper<AlarmEvent> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AlarmEvent::getDevId, devId)
-                .eq(AlarmEvent::getIsHandle, 0);
+    public long countUserDevicesAlarmEvents(List<Long> devIds) {
+        if (devIds == null || devIds.isEmpty()) {
+            return 0L;
+        }
 
-        // 获取当天起始和结束时间
         LocalDate today = LocalDate.now();
         LocalDateTime startOfDay = today.atStartOfDay();
         LocalDateTime endOfDay = today.plusDays(1).atStartOfDay().minusNanos(1);
 
-        queryWrapper.between(AlarmEvent::getCreateTime, startOfDay, endOfDay);
+        LambdaQueryWrapper<AlarmEvent> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(AlarmEvent::getDevId, devIds)
+                .between(AlarmEvent::getCreateTime, startOfDay, endOfDay);
 
-        return this.baseMapper.selectCount(queryWrapper) > 0;
+        return this.baseMapper.selectCount(queryWrapper);
     }
 }

+ 46 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DailyActiveUsersServiceImpl.java

@@ -0,0 +1,46 @@
+package com.hfln.portal.infrastructure.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.infrastructure.mapper.DailyActiveUsersMapper;
+import com.hfln.portal.infrastructure.po.BasePO;
+import com.hfln.portal.infrastructure.po.DailyActiveUsers;
+import com.hfln.portal.infrastructure.service.DailyActiveUsersService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+
+@Service
+@Slf4j
+public class DailyActiveUsersServiceImpl extends ServiceImpl<DailyActiveUsersMapper, DailyActiveUsers> implements DailyActiveUsersService {
+
+
+    /**
+     *
+     * 小程序用户登录首页,便往日活表插一条对应记录
+     */
+    @Override
+    public void insertDailyActiveUsers(Long userId) {
+        try {
+            LocalDateTime threshold = LocalDateTime.now().minusMinutes(10);
+
+            boolean exists = this.lambdaQuery()
+                    .eq(DailyActiveUsers::getUserId, userId)
+                    .ge(DailyActiveUsers::getCreateTime, threshold)
+                    .eq(DailyActiveUsers::getIsDeleted, BasePO.DeleteFlag.NOT_DELETED)
+                    .exists();   // ✅ 直接判断是否存在
+
+            if (exists) {
+                return;
+            }
+
+            DailyActiveUsers record = new DailyActiveUsers();
+            record.setUserId(userId);
+            this.save(record);
+
+        } catch (Exception e) {
+            log.warn("记录日活失败, userId={}", userId, e);
+        }
+    }
+}