diff --git a/docs/需求文档-PRD.md b/docs/需求文档-PRD.md index 086c15d..a3aa8bd 100644 --- a/docs/需求文档-PRD.md +++ b/docs/需求文档-PRD.md @@ -95,7 +95,11 @@ - 若订单状态为「服务未预约(100)」,继续执行后续流程(更新订单,不新增) - 若订单状态为其他状态,返回服务已预约 3. 查询数据库验证服务编码(type)是否存在(数据库中维护邮储服务编码与营销平台活动的映射关系) + 如果不存在 返回暂不支持此服务 4. 请求邮储服务开放平台接口验证权益码是否过期 + 如果过期: + 1、CRM渠道返回 "二维码20分钟内有效,现已超时失效,请联系理财经理重新生成二维码! + 2、手机银行渠道返回 “当前页面停置时间过长,请您重新进入该页面” 5. 创建/更新订单记录(订单状态:服务未预约) 6. 请求邮储服务开放平台接口发起预约: - 预约成功或返回161010(交易已预约):继续执行步骤7 @@ -683,20 +687,20 @@ ycjfsc:token:psbc #### 5.2.2 一致性保障机制 -**机制一:本地事务 + 可靠消息** +**机制一:异步消息 + 最终一致** ``` 1. 接收蓝色兄弟核销回调 -2. 本地事务: - - 更新订单状态为「待通知」(250) - - 写入待通知消息表 -3. 响应蓝色兄弟"ok" -4. 异步消息消费: +2. 更新订单状态为「待通知」(250),记录核销时间 +3. 立即响应蓝色兄弟"ok"(快速响应,避免超时) +4. 异步处理: - 调用邮储服务完成接口 - 成功:更新订单状态为「已完成」(300) - - 失败:保留状态,等待重试 + - 失败:保留状态250,等待重试机制处理 ``` +**说明**:不使用本地事务,通过重试+补偿+对账三重机制保证最终一致性。 + **机制二:消息重试策略** | 重试次数 | 间隔时间 | 累计时间 |