166 lines
8.2 KiB
Go
166 lines
8.2 KiB
Go
package usecase
|
|
|
|
import (
|
|
"app-cloudep-trade-service/internal/domain"
|
|
"context"
|
|
|
|
"github.com/shopspring/decimal"
|
|
)
|
|
|
|
type OrderUseCase interface {
|
|
// CreateOrder 建立訂單,不另外做 struct 直接用 model.Order
|
|
// 考量底層已經寫完,如有額外需求需要在這邊用轉的
|
|
CreateOrder(ctx context.Context, param CreateOrderReq) error
|
|
// CancelOrder 取消訂單
|
|
CancelOrder(ctx context.Context, param CancelOrderQuery) error
|
|
// DeleteOrder 刪除訂單(軟刪除)
|
|
DeleteOrder(ctx context.Context, param DeleteOrderQuery) error
|
|
// GetOrder 取得訂單資料
|
|
GetOrder(ctx context.Context, param GetOrderQuery) (*GetOrderResp, error)
|
|
// ListOrder 取得資料列表
|
|
ListOrder(ctx context.Context, param GetOrderListReq) (*ListOrderResp, error)
|
|
// ModifyOrderStatus 更新資料
|
|
ModifyOrderStatus(ctx context.Context, param *ModifyOrderQuery) error
|
|
// OrderStatusTimeout 訂單超時任務/cron/order-status/timeout
|
|
OrderStatusTimeout(ctx context.Context) error
|
|
}
|
|
|
|
// ModifyOrderQuery
|
|
// 0.建立訂單 1.建單失敗 2.審核中 3.付款中 4.已付款
|
|
// 5.已付款待轉帳 6.申訴中 7.交易完成
|
|
// 8.交易失敗 9.交易取消 10.交易異常 11.交易超時
|
|
|
|
type ModifyOrderQuery struct {
|
|
BusinessID string `json:"business_id" validate:"required"`
|
|
Status int64 `json:"status" validate:"required,oneof=2 3 4 5 6 7 8 11"`
|
|
}
|
|
|
|
// CancelOrderQuery 1.建單失敗 9.交易取消 10.交易異常
|
|
type CancelOrderQuery struct {
|
|
BusinessID string
|
|
Status domain.OrderStatus
|
|
}
|
|
|
|
// DeleteOrderQuery 刪除訂單(軟刪除)
|
|
type DeleteOrderQuery struct {
|
|
BusinessID string
|
|
}
|
|
|
|
// GetOrderQuery 取得訂單
|
|
type GetOrderQuery struct {
|
|
BusinessID string
|
|
}
|
|
|
|
type GetOrderResp struct {
|
|
BusinessID string // 訂單業務流水號
|
|
OrderType domain.OrderType `json:"order_type"` // 訂單類型
|
|
OrderStatus domain.OrderStatus `json:"order_status"` // 訂單狀態
|
|
Brand string `json:"brand"` // 下單平台
|
|
OrderUID string `json:"order_uid"` // 下單用戶 UID
|
|
ReferenceID string `json:"reference_id"` // 訂單來源
|
|
Count string `json:"count"` // 訂單數量 (decimal to string)
|
|
OrderFee string `json:"order_fee"` // 訂單手續費 (decimal to string)
|
|
Amount string `json:"amount"` // 單價 (decimal to string)
|
|
ReferenceBrand *string `json:"reference_brand,omitempty"` // 訂單來源平台
|
|
ReferenceUID *string `json:"reference_uid,omitempty"` // 訂單來源用戶 UID
|
|
WalletStatus *int64 `json:"wallet_status,omitempty"` // 交易金額狀態
|
|
ThreePartyStatus *int64 `json:"three_party_status,omitempty"` // 三方請求狀態
|
|
DirectionType *int64 `json:"direction_type,omitempty"` // 交易方向
|
|
CryptoType *string `json:"crypto_type,omitempty"` // 交易幣種
|
|
ThirdPartyFee *string `json:"third_party_fee,omitempty"` // 第三方手續費 (decimal to string)
|
|
CryptoToUsdtRate *string `json:"crypto_to_usdt_rate,omitempty"` // 交易幣種對 USDT 匯率 (decimal to string)
|
|
FiatToUsdRate *string `json:"fiat_to_usd_rate,omitempty"` // 法幣對 USD 匯率 (decimal to string)
|
|
FeeCryptoToUsdtRate *string `json:"fee_crypto_to_usdt_rate,omitempty"` // 手續費幣種對 USDT 匯率 (decimal to string)
|
|
UsdtToCryptoTypeRate *string `json:"usdt_to_crypto_type_rate,omitempty"` // USDT 對交易幣種匯率 (decimal to string)
|
|
PaymentFiat *string `json:"payment_fiat,omitempty"` // 支付法幣
|
|
PaymentUnitPrice *string `json:"payment_unit_price,omitempty"` // crypto 單價 (decimal to string)
|
|
PaymentTemplateID *string `json:"payment_template_id,omitempty"` // 支付方式配置 ID
|
|
OrderArrivalTime *int64 `json:"order_arrival_time,omitempty"` // 訂單到帳時間
|
|
OrderPaymentTime *int64 `json:"order_payment_time,omitempty"` // 訂單付款時間
|
|
UnpaidTimeoutSecond *int64 `json:"unpaid_timeout_second,omitempty"` // 支付期限秒數
|
|
ChainType *string `json:"chain_type,omitempty"` // 主網類型
|
|
TxHash *string `json:"tx_hash,omitempty,omitempty"` // 交易哈希
|
|
FromAddress *string `json:"from_address,omitempty,omitempty"` // 來源地址
|
|
ToAddress *string `json:"to_address,omitempty,omitempty"` // 目標地址
|
|
ChainFee *string `json:"chain_fee,omitempty"` // 鏈上交易手續費 (decimal to string)
|
|
ChainFeeCrypto *string `json:"chain_fee_crypto,omitempty"` // 鏈上手續費使用幣別
|
|
Memo *string `json:"memo,omitempty"` // 鏈上備註
|
|
OrderNote *string `json:"order_note,omitempty"` // 訂單交易備註
|
|
CreateTime int64 `json:"create_time,omitempty"` // 建立時間
|
|
UpdateTime int64 `json:"update_time,omitempty"` // 更新時間
|
|
}
|
|
|
|
type GetOrderListReq struct {
|
|
PageIndex int64
|
|
PageSize int64
|
|
|
|
ReferenceID string
|
|
ReferenceUID string
|
|
BusinessID string
|
|
UID string
|
|
OrderType domain.OrderType
|
|
DirectionType []int64
|
|
OrderStatus []int64
|
|
|
|
StartCreateTime int64
|
|
EndCreateTime int64
|
|
StartUpdateTime int64
|
|
EndUpdateTime int64
|
|
StartOrderArrivalTime int64
|
|
EndOrderArrivalTime int64
|
|
StartOrderPaymentTime int64
|
|
EndOrderPaymentTime int64
|
|
|
|
CryptoType string
|
|
TxHash string
|
|
}
|
|
|
|
type Pager struct {
|
|
Index int64
|
|
Size int64
|
|
Total int64
|
|
}
|
|
|
|
type ListOrderResp struct {
|
|
Data []*GetOrderResp `json:"data"` // 訂單列表
|
|
Page *Pager `json:"page"`
|
|
}
|
|
|
|
type CreateOrderReq struct {
|
|
BusinessID string
|
|
OrderType domain.OrderType // 訂單類型
|
|
OrderStatus domain.OrderStatus // 訂單狀態
|
|
Brand string // 下單平台
|
|
OrderUID string // 下單用戶 UID
|
|
ReferenceID string // 訂單來源
|
|
Count decimal.Decimal // 訂單數量
|
|
OrderFee decimal.Decimal // 訂單手續費
|
|
Amount decimal.Decimal // 單價
|
|
WalletStatus int64 // 交易金額狀態
|
|
DirectionType int64 // 交易方向
|
|
// 以上為必要欄位,下面是區塊鏈時才需要
|
|
ReferenceBrand *string // 訂單來源平台
|
|
ReferenceUID *string // 訂單來源用戶 UID
|
|
ThreePartyStatus *int64 // 三方請求狀態
|
|
CryptoType *string // 交易幣種
|
|
ThirdPartyFee *decimal.Decimal // 第三方手續費
|
|
CryptoToUSDTRate *decimal.Decimal // 加密貨幣對 USDT 匯率
|
|
FiatToUSDRate *decimal.Decimal // 法幣對 USD 匯率
|
|
FeeCryptoToUSDTRate *decimal.Decimal // 手續費加密貨幣對 USDT 匯率
|
|
USDTToCryptoTypeRate *decimal.Decimal // USDT 對加密貨幣匯率
|
|
PaymentFiat *string // 支付法幣
|
|
PaymentUnitPrice *decimal.Decimal // 加密貨幣單價
|
|
PaymentTemplateID *string // 支付方式配置 ID
|
|
OrderArrivalTime *int64 // 訂單到帳時間
|
|
OrderPaymentTime *int64 // 訂單付款時間
|
|
UnpaidTimeoutSecond *int64 // 支付期限秒數
|
|
ChainType *string // 主網類型
|
|
TxHash *string // 交易哈希
|
|
FromAddress *string // 來源地址
|
|
ToAddress *string // 目標地址
|
|
ChainFee *decimal.Decimal // 鏈上交易手續費
|
|
ChainFeeCrypto *string // 鏈上手續費使用幣別
|
|
Memo *string // 鏈上備註
|
|
OrderNote *string // 訂單交易備註
|
|
}
|