fix(reporting-service): 兼容 referral-service 的认种事件格式

- planting.order.paid 事件现在由 referral-service 发送
- 消息格式为 { eventName, data: {...} },与原 planting-service 格式不同
- 添加兼容逻辑,同时支持两种格式
- 修复今日认种统计为0的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-07 06:58:33 -08:00
parent c7c793f128
commit 84aa8181a9
1 changed files with 37 additions and 11 deletions

View File

@ -65,15 +65,31 @@ interface AuthorizationRoleEvent {
}
/**
* (planting-service)
* (referral-service planting-service)
* Topic: planting.order.paid
* planting-service payload
* [2026-01-05] userId accountSequence
* [2026-01-07]
* - referral-service : { eventName, data: {...} }
* - planting-service : { orderId, treeCount, ... } ()
*/
interface PlantingOrderPaidEvent {
// referral-service 格式
eventName?: string;
data?: PlantingOrderPaidData;
// planting-service 直接格式
orderId?: string;
userId?: string;
accountSequence?: string;
treeCount?: number;
provinceCode?: string;
cityCode?: string;
totalAmount?: string;
paidAt?: string;
}
interface PlantingOrderPaidData {
orderId: string;
userId?: string; // 可能为空,不依赖此字段
accountSequence?: string; // 用户账户序列号
userId?: string;
accountSequence?: string;
treeCount: number;
provinceCode?: string;
cityCode?: string;
@ -243,18 +259,28 @@ export class ActivityEventConsumerController {
}
/**
* (planting-service)
* (referral-service planting-service)
* Topic: planting.order.paid
* planting-service payload
* [2026-01-05] relatedUserId accountSequence metadata
* [2026-01-07]
* - referral-service: { eventName, data: {...} }
* - planting-service: { orderId, treeCount, ... }
*/
@MessagePattern('planting.order.paid')
async handlePlantingOrderPaid(@Payload() message: PlantingOrderPaidEvent) {
this.logger.log(`Received planting.order.paid event`);
this.logger.log(`Received planting.order.paid event: ${JSON.stringify(message).substring(0, 200)}`);
try {
// planting-service 直接发送数据,不包装在 payload 中
const data = message;
// [2026-01-07] 兼容两种格式referral-service 的 data 包装格式和 planting-service 的直接格式
const data: PlantingOrderPaidData = message.data || {
orderId: message.orderId || '',
userId: message.userId,
accountSequence: message.accountSequence,
treeCount: message.treeCount || 0,
provinceCode: message.provinceCode,
cityCode: message.cityCode,
totalAmount: message.totalAmount,
paidAt: message.paidAt || new Date().toISOString(),
};
// 记录活动日志 - 不依赖 userId使用 accountSequence
await this.activityRepo.create({