From 286062a81a76b1e834127f23f5fc3485531dc2f6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 7 Jan 2026 01:40:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(app-statistics):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E7=BB=9F=E8=AE=A1=E6=A8=A1=E5=BC=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在非实时模式下才写入当天统计缓存 - 实时模式由调用方自行控制写入目标日期 - 添加了实时模式查询的逻辑分支处理 --- .../mobile/impl/AppStatisticsServiceImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppStatisticsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppStatisticsServiceImpl.java index 8872fa31..b2390fab 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppStatisticsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppStatisticsServiceImpl.java @@ -182,8 +182,10 @@ public class AppStatisticsServiceImpl implements AppStatisticsService { resp.setPayOfOrderAmount(addBigDecimalSafely(resp.payOfOrderAmount(), item.payOfOrderAmount())); resp.setRefundOfOrderAmount(addBigDecimalSafely(resp.refundOfOrderAmount(), item.refundOfOrderAmount())); } + return ApiResponse.success(resp); + } else { + query.setRealtime(true); } - return ApiResponse.success(resp); } } if (!query.isRealtime()) { @@ -268,10 +270,14 @@ public class AppStatisticsServiceImpl implements AppStatisticsService { vo.setPayOfOrderAmount(payOfOrderAmount.setScale(2, RoundingMode.HALF_UP)); vo.setRefundOfOrderNum(refundOfOrderNum); vo.setRefundOfOrderAmount(refundOfOrderAmount.setScale(2, RoundingMode.HALF_UP)); - if (query.getScenicId() != null) { - statisticsMapper.insertStat(query.getScenicId(), new Date(), vo); + // 仅在非 realtime 模式下写入缓存 + // realtime=true 时由调用方(如定时任务)自行控制写入目标日期,不污染当天缓存 + if (!query.isRealtime()) { + if (query.getScenicId() != null) { + statisticsMapper.insertStat(query.getScenicId(), new Date(), vo); + } + redisTemplate.opsForValue().set(redisKey, JacksonUtil.toJSONString(vo), 60, TimeUnit.SECONDS); } - redisTemplate.opsForValue().set(redisKey, JacksonUtil.toJSONString(vo), 60, TimeUnit.SECONDS); return ApiResponse.success(vo); } finally { lock.unlock();