| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | package entities | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import ( | 
					
						
							|  |  |  |  | 	"time" | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	"github.com/google/uuid" | 
					
						
							|  |  |  |  | 	"github.com/shopspring/decimal" | 
					
						
							|  |  |  |  | 	"gorm.io/gorm" | 
					
						
							|  |  |  |  | ) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // WalletTransaction 钱包扣款记录 | 
					
						
							|  |  |  |  | // 记录API调用产生的扣款操作 | 
					
						
							|  |  |  |  | type WalletTransaction struct { | 
					
						
							|  |  |  |  | 	// 基础标识 | 
					
						
							|  |  |  |  | 	ID            string `gorm:"primaryKey;type:varchar(36)" json:"id" comment:"交易记录唯一标识"` | 
					
						
							|  |  |  |  | 	UserID        string `gorm:"type:varchar(36);not null;index" json:"user_id" comment:"扣款用户ID"` | 
					
						
							|  |  |  |  | 	ApiCallID     string `gorm:"type:varchar(64);not null;uniqueIndex" json:"api_call_id" comment:"关联API调用ID"` | 
					
						
							| 
									
										
										
										
											2025-09-12 01:15:09 +08:00
										 |  |  |  | 	TransactionID string `gorm:"type:varchar(36);not null;uniqueIndex" json:"transaction_id" comment:"交易ID"` | 
					
						
							| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | 	ProductID     string `gorm:"type:varchar(64);not null;index" json:"product_id" comment:"产品ID"` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 扣款信息 | 
					
						
							|  |  |  |  | 	Amount decimal.Decimal `gorm:"type:decimal(20,8);not null" json:"amount" comment:"扣款金额"` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 时间戳字段 | 
					
						
							|  |  |  |  | 	CreatedAt time.Time      `gorm:"autoCreateTime" json:"created_at" comment:"创建时间"` | 
					
						
							|  |  |  |  | 	UpdatedAt time.Time      `gorm:"autoUpdateTime" json:"updated_at" comment:"更新时间"` | 
					
						
							|  |  |  |  | 	DeletedAt gorm.DeletedAt `gorm:"index" json:"-" comment:"软删除时间"` | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // TableName 指定数据库表名 | 
					
						
							|  |  |  |  | func (WalletTransaction) TableName() string { | 
					
						
							|  |  |  |  | 	return "wallet_transactions" | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // BeforeCreate GORM钩子:创建前自动生成UUID | 
					
						
							|  |  |  |  | func (t *WalletTransaction) BeforeCreate(tx *gorm.DB) error { | 
					
						
							|  |  |  |  | 	if t.ID == "" { | 
					
						
							|  |  |  |  | 		t.ID = uuid.New().String() | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return nil | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // NewWalletTransaction 工厂方法 - 创建扣款记录 | 
					
						
							|  |  |  |  | func NewWalletTransaction(userID, apiCallID, transactionID, productID string, amount decimal.Decimal) *WalletTransaction { | 
					
						
							|  |  |  |  | 	return &WalletTransaction{ | 
					
						
							|  |  |  |  | 		UserID:        userID, | 
					
						
							|  |  |  |  | 		ApiCallID:     apiCallID, | 
					
						
							|  |  |  |  | 		TransactionID: transactionID, | 
					
						
							|  |  |  |  | 		ProductID:     productID, | 
					
						
							|  |  |  |  | 		Amount:        amount, | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } |