ref 流程重构

This commit is contained in:
xxm1995
2024-04-23 20:56:07 +08:00
parent a62f441195
commit 6b4ac780d3
83 changed files with 364 additions and 1535 deletions

View File

@@ -1,58 +0,0 @@
@startuml
map PayOrder {
名称 => 支付订单
id => 主键
}
map PayChannelOrder {
名称 => 通道支付订单
paymentId => 支付id
}
map PayOrderExtra {
名称 => 支付订单扩展
id => 主键
}
map RefundOrder {
名称 => 退款订单
id => 主键
paymentId => 支付id
}
map RefundOrderExtra {
名称 => 退款订单扩展
id => 主键
}
map RefundChannelOrder {
名称 => 通道退款订单
refundId => 退款id
payChannelId => 通道支付订单id
}
map AllocationOrder {
名称 => 分账订单
paymentId => 支付id
}
map AllocationOrderDetail {
名称 => 分账订单明细
allocationId => 分账id
}
'支付订单关联
PayOrder::id <-- PayOrderExtra::id: 一对一关联
PayOrder::id <-- PayChannelOrder::paymentId: 多对一关联
'退款订单
RefundOrder::id <-- RefundOrderExtra::id: 一对一关联
RefundOrder::id <-- RefundChannelOrder::refundId: 多对一关联
RefundOrder::paymentId <-- PayOrder::id: 多对一关联
RefundChannelOrder::payChannelId --> PayChannelOrder::id: 多对一关联
'分账订单
AllocationOrder::paymentId --> PayOrder::id: 多对一关联
AllocationOrder::id --> AllocationOrderDetail::allocationId: 多对一关联
@enduml

View File

@@ -1,19 +0,0 @@
@startuml
progress : 支付中
success : 成功
close : 支付关闭
refunding : 退款中
partial_refund : 部分退款
refunded : 全部退款
fail : 失败
[*] --> progress
progress --> success
progress --> close
progress --> fail
success --> refunding
refunding --> partial_refund
refunding --> refunded
@enduml

View File

@@ -1,45 +0,0 @@
@startuml
object PayOrder
object RefundOrder
map CallbackRecord{
名称 => 回调记录
orderId => 订单Id
}
map CloseRecord{
名称 => 支付订单关闭记录
paymentId => 支付id
}
map RepairRecord{
名称 => 修复记录
orderId => 订单Id(支付/退款)
repairNo => 修复号(不唯一)
}
map SyncRecord{
名称 => 同步记录
orderId => 订单Id(支付/退款)
repairOrderNo => 修复号
}
'回调记录
CallbackRecord::orderId --> PayOrder::id: 多对一关联
CallbackRecord::orderId --> RefundOrder::id: 多对一关联
'支付订单关闭记录
CloseRecord::paymentId --> PayOrder::id: 一对一关联
'修复记录
RepairRecord::orderId --> PayOrder::id: 多对一关联
RepairRecord::orderId --> RefundOrder::id: 多对一关联
'同步记录
SyncRecord::orderId --> PayOrder::id: 多对一关联
SyncRecord::orderId --> RefundOrder::id: 多对一关联
SyncRecord::repairNo --> RepairRecord::repairNo: 一对一关联
@enduml

View File

@@ -1,13 +0,0 @@
@startuml
progress : 退款中
success : 成功
close : 关闭
fail : 失败
[*] --> progress
progress --> success
progress --> close
progress --> fail
@enduml

View File

@@ -1,17 +0,0 @@
@startuml
autonumber
actor 客户 as khd
participant 控制器 as kzq
participant 服务类 as fwl
participant DAO as dao
khd -> kzq: 发送请求
skinparam responseMessageBelowArrow true
kzq --> fwl ++: 组装参数
fwl --> kzq ++: 返回功能
kzq --> fwl --: 继续查询
kzq --> kzq: 继续查询
fwl --> dao ++ : 数据查询
dao --> fwl: 查询
@enduml

View File

