feat(app-statistics): 添加实时统计模式支持

- 在非实时模式下才写入当天统计缓存
- 实时模式由调用方自行控制写入目标日期
- 添加了实时模式查询的逻辑分支处理
This commit is contained in:
2026-01-07 01:40:50 +08:00
parent e0856a1b9c
commit 286062a81a

View File

@@ -182,8 +182,10 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
resp.setPayOfOrderAmount(addBigDecimalSafely(resp.payOfOrderAmount(), item.payOfOrderAmount())); resp.setPayOfOrderAmount(addBigDecimalSafely(resp.payOfOrderAmount(), item.payOfOrderAmount()));
resp.setRefundOfOrderAmount(addBigDecimalSafely(resp.refundOfOrderAmount(), item.refundOfOrderAmount())); resp.setRefundOfOrderAmount(addBigDecimalSafely(resp.refundOfOrderAmount(), item.refundOfOrderAmount()));
} }
return ApiResponse.success(resp);
} else {
query.setRealtime(true);
} }
return ApiResponse.success(resp);
} }
} }
if (!query.isRealtime()) { if (!query.isRealtime()) {
@@ -268,10 +270,14 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
vo.setPayOfOrderAmount(payOfOrderAmount.setScale(2, RoundingMode.HALF_UP)); vo.setPayOfOrderAmount(payOfOrderAmount.setScale(2, RoundingMode.HALF_UP));
vo.setRefundOfOrderNum(refundOfOrderNum); vo.setRefundOfOrderNum(refundOfOrderNum);
vo.setRefundOfOrderAmount(refundOfOrderAmount.setScale(2, RoundingMode.HALF_UP)); vo.setRefundOfOrderAmount(refundOfOrderAmount.setScale(2, RoundingMode.HALF_UP));
if (query.getScenicId() != null) { // 仅在非 realtime 模式下写入缓存
statisticsMapper.insertStat(query.getScenicId(), new Date(), vo); // 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); return ApiResponse.success(vo);
} finally { } finally {
lock.unlock(); lock.unlock();