78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
package entity
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type Order struct {
|
|
ID int64 `gorm:"primaryKey;autoIncrement;column:id"`
|
|
RefID string `gorm:"type:varchar;column:ref_id"`
|
|
PartnerID int64 `gorm:"type:int;column:partner_id"`
|
|
Status string `gorm:"type:varchar;column:status"`
|
|
Amount float64 `gorm:"type:numeric;not null;column:amount"`
|
|
CreatedAt time.Time `gorm:"autoCreateTime;column:created_at"`
|
|
UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at"`
|
|
CreatedBy int64 `gorm:"type:int;column:created_by"`
|
|
PaymentType string `gorm:"type:varchar;column:payment_type"`
|
|
UpdatedBy int64 `gorm:"type:int;column:updated_by"`
|
|
OrderItems []OrderItem `gorm:"foreignKey:OrderID;constraint:OnDelete:CASCADE;"`
|
|
}
|
|
|
|
type OrderResponse struct {
|
|
Order *Order
|
|
Token string
|
|
}
|
|
|
|
type ExecuteOrderResponse struct {
|
|
Order *Order
|
|
PaymentToken string
|
|
RedirectURL string
|
|
}
|
|
|
|
func (Order) TableName() string {
|
|
return "orders"
|
|
}
|
|
|
|
type OrderItem struct {
|
|
ID int64 `gorm:"primaryKey;autoIncrement;column:order_item_id"`
|
|
OrderID int64 `gorm:"type:int;column:order_id"`
|
|
ItemID int64 `gorm:"type:int;column:item_id"`
|
|
ItemType string `gorm:"type:varchar;column:item_type"`
|
|
Price float64 `gorm:"type:numeric;not null;column:price"`
|
|
Quantity int64 `gorm:"type:int;column:qty"`
|
|
CreatedAt time.Time `gorm:"autoCreateTime;column:created_at"`
|
|
UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at"`
|
|
CreatedBy int64 `gorm:"type:int;column:created_by"`
|
|
UpdatedBy int64 `gorm:"type:int;column:updated_by"`
|
|
}
|
|
|
|
func (OrderItem) TableName() string {
|
|
return "order_items"
|
|
}
|
|
|
|
type OrderRequest struct {
|
|
CreatedBy int64
|
|
PartnerID int64 `json:"partner_id" validate:"required"`
|
|
PaymentMethod string `json:"payment_method" validate:"required"`
|
|
OrderItems []OrderItemRequest `json:"order_items" validate:"required,dive"`
|
|
}
|
|
|
|
type OrderItemRequest struct {
|
|
ProductID int64 `json:"product_id" validate:"required"`
|
|
Quantity int64 `json:"quantity" validate:"required"`
|
|
}
|
|
|
|
type OrderExecuteRequest struct {
|
|
CreatedBy int64
|
|
PartnerID int64
|
|
Token string
|
|
}
|
|
|
|
func (o *Order) SetExecutePaymentStatus() {
|
|
if o.PaymentType == "CASH" {
|
|
o.Status = "PAID"
|
|
return
|
|
}
|
|
o.Status = "PENDING"
|
|
}
|