@@ -1,17 +0,0 @@
@startuml
autonumber
actor 客户 as khd
participant 控制器 as kzq
participant 服务类 as fwl
participant DAO as dao
khd -> kzq: 发送请求
skinparam responseMessageBelowArrow true
kzq --> fwl ++: 组装参数
fwl --> kzq ++: 返回功能
kzq --> fwl --: 继续查询
kzq --> kzq: 继续查询
fwl --> dao ++ : 数据查询
dao --> fwl: 查询
@enduml

View File

@@ -1,42 +0,0 @@
@startuml
autonumber
skinparam responseMessageBelowArrow true
title 支付代码时序图-以支付宝支付为例
actor 客户端 as Client
participant PayService
participant PayOrderService
participant PayAssistService
participant AliPayStrategy
participant PayStrategyFactory
participant AliPayService
participant ClientNoticeService
Client -> PayService: 发送请求
PayService --> PayAssistService: 校验支付状态
PayService --> PayAssistService: 初始化上下文
PayService -> PayService: 调用首次支付方法
PayService -> PayAssistService: 创建支付订单和扩展记录并保存
PayService <- PayAssistService: 返回支付订单对象
PayService -> PayService: 调用支付方法进行发起支付
PayService -> PayStrategyFactory: 通过工厂生成对应的策略组
PayService <- PayStrategyFactory: 返回支付策略组
PayService -> AliPayStrategy: 执行支付前处理动作
AliPayStrategy --> AliPayStrategy: 支付宝参数验证和反序列化通道支付参数
AliPayStrategy -> AliPayService: 检查并获取支付宝配置, 同时校验支付相关信息
AliPayStrategy <- AliPayService: 返回检查结果和支付配置
PayService <- AliPayStrategy: 支付前处理完成
AliPayStrategy -> AliPayService: 调用网关接口进行进行支付
AliPayService -> 支付宝支付网关: 根据情况调用对应类型的支付
AliPayService <- 支付宝支付网关: 返回支付调用结果
AliPayStrategy <- AliPayService: 返回支付结构体或者支付结果(写到现成变量中)
PayService <- AliPayStrategy: 支付调用完成
PayService -> AliPayStrategy: 进行支付调用成功后处理
AliPayStrategy --> ChannelOrderService: 保存通道支付订单
AliPayStrategy --> ChannelOrderService: 如果已经支付完成, 保存流水记录
PayService <- AliPayStrategy: 处理完成
PayService --> ClientNoticeService: 如果支付成功, 发送通知
Client <- PayService: 返回支付结果
@enduml

View File

@@ -1,11 +0,0 @@
@startuml
'https://plantuml.com/activity-diagram-beta
start
:发起支付;
:基础参数校验;
switch (订单类型?)
stop
@enduml

View File

@@ -1,64 +0,0 @@
@startuml
title 对账代码时序图-以支付宝对账为例
skinparam responseMessageBelowArrow true
actor 客户端 as Client
participant ReconcileService
participant ReconcileOrderService
participant ReconcileStrategy
participant AliPayReconcileService
participant ReconcileDiffService
participant ReconcileOrderManager
participant ReconcileContext
participant ReconcileDetailManager
participant ReconcileStrategyFactory
participant AliGateway as 支付宝网关
autonumber
Client -> ReconcileService: 发起对账请求
group 1. 创建对账订单
autonumber 1
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
ReconcileService -> ReconcileStrategy: 生成批次号
ReconcileService <- ReconcileStrategy: 返回批次号
ReconcileService -> ReconcileService: 创建对账订单
ReconcileService -> ReconcileOrderManager: 保存对账订单
ReconcileService <- ReconcileOrderManager: 返回对账订单
end
group 2. 下载对账单并进行保存
autonumber 1
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
ReconcileService -> ReconcileStrategy: 下载对账单, 并进行解析进行保存
ReconcileStrategy -> AliPayReconcileService: 发起对账单下载请求,获取对账单下载地址
AliPayReconcileService -> AliGateway: 发起对账单下载请求,获取对账单下载地址
AliPayReconcileService <- AliGateway: 返回对账单下载地址
AliPayReconcileService -> AliGateway: 下载对账单
AliPayReconcileService <- AliGateway: 返回对账单内容
AliPayReconcileService -> AliPayReconcileService: 解析对账单, 同时生成通用对账单记录
AliPayReconcileService --> ReconcileContext: 将解析后的通用对账单记录放到到上下文
ReconcileStrategy <- AliPayReconcileService: 处理结束
ReconcileService <- ReconcileStrategy: 处理结束
ReconcileService <- ReconcileContext: 获取通用对账单记录
ReconcileService --> reconcileDetailManager: 保存明细记录
end
group 3. 对账单比对
autonumber 1
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
ReconcileService <--> ReconcileStrategy: 初始对账策略类
ReconcileService <- ReconcileStrategy: 获取本地和网关订单数据
ReconcileService -> ReconcileService: 比对本地和网关订单差异
ReconcileService --> ReconcileDiffService: 保存差异记录
end
autonumber 2
Client <- ReconcileService: 返回对账结束
@enduml

View File

@@ -1,76 +0,0 @@
@startuml
autonumber
skinparam responseMessageBelowArrow true
title 退款代码时序图-以支付宝退款全部退款为例
actor 客户端 as Client
participant RefundService
participant RefundStrategyFactory
participant AliRefundStrategy
participant RefundAssistService
participant AlipayConfigService
participant AliRefundService
participant PayOrderService
participant PayChannelOrderManager
participant PayChannelOrderService
participant AliRecordService
participant ClientNoticeService
participant 支付宝网关 as AlliGateway
Client -> RefundService: 发起退款请求
group 1. 退款发起前准备
autonumber 1
RefundService -> RefundService: 使用适配方法发起全部退款
RefundService <- RefundAssistService: 获取支付订单
RefundService --> RefundAssistService: 检查退款参数, 同时补充一些数据
RefundService --> RefundAssistService: 上下文初始化
RefundService -> RefundStrategyFactory: 通过工厂生成对应的策略组
RefundService <- RefundStrategyFactory: 返回支付策略组
RefundService --> AliRefundStrategy: 初始化退款策略的参数
AliRefundStrategy --> AliRefundStrategy: 执行初始化退款策略的参数
RefundService --> AliRefundStrategy: 退款前校验操作
RefundService --> AliRefundStrategy: 生成通道退款订单对象
RefundService --> PayChannelOrderManager: 预扣支付相关订单要退款的金额并进行更新
RefundService --> PayOrderService: 更新支付订单退款状态
RefundService --> RefundAssistService: 创建退款相关订单,并对数据进行持久化保存
end
group 2. 退款操作
autonumber 1
RefundService -> AliRefundStrategy: 退款前准备操作
AliRefundStrategy --> AlipayConfigService: 获取并初始化支付配置信息
RefundService <- AliRefundStrategy: 退款前准备结束
RefundService -> AliRefundStrategy: 执行退款策略
AliRefundStrategy -> AliRefundService : 执行退款操作
AliRefundService --> AlliGateway: 发送退款指令
AliRefundService -> AliRefundStrategy: 返回结果
RefundService <- AliRefundStrategy: 退款执行结束
end
group 3. 退款发起成功后操作
autonumber 1
RefundService -> AliRefundStrategy: 执行退款发起成功后操作
AliRefundStrategy --> AliRefundStrategy: 更新退款订单数据状态
AliRefundStrategy --> PayChannelOrderService: 更新支付通道订单中的状态属性
AliRefundStrategy --> AliRecordService: 如果退款完成, 保存流水记录
RefundService <- AliRefundStrategy: 执行完成
RefundService --> PayOrderService: 更新支付订单信息
RefundService --> RefundAssistService: 更新退款订单和相关通道退款订单
RefundService --> ClientNoticeService: 如果支付完成发送退款成功通知
end
autonumber 2
Client <- RefundService: 返回退款调用结果
@enduml