feat(M10-A): 完成统一通知中心与投递闭环

This commit is contained in:
Codex
2026-08-11 09:17:18 +08:00
parent 41b9cf7349
commit 5d70114bab
46 changed files with 1724 additions and 74 deletions
+24
View File
@@ -173,6 +173,16 @@ export class PricingRepository {
input.actor?.source === 'ADMIN' ? 'Order created on behalf' : 'Room hold created',
input.actor?.traceId ?? `order-created-${orderId}`, input.userId]
);
await connection.execute(
`INSERT IGNORE INTO qipai_outbox_events
(tenant_id, aggregate_type, aggregate_id, event_type, idempotency_key, payload)
VALUES (?, 'ORDER', ?, 'ORDER_CREATED', ?, JSON_OBJECT(
'storeId', ?, 'roomId', ?, 'orderId', ?, 'orderNo', ?,
'customerId', ?, 'status', 'PENDING_PAYMENT', 'source', ?))`,
[input.tenantId, orderId, `order:${orderId}:created:notification`,
String(room.storeId), input.roomId, orderId, orderNo, input.userId,
input.actor?.source ?? 'APP']
);
if (input.actor?.source === 'ADMIN') {
await connection.execute(
`INSERT INTO qipai_audit_logs
@@ -241,6 +251,20 @@ export class PricingRepository {
WHERE ${filters.join(' AND ')}`,
params
);
await connection.execute<ResultSetHeader>(
`INSERT IGNORE INTO qipai_outbox_events
(tenant_id, aggregate_type, aggregate_id, event_type, idempotency_key, payload)
SELECT o.tenant_id, 'ORDER', CAST(o.id AS CHAR), 'ORDER_EXPIRED',
CONCAT('order:', o.id, ':expired:notification'),
JSON_OBJECT('storeId', o.store_id, 'roomId', o.room_id, 'orderId', o.id,
'customerId', (SELECT a.user_id FROM qipai_order_user_access a
WHERE a.tenant_id = o.tenant_id AND a.order_id = o.id ORDER BY a.user_id LIMIT 1),
'status', 'CLOSED')
FROM qipai_room_reservations r
INNER JOIN qipai_orders o ON o.id = r.order_id AND o.tenant_id = r.tenant_id
WHERE ${filters.join(' AND ')}`,
params
);
await connection.execute<ResultSetHeader>(
`UPDATE qipai_room_reservations r
INNER JOIN qipai_orders o