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();