diff --git a/backend/services/wallet-service/src/application/schedulers/expired-rewards.scheduler.ts b/backend/services/wallet-service/src/application/schedulers/expired-rewards.scheduler.ts index 113a5d4e..d536af56 100644 --- a/backend/services/wallet-service/src/application/schedulers/expired-rewards.scheduler.ts +++ b/backend/services/wallet-service/src/application/schedulers/expired-rewards.scheduler.ts @@ -5,7 +5,7 @@ import { WalletApplicationService } from '@/application/services'; /** * 过期奖励处理定时任务 * - * 每小时执行一次,处理已过期的待领取奖励: + * 每分钟执行一次,处理已过期的待领取奖励: * 1. 扫描 pending_rewards 表中 status=PENDING 且 expire_at < now 的记录 * 2. 标记为 EXPIRED * 3. 将过期金额转移到总部社区账户 (S0000000001) @@ -19,9 +19,9 @@ export class ExpiredRewardsScheduler { ) {} /** - * 每小时执行一次过期奖励处理 + * 每分钟执行一次过期奖励处理 */ - @Cron(CronExpression.EVERY_HOUR) + @Cron(CronExpression.EVERY_MINUTE) async handleExpiredRewards(): Promise { this.logger.log('Starting expired rewards processing job...'); diff --git a/backend/services/wallet-service/src/application/services/wallet-application.service.ts b/backend/services/wallet-service/src/application/services/wallet-application.service.ts index 2b9b5958..5ceeb220 100644 --- a/backend/services/wallet-service/src/application/services/wallet-application.service.ts +++ b/backend/services/wallet-service/src/application/services/wallet-application.service.ts @@ -668,6 +668,10 @@ export class WalletApplicationService { }); await this.pendingRewardRepo.save(pendingReward); + // 同步更新 wallet_accounts 表的 pending_usdt 字段 + wallet.addPendingReward(amount, Hashpower.create(0), expireAt, orderId); + await this.walletRepo.save(wallet); + // 记录流水 const ledgerEntry = LedgerEntry.create({ accountSequence: wallet.accountSequence, diff --git a/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts b/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts index 585b3ced..202ead2e 100644 --- a/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts +++ b/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts @@ -111,14 +111,17 @@ export class PlantingEventConsumerService implements OnModuleInit, OnModuleDestr this.logger.debug(`[RECEIVE] Raw message: ${value.substring(0, 500)}...`); const parsed = JSON.parse(value); - const eventType = parsed.eventType || parsed.type; - const payload = parsed.payload || parsed; + // 兼容多种事件格式: eventType, type, eventName + const eventType = parsed.eventType || parsed.type || parsed.eventName; + // 兼容多种数据格式: payload, data, 或直接在根级别 + const payload = parsed.payload || parsed.data || parsed; this.logger.log(`[RECEIVE] Event type: ${eventType}`); - // 监听认种创建事件 - 用户认种后,结算其所有待领取奖励 - if (eventType === 'planting.planting.created' || eventType === 'PlantingOrderCreated') { - this.logger.log(`[HANDLE] Processing PlantingCreated event`); + // 监听认种支付完成事件 - 用户认种后,结算其所有待领取奖励 + // 支持: PlantingOrderPaid, PlantingOrderCreated, planting.planting.created + if (eventType === 'PlantingOrderPaid' || eventType === 'planting.planting.created' || eventType === 'PlantingOrderCreated') { + this.logger.log(`[HANDLE] Processing PlantingPaid event`); this.logger.log(`[HANDLE] orderNo: ${payload.orderNo}`); this.logger.log(`[HANDLE] accountSequence: ${payload.accountSequence}`); this.logger.log(`[HANDLE] userId: ${payload.userId}`);