package pay

import (
	"common/connection"
	"strconv"
	"time"
)

func init() {
	//注册数据库
	connection.RegisterDBModel(&Order{})
}

type Order struct {
	//订单id
	OrderID int64 `gorm:"column:order_id;primary_key;comment:订单id" json:"order_id"`
	//订单号
	PrepayId string `gorm:"column:prepay_id;comment:预支付交易会话标识" json:"prepay_id"`
	//订单金额
	OrderMoney int64 `gorm:"column:order_money;comment:订单金额" json:"order_money"`
	//订单状态 0:未支付 1:已支付 2:已关闭
	OrderStatus int32 `gorm:"column:order_status;comment:订单状态" json:"order_status"`
	//用户id
	UserID string `gorm:"column:user_id;comment:用户id" json:"user_id"`
	//区服id
	ServerID int64 `gorm:"column:server_id;comment:区服id" json:"server_id"`
	//玩家标识
	PlayerID string `gorm:"column:player_id;comment:玩家标识" json:"player_id"`
	//是否通知游戏服 0：未通知 1：已通知
	IsNotifyGameServer int32 `gorm:"column:is_notify_game_server;comment:是否通知游戏服" json:"is_notify_game_server"`
	//订单日期
	OrderDate time.Time `gorm:"column:order_date;comment:订单日期" json:"order_date"`
	//订单时间
	OrderTime time.Time `gorm:"column:order_time;type:date;comment:订单时间" json:"order_time"`
	//订单类型 1:微信支付 2:支付宝支付
	OrderType int32 `gorm:"column:order_type;comment:订单类型" json:"order_type"`

	//表的名字 这里是表的后缀
	TableNameData int32 `gorm:"column:table_name;comment:表的名字 这里是表的后缀" json:"table_name"`
}

// TableName 表名
func (order *Order) TableName() string {
	return "order_" + strconv.Itoa(int(order.TableNameData))
}

// NewOrder 创建订单
// @param orderId 订单id
// @param prepayId 预支付id
// @param playerID 玩家id
// @param serverID 服务器id
// @param orderType 订单类型
func NewOrder(orderId int64, prepayId string, playerID string, serverID int64, orderType int32) *Order {
	return &Order{
		OrderID:       orderId,
		PrepayId:      prepayId,
		OrderMoney:    100,
		OrderStatus:   1,
		PlayerID:      playerID,
		ServerID:      serverID,
		UserID:        playerID,
		OrderDate:     time.Now(),
		OrderTime:     time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
		OrderType:     orderType,
		TableNameData: connection.GetMonth(),
	}
}
