You've already forked FrameTour-BE
feat(app-statistics): 添加实时统计模式支持
- 在非实时模式下才写入当天统计缓存 - 实时模式由调用方自行控制写入目标日期 - 添加了实时模式查询的逻辑分支处理
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user