mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 02:06:16 +00:00
97 lines
3.1 KiB
Go
97 lines
3.1 KiB
Go
package data
|
|
|
|
import (
|
|
"github.com/GMWalletApp/epusdt/model/dao"
|
|
"github.com/GMWalletApp/epusdt/model/mdb"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/clause"
|
|
)
|
|
|
|
func GetProviderOrderByTradeIDAndProvider(tradeID string, provider string) (*mdb.ProviderOrder, error) {
|
|
row := new(mdb.ProviderOrder)
|
|
err := dao.Mdb.Model(row).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Limit(1).
|
|
Find(row).Error
|
|
return row, err
|
|
}
|
|
|
|
func CreateProviderOrderWithTransaction(tx *gorm.DB, row *mdb.ProviderOrder) error {
|
|
return tx.Model(row).Create(row).Error
|
|
}
|
|
|
|
func UpsertProviderOrderCreatingWithTransaction(tx *gorm.DB, row *mdb.ProviderOrder) error {
|
|
return tx.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "trade_id"}, {Name: "provider"}},
|
|
DoUpdates: clause.AssignmentColumns([]string{
|
|
"provider_order_id",
|
|
"pay_url",
|
|
"amount",
|
|
"coin",
|
|
"status",
|
|
"notify_raw",
|
|
"updated_at",
|
|
}),
|
|
}).Create(row).Error
|
|
}
|
|
|
|
func UpdateProviderOrderCreated(tradeID string, provider string, providerOrderID string, payURL string) error {
|
|
return UpdateProviderOrderCreatedWithTransaction(dao.Mdb, tradeID, provider, providerOrderID, payURL)
|
|
}
|
|
|
|
func UpdateProviderOrderCreatedWithTransaction(tx *gorm.DB, tradeID string, provider string, providerOrderID string, payURL string) error {
|
|
return tx.Model(&mdb.ProviderOrder{}).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Updates(map[string]interface{}{
|
|
"provider_order_id": providerOrderID,
|
|
"pay_url": payURL,
|
|
"status": mdb.ProviderOrderStatusPending,
|
|
}).Error
|
|
}
|
|
|
|
func MarkProviderOrderFailed(tradeID string, provider string) error {
|
|
return dao.Mdb.Model(&mdb.ProviderOrder{}).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Update("status", mdb.ProviderOrderStatusFailed).Error
|
|
}
|
|
|
|
func SaveProviderOrderNotify(tradeID string, provider string, notifyRaw string) error {
|
|
return dao.Mdb.Model(&mdb.ProviderOrder{}).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Update("notify_raw", notifyRaw).Error
|
|
}
|
|
|
|
func MarkProviderOrderPaid(tradeID string, provider string, notifyRaw string) error {
|
|
return dao.Mdb.Model(&mdb.ProviderOrder{}).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Updates(map[string]interface{}{
|
|
"status": mdb.ProviderOrderStatusPaid,
|
|
"notify_raw": notifyRaw,
|
|
}).Error
|
|
}
|
|
|
|
func MarkProviderOrderExpired(tradeID string, provider string) error {
|
|
return dao.Mdb.Model(&mdb.ProviderOrder{}).
|
|
Where("trade_id = ?", tradeID).
|
|
Where("provider = ?", provider).
|
|
Where("status IN ?", []string{mdb.ProviderOrderStatusCreating, mdb.ProviderOrderStatusPending}).
|
|
Update("status", mdb.ProviderOrderStatusExpired).Error
|
|
}
|
|
|
|
func GetSubOrderByTokenPayProvider(parentTradeID string, token string, payProvider string) (*mdb.Orders, error) {
|
|
order := new(mdb.Orders)
|
|
err := dao.Mdb.Model(order).
|
|
Where("parent_trade_id = ?", parentTradeID).
|
|
Where("token = ?", token).
|
|
Where("pay_provider = ?", payProvider).
|
|
Where("status = ?", mdb.StatusWaitPay).
|
|
Limit(1).
|
|
Find(order).Error
|
|
return order, err
|
|
}
|