Files
cas_tt_cloud_backend/app/common/model/order_instance.go
2022-02-15 17:19:23 +08:00

89 lines
2.8 KiB
Go

package model
import "encoding/json"
type IOrderInstance interface {
}
// OrderInstance 订单数据模型
type OrderInstance struct {
Model
ModelTenant
UID uint64 `gorm:"column:uid;type:int;default:0;comment:用户uuid" json:"-"`
Channel string `gorm:"column:channel;type:varchar(30);default:'';comment:订单支付渠道" json:"channel"`
OrderNo string `gorm:"column:order_no;type:varchar(30);default:'';comment:订单号" json:"order_no"`
Amount float64 `gorm:"column:amount;type:decimal(10,2);default:0;comment:订单金额" json:"amount"`
Params string `gorm:"column:params;type:varchar(255);default:'';comment:订单参数" json:"-"`
Status OrderInstanceStatus `gorm:"column:status;type:tinyint(1);default:0;comment:订单状态" json:"status"`
Remark string `gorm:"column:remark;type:varchar(255);default:'';comment:订单备注" json:"remark"`
ModelDeleted
ModelAt
}
// OrderInstanceParams 订单参数
type OrderInstanceParams struct {
Kind OrderInstanceParamsKind `json:"kind"`
Data interface{} `json:"data"`
}
// OrderInstanceParamsKind 订单参数类型信息
type OrderInstanceParamsKind int
const (
// OrderInstanceParamsKindForActivity 活动信息
OrderInstanceParamsKindForActivity OrderInstanceParamsKind = iota + 1e2 + 1
// OrderInstanceParamsKindForVIP 会员信息
OrderInstanceParamsKindForVIP
)
type (
// OrderInstanceParamsForActivity 订单活动参数
OrderInstanceParamsForActivity struct {
ID uint64 `json:"id"`
Identity int `json:"identity"`
}
// OrderInstanceParamsForVip 会员参数
OrderInstanceParamsForVip struct {
ID uint64 `json:"id"`
EffectTime int `json:"effect_time"` // 有效时长,月
}
)
// OrderInstanceStatus 订单状态
type OrderInstanceStatus int
const (
// OrderInstanceStatusForInvalid 失效-未在规定时间内支付
OrderInstanceStatusForInvalid OrderInstanceStatus = iota - 9
// OrderInstanceStatusForCancel 取消-用户主动取消订单
OrderInstanceStatusForCancel OrderInstanceStatus = iota - 2
// OrderInstanceStatusForInit 初始化-初始化订单,待支付
OrderInstanceStatusForInit
// OrderInstanceStatusForPaid 已支付
OrderInstanceStatusForPaid
// OrderInstanceStatusForComplete 完成
OrderInstanceStatusForComplete
)
func (m *OrderInstance) TableName() string {
return "order_instance"
}
func (m *OrderInstance) SetParamsAttribute(kind OrderInstanceParamsKind, data IOrderInstance) {
value := &OrderInstanceParams{Kind: kind, Data: data}
_bytes, _ := json.Marshal(value)
m.Params = string(_bytes)
}
func (m *OrderInstance) GetParamsAttribute() *OrderInstanceParams {
out := new(OrderInstanceParams)
_ = json.Unmarshal([]byte(m.Params), out)
return out
}
func NewOrderInstance() *OrderInstance {
return &OrderInstance{}
}