package dao

import (
	"time"

	"gorm.io/gorm"

	"tower_api/model"
	"tower_api/pkg/util"
)

// UpdateOrderUnshipped 将订单修改为已支付未发货状态
func UpdateOrderUnshipped(tx *gorm.DB, orderSn string) (int64, error) {
	exec := tx.Exec(`UPDATE game_order 
SET 
    order_state = 1,
	success_unix = ?
WHERE
    order_sn = ? AND order_state = 0 LIMIT 1;`, time.Now().Unix(), orderSn)
	return exec.RowsAffected, exec.Error
}

// GetSecret 通过订单号来获取密钥
func GetSecret(orderSn string) string {
	var secret string
	err := DB().Raw(`
SELECT 
    p.appsecret
FROM
    game_order AS o
        INNER JOIN
    game_package AS p ON o.package_id = p.package_id
WHERE
    order_sn = ?
LIMIT 1;`, orderSn).Scan(&secret).Error
	util.CheckErr(err)
	return secret
}

// GetOrderByOrderId 根据订单号获取订单信息
func GetOrderByOrderId(orderSn string) model.Order {
	var o model.Order
	err := DB().Raw("SELECT id,order_sn,player_id,order_price,order_state FROM game_order WHERE order_sn = ? LIMIT 1", orderSn).Scan(&o).Error
	util.CheckErr(err)
	return o
}
