diff --git a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java index 61af2518..270bd2bb 100644 --- a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java @@ -33,6 +33,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -344,7 +345,7 @@ public class AffiliateServiceImpl extends ServiceImpl=和<) + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("trade_state", "paid") + .isNotNull("promotion_code"); + + if (!StringUtils.isNullOrEmpty(lastTime)) { + queryWrapper.ge("create_time", lastTime); // 关键修复:>=代替> + } + queryWrapper.lt("create_time", LocalDateTime.now().format(formatter)); + + List paymentInfos = paymentInfoService.list(queryWrapper); + log.info("扫描时间范围: {} - {}, 新增订单数: {}", + lastTime, LocalDateTime.now().format(formatter), paymentInfos.size()); + + // 3. 按推广码汇总支付金额 + Map codeAmount = paymentInfos.stream() + .collect(Collectors.toMap( + PaymentInfo::getPromotionCode, + payment -> new BigDecimal(payment.getPayerTotal()), + BigDecimal::add + )); + + // 4. 更新佣金数据 + codeAmount.forEach((promotionCode, amount) -> { + ProductCoupons coupon = stripeService.getProductCoupon(promotionCode, null); + if (coupon != null) { + updateCouponCommission(coupon, amount); + productCouponsMapper.updateById(coupon); + } + }); + + // 5. 结束时更新Redis时间 + String newLastTime = LocalDateTime.now().format(formatter); + redisUtil.addToString(RedisUtil.PAYMENT_INFO_LAST_SCAN_TIME, newLastTime); } /**