修复支付取消与成功统计
This commit is contained in:
@@ -219,6 +219,9 @@ func (j *Job) handlePendingPaymentTimeout(ctx context.Context, now time.Time, cf
|
||||
order.HandoffStatus = "cancelled"
|
||||
listing.InTransaction = false
|
||||
orderID := order.ID
|
||||
if err := closePendingOrderPayments(tx, order.ID, "order_timeout"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := notification.Append(tx, notification.Entry{
|
||||
UserID: order.RenterID,
|
||||
Type: "timeout",
|
||||
@@ -249,6 +252,23 @@ func (j *Job) handlePendingPaymentTimeout(ctx context.Context, now time.Time, cf
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// closePendingOrderPayments 在系统自动取消订单时同步关闭未完成支付单,保持订单和支付流水状态一致。
|
||||
func closePendingOrderPayments(tx *gorm.DB, orderID uint64, source string) error {
|
||||
raw, err := json.Marshal(map[string]string{
|
||||
"source": source,
|
||||
"reason": "订单已取消,关闭未完成支付单",
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Model(&model.PaymentOrder{}).
|
||||
Where("order_id = ? AND biz_type = ? AND status IN ?", orderID, "order_pay", []string{"created", "paying"}).
|
||||
Updates(map[string]any{
|
||||
"status": "closed",
|
||||
"raw_response": datatypes.JSON(raw),
|
||||
}).Error
|
||||
}
|
||||
|
||||
func (j *Job) handleOwnerSubmitTimeout(ctx context.Context, now time.Time, cfg thresholds) (int, error) {
|
||||
if cfg.OwnerSubmitTimeoutMinutes <= 0 {
|
||||
return 0, nil
|
||||
|
||||
Reference in New Issue
Block a user