From 23980578d7f81a157c8a5383d610b9bad8d04ae9 Mon Sep 17 00:00:00 2001 From: qaq <1937228092@qq.com> Date: Fri, 15 Aug 2025 12:57:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panel_install.sh | 3 - .../common/task/StatisticsFlowAsync.java | 6 +- .../java/com/admin/entity/StatisticsFlow.java | 2 +- .../admin/service/impl/UserServiceImpl.java | 78 +++++++++---------- vite-frontend/src/pages/index.tsx | 4 +- 5 files changed, 42 insertions(+), 51 deletions(-) diff --git a/panel_install.sh b/panel_install.sh index b7e2ed4..d707e1b 100755 --- a/panel_install.sh +++ b/panel_install.sh @@ -836,9 +836,6 @@ UPDATE \`statistics_flow\` SET \`created_time\` = UNIX_TIMESTAMP() * 1000 WHERE \`created_time\` = 0 OR \`created_time\` IS NULL; - - - EOF # 检查数据库容器 diff --git a/springboot-backend/src/main/java/com/admin/common/task/StatisticsFlowAsync.java b/springboot-backend/src/main/java/com/admin/common/task/StatisticsFlowAsync.java index 0d74e83..102ee9f 100644 --- a/springboot-backend/src/main/java/com/admin/common/task/StatisticsFlowAsync.java +++ b/springboot-backend/src/main/java/com/admin/common/task/StatisticsFlowAsync.java @@ -37,11 +37,11 @@ public class StatisticsFlowAsync { long time = new Date().getTime(); // 删除48小时前的数据 - long nowMs = System.currentTimeMillis(); + long nowMs = new Date().getTime(); long cutoffMs = nowMs - 48L * 60 * 60 * 1000; statisticsFlowService.remove( new LambdaQueryWrapper() - .lt(StatisticsFlow::getCreateTime, cutoffMs) + .lt(StatisticsFlow::getCreatedTime, cutoffMs) ); @@ -79,7 +79,7 @@ public class StatisticsFlowAsync { statisticsFlow.setFlow(incrementFlow); statisticsFlow.setTotalFlow(currentTotalFlow); statisticsFlow.setTime(hourString); - statisticsFlow.setCreateTime(time); + statisticsFlow.setCreatedTime(time); statisticsFlowList.add(statisticsFlow); } diff --git a/springboot-backend/src/main/java/com/admin/entity/StatisticsFlow.java b/springboot-backend/src/main/java/com/admin/entity/StatisticsFlow.java index 6e81c1a..89626ee 100644 --- a/springboot-backend/src/main/java/com/admin/entity/StatisticsFlow.java +++ b/springboot-backend/src/main/java/com/admin/entity/StatisticsFlow.java @@ -28,7 +28,7 @@ public class StatisticsFlow { private String time; - private Long createTime; + private Long createdTime; } diff --git a/springboot-backend/src/main/java/com/admin/service/impl/UserServiceImpl.java b/springboot-backend/src/main/java/com/admin/service/impl/UserServiceImpl.java index e49f5dd..4032c59 100644 --- a/springboot-backend/src/main/java/com/admin/service/impl/UserServiceImpl.java +++ b/springboot-backend/src/main/java/com/admin/service/impl/UserServiceImpl.java @@ -727,50 +727,44 @@ public class UserServiceImpl extends ServiceImpl implements Us * @return 最近24小时流量统计列表 */ private List getLast24HoursFlowStatistics(Long userId) { - try { - // 按ID倒序查最近24条记录(ID越大越新,时间就是23:00, 22:00, 21:00...这样倒序) - List recentFlows = statisticsFlowService.list( - new QueryWrapper() - .eq("user_id", userId) - .orderByDesc("id") - .last("LIMIT 24") - ); - - List result = new ArrayList<>(recentFlows); - - // 如果查出来的记录不足24条,需要补0和对应的时间 - if (result.size() < 24) { - // 获取最早记录的时间,继续往前推 - int startHour = getCurrentHour(); - if (!result.isEmpty()) { - // 从最后一条记录的时间继续往前推 - String lastTime = result.get(result.size() - 1).getTime(); - startHour = parseHour(lastTime) - 1; - } - - // 补0到24条 - while (result.size() < 24) { - if (startHour < 0) startHour = 23; // 跨天处理 - - StatisticsFlow emptyFlow = new StatisticsFlow(); - emptyFlow.setUserId(userId); - emptyFlow.setFlow(0L); - emptyFlow.setTotalFlow(0L); - emptyFlow.setTime(String.format("%02d:00", startHour)); - result.add(emptyFlow); - - startHour--; - } + // 按ID倒序查最近24条记录(ID越大越新,时间就是23:00, 22:00, 21:00...这样倒序) + List recentFlows = statisticsFlowService.list( + new QueryWrapper() + .eq("user_id", userId) + .orderByDesc("id") + .last("LIMIT 24") + ); + + List result = new ArrayList<>(recentFlows); + + // 如果查出来的记录不足24条,需要补0和对应的时间 + if (result.size() < 24) { + // 获取最早记录的时间,继续往前推 + int startHour = getCurrentHour(); + if (!result.isEmpty()) { + // 从最后一条记录的时间继续往前推 + String lastTime = result.get(result.size() - 1).getTime(); + startHour = parseHour(lastTime) - 1; + } + + // 补0到24条 + while (result.size() < 24) { + if (startHour < 0) startHour = 23; // 跨天处理 + + StatisticsFlow emptyFlow = new StatisticsFlow(); + emptyFlow.setUserId(userId); + emptyFlow.setFlow(0L); + emptyFlow.setTotalFlow(0L); + emptyFlow.setTime(String.format("%02d:00", startHour)); + result.add(emptyFlow); + + startHour--; } - - log.debug("用户 {} 获取到 {} 条实际记录,补齐为 {} 条24小时记录", userId, recentFlows.size(), result.size()); - return result; - - } catch (Exception e) { - log.error("获取用户 {} 最近24小时流量统计失败", userId, e); - // 返回24条全0数据,时间从当前小时往前推 - return generateEmpty24HourData(userId); } + + log.debug("用户 {} 获取到 {} 条实际记录,补齐为 {} 条24小时记录", userId, recentFlows.size(), result.size()); + return result; + } /** diff --git a/vite-frontend/src/pages/index.tsx b/vite-frontend/src/pages/index.tsx index bf0cfd1..7f1759e 100644 --- a/vite-frontend/src/pages/index.tsx +++ b/vite-frontend/src/pages/index.tsx @@ -215,7 +215,7 @@ export default function IndexPage() { const checkResponse = await checkCaptcha(); if (checkResponse.code !== 0) { - toast.error("检查验证码状态失败,请重试"); + toast.error("检查验证码状态失败,请重试" + checkResponse.msg); setLoading(false); return; } @@ -234,7 +234,7 @@ export default function IndexPage() { } } catch (error) { console.error('检查验证码状态错误:', error); - toast.error("网络错误,请稍后重试"); + toast.error("网络错误,请稍后重试" + error); setLoading(false); } };