diff --git a/backend/services/reporting-service/src/infrastructure/kafka/activity-event-consumer.controller.ts b/backend/services/reporting-service/src/infrastructure/kafka/activity-event-consumer.controller.ts index 66661222..a90afc62 100644 --- a/backend/services/reporting-service/src/infrastructure/kafka/activity-event-consumer.controller.ts +++ b/backend/services/reporting-service/src/infrastructure/kafka/activity-event-consumer.controller.ts @@ -67,23 +67,16 @@ interface AuthorizationRoleEvent { /** * 认种订单支付事件 (planting-service) * Topic: planting.order.paid + * 注意:planting-service 发送的消息是直接数据,不包含 payload 包装 */ interface PlantingOrderPaidEvent { - eventId: string; - eventType: string; - occurredAt: string; - aggregateId: string; - payload: { - orderId: string; - orderNumber: string; - userId: string; - treeCount: number; - provinceCode?: string; - cityCode?: string; - totalAmount: string; - paidAt: string; - }; - _outbox?: OutboxMeta; + orderId: string; + userId: string; + treeCount: number; + provinceCode?: string; + cityCode?: string; + totalAmount?: string; + paidAt: string; } @Controller() @@ -250,42 +243,44 @@ export class ActivityEventConsumerController { /** * 监听认种订单支付成功事件 (planting-service) * Topic: planting.order.paid + * 注意:planting-service 发送的消息是直接数据,不包含 payload 包装 */ @MessagePattern('planting.order.paid') async handlePlantingOrderPaid(@Payload() message: PlantingOrderPaidEvent) { this.logger.log(`Received planting.order.paid event`); try { - const { payload } = message; + // planting-service 直接发送数据,不包装在 payload 中 + const data = message; // 记录活动日志 await this.activityRepo.create({ activityType: 'planting_order' as ActivityType, title: '认种订单', - description: `用户认种了 ${payload.treeCount} 棵榴莲树`, + description: `用户认种了 ${data.treeCount} 棵榴莲树`, icon: '🌳', - relatedUserId: BigInt(payload.userId), + relatedUserId: BigInt(data.userId), relatedEntityType: 'order', - relatedEntityId: payload.orderId, + relatedEntityId: data.orderId, metadata: { - orderNumber: payload.orderNumber, - treeCount: payload.treeCount, - totalAmount: payload.totalAmount, - provinceCode: payload.provinceCode, - cityCode: payload.cityCode, - paidAt: payload.paidAt, + orderId: data.orderId, + treeCount: data.treeCount, + totalAmount: data.totalAmount, + provinceCode: data.provinceCode, + cityCode: data.cityCode, + paidAt: data.paidAt, }, }); // 累加统计数据 const today = new Date(); - const amount = new Decimal(payload.totalAmount || '0'); + const amount = new Decimal(data.totalAmount || '0'); await Promise.all([ - this.realtimeStatsRepo.incrementPlanting(today, payload.treeCount, amount), - this.globalStatsRepo.incrementPlanting(payload.treeCount, amount), + this.realtimeStatsRepo.incrementPlanting(today, data.treeCount, amount), + this.globalStatsRepo.incrementPlanting(data.treeCount, amount), ]); - this.logger.log(`Activity and stats recorded for planting order: ${payload.orderId}`); + this.logger.log(`Activity and stats recorded for planting order: ${data.orderId}`); } catch (error) { this.logger.error(`Error recording planting order activity:`, error); }