post-bank-point-mall/docs/sequence-diagrams.puml

484 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@startuml PSBC_Point_Service
skinparam sequenceMessageAlign center
skinparam responseMessageBelowArrow true
skinparam ParticipantPadding 10
skinparam BoxPadding 10
title 邮储银行幸福点权益服务 - 完整业务流程时序图
' ========== 参与者定义 ==========
actor "客户" as Customer
participant "手机银行/\n电话银行" as MobileBank
participant "CRM零售" as CRM
participant "渠道二期" as Channel2
participant "ESB" as ESB
participant "个人综合\n积分系统" as PointSystem
participant "服务开放\n平台" as OpenPlatform
participant "服务商系统" as ServiceProvider
database "定时任务" as Scheduler
database "对账文件" as ReconFile
note over PointSystem
权益服务状态码说明
----
100 - 服务未预约
200 - 服务已预约
300 - 服务已完成
400 - 服务已取消
500 - 服务已过期
end note
' ==================== 流程1: 服务兑换流程 ====================
== 流程1: 服务兑换流程 ==
note over Customer, PointSystem
业务说明: 客户通过渠道兑换权益服务,扣除幸福点,获取权益码
前置条件: 客户为高端客户(AUM>=50W)
end note
group 链路A: 手机银行/电话银行渠道
Customer -> MobileBank: 1.选择权益服务发起兑换
activate MobileBank
MobileBank -> Channel2: 2.调用渠道二期转发请求
activate Channel2
Channel2 -> ESB: 3.转发至ESB总线
activate ESB
ESB -> PointSystem: 4.调用积分系统兑换接口
activate PointSystem
PointSystem -> PointSystem: 5.校验客户幸福点余额
PointSystem -> PointSystem: 6.扣除客户幸福点
PointSystem -> PointSystem: 7.状态:未预约(100)
PointSystem --> ESB: 8.返回兑换结果
deactivate PointSystem
ESB --> Channel2: 9.返回结果
deactivate ESB
Channel2 --> MobileBank: 10.返回结果
deactivate Channel2
MobileBank --> Customer: 11.显示兑换成功
deactivate MobileBank
end
group 链路B: CRM零售渠道(不经过渠道二期)
Customer -> CRM: 1.理财经理为客户发起兑换
activate CRM
CRM -> ESB: 2.直接调用ESB总线
activate ESB
ESB -> PointSystem: 3.调用积分系统兑换接口
activate PointSystem
PointSystem -> PointSystem: 4.校验客户幸福点余额
PointSystem -> PointSystem: 5.扣除客户幸福点
PointSystem -> PointSystem: 6.状态:未预约(100)
PointSystem --> ESB: 7.返回兑换结果
deactivate PointSystem
ESB --> CRM: 8.返回结果
deactivate ESB
CRM -> CRM: 9.生成二维码供客户扫描
CRM --> Customer: 10.展示二维码
deactivate CRM
end
' ==================== 流程2: 服务预约使用流程 ====================
== 流程2: 服务预约使用流程 ==
note over Customer, ServiceProvider
业务说明: 客户使用权益码预约服务商提供的服务
关键规则: 权益码20分钟内有效超时需重新生成
end note
group 手机银行渠道预约
Customer -> MobileBank: 1.进入权益使用页面
activate MobileBank
MobileBank -> PointSystem: 2.调用积分系统生成服务使用链接
activate PointSystem
PointSystem -> PointSystem: 3.生成加密链接\n【权益码+服务类型AES加密】\n【有效期20分钟】
PointSystem --> MobileBank: 4.返回加密链接
deactivate PointSystem
MobileBank --> Customer: 5.跳转服务商页面(携带加密参数)
deactivate MobileBank
end
group CRM零售渠道预约
Customer -> CRM: 1.理财经理为客户发起预约
activate CRM
CRM -> PointSystem: 2.调用积分系统生成预约链接
activate PointSystem
PointSystem -> PointSystem: 3.生成加密链接\n【权益码+服务类型AES加密】\n【有效期20分钟】
PointSystem --> CRM: 4.返回加密链接
deactivate PointSystem
CRM -> CRM: 5.将链接转成二维码图片
CRM --> Customer: 6.展示二维码供客户扫描
deactivate CRM
end
group 服务商侧处理
Customer -> ServiceProvider: 7.点击链接/扫码进入服务商页面\n【request字段携带加密数据】
activate ServiceProvider
ServiceProvider -> ServiceProvider: 8.AES解密request字段
ServiceProvider -> ServiceProvider: 9.获取权益码、服务类型参数
Customer -> ServiceProvider: 10.客户点击"使用"按钮
ServiceProvider -> OpenPlatform: 11.调用服开平台预约接口
activate OpenPlatform
OpenPlatform -> ESB: 12.转发预约请求
activate ESB
ESB -> PointSystem: 13.调用积分系统预约接口
activate PointSystem
alt 20分钟内完成预约
PointSystem -> PointSystem: 14.校验权益码有效性
PointSystem -> PointSystem: 15.更新订单状态\n未预约(100)→已预约(200)
PointSystem --> ESB: 16.返回预约成功
ESB --> OpenPlatform: 17.返回成功
OpenPlatform --> ServiceProvider: 18.返回预约成功
ServiceProvider --> Customer: 19.显示预约成功
else 超过20分钟权益码失效
PointSystem --> ESB: 权益码已失效
ESB --> OpenPlatform: 返回失败
OpenPlatform --> ServiceProvider: 返回失败
alt 手机银行/电话银行渠道
ServiceProvider --> Customer: 提示"当前页面停留时间过长,\n请您重新进入该页面"
else CRM渠道
ServiceProvider --> Customer: 提示"二维码20分钟内有效\n现已超时失效\n请联系理财经理重新生成二维码"
end
note right: 超时后需重新走流程1-6\n生成新的20分钟有效权益码
end
deactivate PointSystem
deactivate ESB
deactivate OpenPlatform
deactivate ServiceProvider
end
' ==================== 流程3: 服务取消流程(已预约) ====================
== 流程3: 服务取消流程(已预约) ==
note over Customer, ServiceProvider
业务说明: 客户取消已预约的服务
关键规则: 取消前需查询是否有过期幸福点并提示客户
状态变更: 已预约(200) → 已取消(400)
end note
Customer -> MobileBank: 1.发起服务取消
activate MobileBank
MobileBank -> PointSystem: 2.调用积分系统生成取消链接
activate PointSystem
PointSystem -> PointSystem: 3.生成加密链接\n【权益码+服务类型AES加密放入request】
PointSystem --> MobileBank: 4.返回加密链接
deactivate PointSystem
MobileBank --> Customer: 5.跳转服务商取消页面
deactivate MobileBank
Customer -> ServiceProvider: 6.进入服务商取消页面
activate ServiceProvider
ServiceProvider -> ServiceProvider: 7.AES解密request字段\n获取权益码、服务类型
ServiceProvider -> OpenPlatform: 8.查询订单过期幸福点情况
activate OpenPlatform
OpenPlatform -> ESB: 9.转发查询请求
activate ESB
ESB -> PointSystem: 10.查询订单幸福点过期情况
activate PointSystem
PointSystem --> ESB: 11.返回过期幸福点信息
deactivate PointSystem
ESB --> OpenPlatform: 12.返回查询结果
deactivate ESB
OpenPlatform --> ServiceProvider: 13.返回过期信息
deactivate OpenPlatform
alt 存在过期幸福点
ServiceProvider --> Customer: 14.提示"存在已过期幸福点,\n取消后只退还未过期部分\n是否继续取消"
alt 客户放弃取消
Customer -> ServiceProvider: 放弃取消
ServiceProvider --> Customer: 返回服务详情页
else 客户坚持取消
Customer -> ServiceProvider: 确认取消
ServiceProvider -> OpenPlatform: 15.调用积分系统取消接口
activate OpenPlatform
OpenPlatform -> ESB: 16.转发取消请求
activate ESB
ESB -> PointSystem: 17.调用取消接口
activate PointSystem
PointSystem -> PointSystem: 18.返还未过期幸福点给客户
PointSystem -> PointSystem: 19.更新订单状态\n已预约(200)→已取消(400)
PointSystem --> ESB: 20.返回取消成功
deactivate PointSystem
ESB --> OpenPlatform: 21.返回结果
deactivate ESB
OpenPlatform --> ServiceProvider: 22.返回取消成功
deactivate OpenPlatform
ServiceProvider --> Customer: 23.显示取消成功\n已退还XX幸福点
end
else 不存在过期幸福点
ServiceProvider -> OpenPlatform: 14.直接调用取消接口
activate OpenPlatform
OpenPlatform -> ESB: 15.转发取消请求
activate ESB
ESB -> PointSystem: 16.调用取消接口
activate PointSystem
PointSystem -> PointSystem: 17.返还全部幸福点给客户
PointSystem -> PointSystem: 18.更新订单状态\n已预约(200)→已取消(400)
PointSystem --> ESB: 19.返回取消成功
deactivate PointSystem
ESB --> OpenPlatform: 20.返回结果
deactivate ESB
OpenPlatform --> ServiceProvider: 21.返回取消成功
deactivate OpenPlatform
ServiceProvider --> Customer: 22.显示取消成功\n已退还全部幸福点
end
deactivate ServiceProvider
' ==================== 流程4: 服务退还流程(未预约使用) - 行内实现 ====================
== 流程4: 服务退还流程(未预约使用) 【行内实现】 ==
note over Customer, PointSystem
业务说明: 客户退还未预约使用的权益服务
关键规则: 存在过期幸福点时只退还未过期部分
状态变更: 未预约(100) → 已取消(400)
----
【行内实现】不经过服务商,直接在手机银行/CRM完成
end note
Customer -> MobileBank: 1.发起服务退还申请
activate MobileBank
MobileBank -> PointSystem: 2.查询订单是否有过期幸福点
activate PointSystem
PointSystem --> MobileBank: 3.返回过期幸福点信息
deactivate PointSystem
alt 存在过期幸福点
MobileBank --> Customer: 4.提示"存在已过期幸福点XX\n只能退还未过期幸福点YY\n是否继续"
alt 客户确认退还
Customer -> MobileBank: 确认退还
else 客户取消操作
Customer -> MobileBank: 取消操作
MobileBank --> Customer: 返回服务详情页
end
end
MobileBank -> PointSystem: 5.调用积分系统退还接口
activate PointSystem
PointSystem -> PointSystem: 6.退还幸福点给客户\n(只退还未过期部分)
PointSystem -> PointSystem: 7.更新订单状态\n未预约(100)→已取消(400)
PointSystem --> MobileBank: 8.返回退还成功(退还数量)
deactivate PointSystem
MobileBank --> Customer: 9.显示退还成功\n已退还XX幸福点
deactivate MobileBank
' ==================== 流程5: 服务完成流程 ====================
== 流程5: 服务完成流程 ==
note over ServiceProvider, PointSystem
业务说明: 服务商完成服务后通知银行系统
关键规则:
1. 服务完成状态更新要求T+2日时效
2. 完成状态不支持取消,取消状态不支持完成
状态变更: 已预约(200) → 已完成(300)
end note
ServiceProvider -> ServiceProvider: 1.服务商为客户完成服务
activate ServiceProvider
ServiceProvider -> OpenPlatform: 2.后台调用服开平台\n请求服务完成
activate OpenPlatform
OpenPlatform -> ESB: 3.转发完成请求
activate ESB
ESB -> PointSystem: 4.调用积分系统服务完成接口
activate PointSystem
alt 订单状态为已预约(200)
PointSystem -> PointSystem: 5.校验订单状态
PointSystem -> PointSystem: 6.更新订单状态\n已预约(200)→已完成(300)
PointSystem --> ESB: 7.返回完成成功
else 订单状态为已取消(400)
PointSystem --> ESB: 返回失败\n"订单已取消,不支持完成操作"
else 订单状态为已完成(300)
PointSystem --> ESB: 返回失败\n"订单已完成,请勿重复操作"
end
deactivate PointSystem
ESB --> OpenPlatform: 8.返回结果
deactivate ESB
OpenPlatform --> ServiceProvider: 9.返回完成结果
deactivate OpenPlatform
ServiceProvider -> ServiceProvider: 10.记录完成状态
deactivate ServiceProvider
note right
重要提醒
----
1. 服务完成后订单进入对账阶段
2. 完成状态不可逆,无法取消
3. 需在T+2日内完成状态更新
end note
' ==================== 流程6: 服务兑换过期处理流程 ====================
== 流程6: 服务兑换过期处理流程 ==
note over Scheduler, PointSystem
业务说明: 系统自动处理券码已过期的订单
关键规则:
1. 券码过期状态由上游蓝色兄弟系统定义
2. 定时任务扫描券码状态为已过期(4)的订单
3. 只返还未过期的幸福点
4. 服务一旦预约,权益码永久有效(不会过期)
状态变更: 未预约(100) → 已过期(500)
end note
Scheduler -> Scheduler: 1.定时任务触发\n(检测券码状态为已过期的订单)
activate Scheduler
Scheduler -> PointSystem: 2.扫描券码状态为已过期(4)的订单
activate PointSystem
PointSystem -> PointSystem: 3.查询券码状态为已过期(4)\n且订单状态为未预约(100)的订单
loop 遍历每笔过期订单
PointSystem -> PointSystem: 4.判断订单幸福点过期情况
alt 存在幸福点已过期
PointSystem -> PointSystem: 5.计算未过期幸福点数量
PointSystem -> PointSystem: 6.返还未过期幸福点给客户
PointSystem -> PointSystem: 7.更新订单状态\n未预约(100)→已过期(500)
PointSystem -> PointSystem: 8.记录已过期幸福点数量(不退还)
else 幸福点全部未过期
PointSystem -> PointSystem: 5.返还全部幸福点给客户
PointSystem -> PointSystem: 6.更新订单状态\n未预约(100)→已过期(500)
end
end
PointSystem --> Scheduler: 9.返回处理结果
deactivate PointSystem
Scheduler -> Scheduler: 10.记录处理日志
deactivate Scheduler
note right
特别说明
----
服务一旦预约(状态200),权益码永久有效
券码过期状态由上游蓝色兄弟系统定义
过期处理通过定时任务扫描券码状态触发
end note
' ==================== 流程7: 服务对账流程 ====================
== 流程7: 服务对账流程 ==
note over PointSystem, ServiceProvider
业务说明: 每月生成对账文件供服务商下载核对
规则:
1. 每月3号生成上月对账文件
2. 只包含服务完成(300)状态的订单
示例: 服务完成时间202512210000 → 对账月份2025年12月 → 2026年1月3日推送
end note
Scheduler -> Scheduler: 1.每月3号定时任务触发
activate Scheduler
Scheduler -> PointSystem: 2.触发生成对账文件
activate PointSystem
PointSystem -> PointSystem: 3.筛选上月服务完成(300)\n状态的权益订单
PointSystem -> PointSystem: 4.汇总订单数据\n(权益码、服务类型、完成时间、金额等)
PointSystem -> ReconFile: 5.生成对账文件
activate ReconFile
PointSystem --> Scheduler: 6.返回生成成功
deactivate PointSystem
deactivate Scheduler
note over ReconFile: 对账文件已生成\n等待服务商下载
ServiceProvider -> OpenPlatform: 7.调用服开查询文件接口
activate ServiceProvider
activate OpenPlatform
OpenPlatform -> ReconFile: 8.查询对账文件列表
ReconFile --> OpenPlatform: 9.返回文件列表\n(文件名、生成时间、文件大小)
OpenPlatform --> ServiceProvider: 10.返回文件列表
deactivate OpenPlatform
ServiceProvider -> OpenPlatform: 11.调用文件下载接口\n(指定文件名)
activate OpenPlatform
OpenPlatform -> ReconFile: 12.下载指定对账文件
ReconFile --> OpenPlatform: 13.返回文件内容
deactivate ReconFile
OpenPlatform --> ServiceProvider: 14.返回对账文件
deactivate OpenPlatform
ServiceProvider -> ServiceProvider: 15.解析对账文件
ServiceProvider -> ServiceProvider: 16.与本地订单数据核对
ServiceProvider -> ServiceProvider: 17.生成对账结果报告
deactivate ServiceProvider
note right
对账文件内容
----
- 权益码
- 服务类型
- 服务完成时间
- 结算金额
- 客户信息(脱敏)
end note
@enduml