| ard-admin/src/main/java/com/ard/web/controller/data/ArdStatisticsController.java | ●●●●● patch | view | raw | blame | history | |
| ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java | ●●●●● patch | view | raw | blame | history | |
| ard-system/src/main/java/com/ard/data/statistics/domain/ArdStatisticsCountResult.java | ●●●●● patch | view | raw | blame | history | |
| ard-system/src/main/java/com/ard/data/statistics/mapper/ArdStatisticsMapper.java | ●●●●● patch | view | raw | blame | history | |
| ard-system/src/main/java/com/ard/data/statistics/service/ArdStatisticsService.java | ●●●●● patch | view | raw | blame | history | |
| ard-system/src/main/resources/mapper/data/ArdStatisticsMapper.xml | ●●●●● patch | view | raw | blame | history |
ard-admin/src/main/java/com/ard/web/controller/data/ArdStatisticsController.java
New file @@ -0,0 +1,26 @@ package com.ard.web.controller.data; import com.ard.common.core.domain.AjaxResult; import com.ard.data.statistics.service.ArdStatisticsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @Api(tags = "统计接口") @RestController @RequestMapping("/data/statistics") public class ArdStatisticsController { @Resource private ArdStatisticsService service; @ApiOperation("获取统计数量") @GetMapping("/counts") public AjaxResult getCounts() { return AjaxResult.success(service.getCounts()); } } ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java
@@ -39,8 +39,8 @@ private RedisCache redisCache; @PreAuthorize("@ss.hasPermi('monitor:online:list')") @GetMapping("/list") public TableDataInfo list(String ipaddr, String userName) @GetMapping("/list1") public TableDataInfo list1(String ipaddr, String userName) { Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); @@ -68,6 +68,51 @@ userOnlineList.removeAll(Collections.singleton(null)); return getDataTable(userOnlineList); } @PreAuthorize("@ss.hasPermi('monitor:online:list')") @GetMapping("/list") public TableDataInfo list(String ipaddr, String userName) { startPage(); // ❗ Ruoyi 分页 Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); List<SysUserOnline> resultList = new ArrayList<>(); boolean searchIp = StringUtils.isNotEmpty(ipaddr); boolean searchName = StringUtils.isNotEmpty(userName); for (String key : keys) { LoginUser loginUser = redisCache.getCacheObject(key); if (loginUser == null || loginUser.getUser() == null) continue; // 转换成 SysUserOnline SysUserOnline onlineUser = userOnlineService.loginUserToUserOnline(loginUser); if (onlineUser == null) continue; boolean match = true; // ⭐ IP 模糊匹配 if (searchIp) { String userIp = loginUser.getIpaddr(); match = userIp != null && userIp.contains(ipaddr); } // ⭐ 用户名模糊匹配 if (match && searchName) { String nick = loginUser.getUsername(); match = nick != null && nick.contains(userName); } if (match) resultList.add(onlineUser); } Collections.reverse(resultList); return getDataTable(resultList); } /** * 强退用户 ard-system/src/main/java/com/ard/data/statistics/domain/ArdStatisticsCountResult.java
New file @@ -0,0 +1,9 @@ package com.ard.data.statistics.domain; import lombok.Data; @Data public class ArdStatisticsCountResult { private String name; private Integer count; } ard-system/src/main/java/com/ard/data/statistics/mapper/ArdStatisticsMapper.java
New file @@ -0,0 +1,10 @@ package com.ard.data.statistics.mapper; import com.ard.data.statistics.domain.ArdStatisticsCountResult; import java.util.List; public interface ArdStatisticsMapper { List<ArdStatisticsCountResult> getAllCounts(); } ard-system/src/main/java/com/ard/data/statistics/service/ArdStatisticsService.java
New file @@ -0,0 +1,19 @@ package com.ard.data.statistics.service; import com.ard.data.statistics.domain.ArdStatisticsCountResult; import com.ard.data.statistics.mapper.ArdStatisticsMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class ArdStatisticsService { @Resource private ArdStatisticsMapper mapper; public List<ArdStatisticsCountResult> getCounts() { return mapper.getAllCounts(); } } ard-system/src/main/resources/mapper/data/ArdStatisticsMapper.xml
New file @@ -0,0 +1,25 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ard.data.statistics.mapper.ArdStatisticsMapper"> <select id="getAllCounts" resultType="ArdStatisticsCountResult"> SELECT 'serverCount' AS name, COUNT(*) AS count FROM ard_server UNION ALL SELECT 'uavCount' AS name, COUNT(*) AS count FROM ard_drone UNION ALL SELECT 'cameraCount' AS name, COUNT(*) AS count FROM ard_camera UNION ALL SELECT 'dockCount' AS name, COUNT(*) AS count FROM manage_device where domain = 3 UNION ALL SELECT 'noFlyZoneCount' AS name, COUNT(*) AS count FROM ard_no_fly_zone UNION ALL SELECT 'mapCount' AS name, COUNT(*) AS count FROM ard_map UNION ALL SELECT 'modelCount' AS name, COUNT(*) AS count FROM ard_model UNION ALL SELECT 'tilesCount' AS name, COUNT(*) AS count FROM ard_tile </select> </mapper>