首页 / 业务功能与流程 / 设备绑定与权益分配流程

流程总览

设备绑定 + 权益分配是跨 iot / member / subscription / pay 四个模块的 Saga 长事务,通过 RocketMQ 事件(topic entrax-subscription-binding-saga-v1)串联,任一步失败走 Seat 释放补偿。

模块职责关键记录
iot绑定会话/任务、预绑定、最终归属iot_bind_sessioniot_binding_task
member用户身份与家庭校验member_user
subscriptionSeat 预占/释放、支付后激活subscription_seatsubscription_active
pay支付(如需)pay_orderpay_payment_attempt

绑定时序(Saga)

  1. 发起:App 调用 /iot/device/binding;iot 创建绑定会话 + 绑定任务(task_no 唯一)
  2. 预占请求:iot 发布 subscription.seat.reserve.requested(RocketMQ,含 tenantId 信封)
  3. 预占执行:Subscription 消费者(group subscription-binding-saga-subscription-v1)调 handleReserveRequested 预占 Seat
  4. 结果回执:Subscription 发布 seat.reserved(成功)、seat.payment-required(需支付)或 seat.reserve-failed;iot 消费者(group subscription-binding-saga-iot-v1)接收并驱动任务状态
  5. 支付:需要支付时走 pay Checkout 流程完成支付;成功后发布 subscription.paid.activation.requested
  6. 激活:Subscription 执行 handlePaidActivationRequested 激活订阅并占用 Seat,回发 paid.activation-completed
  7. 完成:iot 完成绑定,回发 iot.binding.completed;Subscription 记录审计结果(handleBindingAuditResult
  8. 补偿:任一步失败发布 subscription.seat.release.requestedsubscription.seat.released 释放 Seat

任务状态机

CREATED → SEAT_RESERVING → SEAT_RESERVED / PAYMENT_REQUIRED / RESERVE_FAILED
         → PAID_ACTIVATING → ACTIVATION_COMPLETED → BINDING → COMPLETED
         → FAILED(任意失败 → RELEASING → RELEASED)

状态推进由事件驱动,配合 IotBindingRetryJob 重试与 IotBindingOutboxJob 可靠发布。

消息契约

事件 Tag生产者消费者
subscription.seat.reserve.requestediotsubscription
subscription.seat.reserved / reserve-failed / payment-requiredsubscriptioniot
subscription.paid.activation.requested / completedpay / subscriptionsubscription / iot
subscription.seat.release.requested / releasediot / subscriptionsubscription
iot.binding.completed / failediotsubscription(审计)

消息信封字段:tenantId(必需)、eventType、业务 ID 等;消费者先校验信封再分派。

幂等与补偿

  • 幂等约束:iot_binding_task 对租户内 task_nopay_order_no 及未完成 session/pre-bind/device guard 唯一。
  • Seat 唯一:subscription_seat 对已占用 session/device guard 唯一,释放后恢复。
  • 补偿:Seat 释放事件幂等(已释放不重复释放);支付失败不激活订阅。
  • Outbox:本地事务 + Outbox 表,Job 异步发布,保证业务成功必发消息。