38 lines
2.4 KiB
Go
38 lines
2.4 KiB
Go
package entity
|
||
|
||
import (
|
||
"code.30cm.net/digimon/app-cloudep-wallet-service/pkg/domain/wallet"
|
||
"github.com/shopspring/decimal"
|
||
)
|
||
|
||
//graph TD
|
||
// A[使用者下單/轉帳/出金等行為] --> B[建立 Transaction 主交易紀錄]
|
||
// B --> C1[WalletTransaction:可用餘額 -100]
|
||
// B --> C2[WalletTransaction:凍結餘額 +100]
|
||
// C1 --> D1[錢包資料庫:更新可用餘額]
|
||
// C2 --> D2[錢包資料庫:更新凍結餘額]
|
||
|
||
// Transaction 表示一次錢包資金交易的紀錄
|
||
type Transaction struct {
|
||
ID int64 `gorm:"column:id"` // 資料表主鍵 ID
|
||
OrderID string `gorm:"column:order_id"` // 外部訂單編號(例如交易訂單編號)
|
||
TransactionID string `gorm:"column:transaction_id"` // 此筆資金交易的唯一識別碼
|
||
Brand string `gorm:"column:brand"` // 品牌或平台識別(用於多租戶區分)
|
||
UID string `gorm:"column:uid"` // 發起交易的用戶 UID
|
||
ToUID string `gorm:"column:to_uid"` // 接收方用戶 UID(如為轉帳類型)
|
||
Type wallet.TransactionType `gorm:"column:type"` // 資金異動類型(如充值、提領、轉帳等)
|
||
BusinessType int8 `gorm:"column:business_type"` // 業務類型(對應平台不同業務,例如系統轉帳、合約轉帳等)
|
||
Asset string `gorm:"column:asset"` // 幣種(或平台定義的資產名稱)
|
||
Amount decimal.Decimal `gorm:"column:amount"` // 異動金額(正負表示收入或支出)
|
||
Balance decimal.Decimal `gorm:"column:balance"` // 異動後錢包餘額
|
||
BeforeBalance decimal.Decimal `gorm:"column:before_balance"` // 異動前錢包餘額
|
||
Status bool `gorm:"column:status"` // 狀態(true 表示成功,false 表示失敗或未確認)
|
||
CreateAt int64 `gorm:"column:create_at;autoCreateTime"` // 建立時間(Unix timestamp)
|
||
DueTime int64 `gorm:"column:due_time"` // 到期時間(可用於未完成交易的失效邏輯)
|
||
}
|
||
|
||
// TableName 回傳對應的資料表名稱
|
||
func (t *Transaction) TableName() string {
|
||
return "transaction"
|
||
}
|