Sfoglia il codice sorgente

添加getLatestRechargeAmount方法

wangzhijun 6 giorni fa
parent
commit
4f85defbc6

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/TRechargeService.java

@@ -104,5 +104,5 @@ public interface TRechargeService extends IService<TRecharge> {
      */
     boolean closeWeChatOrder(String outTradeNo);
 
-    int countSuccessRecharges(String openId, Date rechargeQueryTime);
+    int getLatestRechargeAmount(String openId, Date rechargeQueryTime);
 }

+ 16 - 10
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TRechargeServiceImpl.java

@@ -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;
     }
 
     /**