|
|
@@ -297,24 +297,30 @@ public class TRechargeServiceImpl extends ServiceImpl<TRechargeMapper, TRecharge
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int countSuccessRecharges(String openId, Date rechargeQueryTime) {
|
|
|
- // 统计用户在指定时间起(含)之后成功的充值次数
|
|
|
- // 支付状态为 1 表示已支付(充值成功)
|
|
|
+ public int getLatestRechargeAmount(String openId, Date startTime) {
|
|
|
if (StrUtil.isBlank(openId)) {
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+ // 1. 构建查询条件:只查成功的充值
|
|
|
LambdaQueryWrapper<TRecharge> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(TRecharge::getcOpenId, openId)
|
|
|
- .eq(TRecharge::getPayStatus, 1);
|
|
|
+ .eq(TRecharge::getPayStatus, 1) // 假设 1 为支付成功
|
|
|
+ .ge(TRecharge::getDtCreateTime, startTime) // 查询时间大于等于 startTime
|
|
|
+ .orderByDesc(TRecharge::getDtCreateTime); // 按创建时间倒序,最新的在前
|
|
|
+
|
|
|
+ // 2. 只取第一条记录
|
|
|
+ TRecharge latestRecord = this.getOne(queryWrapper);
|
|
|
|
|
|
- // rechargeQueryTime 为 null 表示不限制起点(永久活动/全量统计)
|
|
|
- if (rechargeQueryTime != null) {
|
|
|
- LocalDateTime start = LocalDateTime.ofInstant(rechargeQueryTime.toInstant(), ZoneId.systemDefault());
|
|
|
- queryWrapper.ge(TRecharge::getDtCreateTime, start);
|
|
|
+ // 3. 返回金额,假设 getMoney() 返回的是 Long 或 Integer
|
|
|
+ // 如果 getMoney() 返回 Long,需要转换为 Integer
|
|
|
+ if (latestRecord != null && latestRecord.getdMoney() != null) {
|
|
|
+ // 注意:这里假设金额单位是“分”,且数值不会超过 Integer.MAX_VALUE
|
|
|
+ // 如果超过,请根据实际情况处理或抛出异常
|
|
|
+ return latestRecord.getdMoney().intValue();
|
|
|
}
|
|
|
|
|
|
- long cnt = this.count(queryWrapper);
|
|
|
- return cnt > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) cnt;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/**
|