fix(reporting): remove userId dependency in planting.order.paid handler
- Change userId to optional in PlantingOrderPaidEvent interface - Add accountSequence field for user identification - Remove relatedUserId from activity creation (was causing BigInt error) - Store accountSequence in metadata instead Fixes: TypeError: Cannot convert undefined to a BigInt 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
0f3c26c6fa
commit
66ace25935
|
|
@ -68,10 +68,12 @@ interface AuthorizationRoleEvent {
|
||||||
* 认种订单支付事件 (planting-service)
|
* 认种订单支付事件 (planting-service)
|
||||||
* Topic: planting.order.paid
|
* Topic: planting.order.paid
|
||||||
* 注意:planting-service 发送的消息是直接数据,不包含 payload 包装
|
* 注意:planting-service 发送的消息是直接数据,不包含 payload 包装
|
||||||
|
* [2026-01-05] 更新:移除 userId 依赖,改用 accountSequence
|
||||||
*/
|
*/
|
||||||
interface PlantingOrderPaidEvent {
|
interface PlantingOrderPaidEvent {
|
||||||
orderId: string;
|
orderId: string;
|
||||||
userId: string;
|
userId?: string; // 可能为空,不依赖此字段
|
||||||
|
accountSequence?: string; // 用户账户序列号
|
||||||
treeCount: number;
|
treeCount: number;
|
||||||
provinceCode?: string;
|
provinceCode?: string;
|
||||||
cityCode?: string;
|
cityCode?: string;
|
||||||
|
|
@ -244,6 +246,7 @@ export class ActivityEventConsumerController {
|
||||||
* 监听认种订单支付成功事件 (planting-service)
|
* 监听认种订单支付成功事件 (planting-service)
|
||||||
* Topic: planting.order.paid
|
* Topic: planting.order.paid
|
||||||
* 注意:planting-service 发送的消息是直接数据,不包含 payload 包装
|
* 注意:planting-service 发送的消息是直接数据,不包含 payload 包装
|
||||||
|
* [2026-01-05] 更新:移除 relatedUserId,改用 accountSequence 存入 metadata
|
||||||
*/
|
*/
|
||||||
@MessagePattern('planting.order.paid')
|
@MessagePattern('planting.order.paid')
|
||||||
async handlePlantingOrderPaid(@Payload() message: PlantingOrderPaidEvent) {
|
async handlePlantingOrderPaid(@Payload() message: PlantingOrderPaidEvent) {
|
||||||
|
|
@ -253,17 +256,18 @@ export class ActivityEventConsumerController {
|
||||||
// planting-service 直接发送数据,不包装在 payload 中
|
// planting-service 直接发送数据,不包装在 payload 中
|
||||||
const data = message;
|
const data = message;
|
||||||
|
|
||||||
// 记录活动日志
|
// 记录活动日志 - 不依赖 userId,使用 accountSequence
|
||||||
await this.activityRepo.create({
|
await this.activityRepo.create({
|
||||||
activityType: 'planting_order' as ActivityType,
|
activityType: 'planting_order' as ActivityType,
|
||||||
title: '认种订单',
|
title: '认种订单',
|
||||||
description: `用户认种了 ${data.treeCount} 棵榴莲树`,
|
description: `用户认种了 ${data.treeCount} 棵榴莲树`,
|
||||||
icon: '🌳',
|
icon: '🌳',
|
||||||
relatedUserId: BigInt(data.userId),
|
// 不设置 relatedUserId,因为 userId 可能为空
|
||||||
relatedEntityType: 'order',
|
relatedEntityType: 'order',
|
||||||
relatedEntityId: data.orderId,
|
relatedEntityId: data.orderId,
|
||||||
metadata: {
|
metadata: {
|
||||||
orderId: data.orderId,
|
orderId: data.orderId,
|
||||||
|
accountSequence: data.accountSequence,
|
||||||
treeCount: data.treeCount,
|
treeCount: data.treeCount,
|
||||||
totalAmount: data.totalAmount,
|
totalAmount: data.totalAmount,
|
||||||
provinceCode: data.provinceCode,
|
provinceCode: data.provinceCode,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue