package service

import (
	"errors"

	"tower_api/dao"
	"tower_api/model"
)

type OrderService struct {
}

func NewOrderService() *OrderService {
	return &OrderService{}
}

func (o *OrderService) UpdateState(orderSn string, playerId int) error {
	tx := dao.DB().Begin()
	//1. 更新订单为已支付未发货状态
	rowAffected, err := dao.UpdateOrderUnshipped(tx, orderSn)
	if rowAffected == 0 || err != nil {
		tx.Rollback()
		return errors.New("update order state err")
	}
	//3. 订单信息写入redis,留给定时器使用
	notify := NewNotifyService()
	err = notify.OrderPaid(orderSn, playerId)
	if err != nil {
		tx.Rollback()
		return err
	}
	//4. 提交事务
	return tx.Commit().Error
}

// GetSecret 获取密钥
func (o *OrderService) GetSecret(orderSn string) string {
	return dao.GetSecret(orderSn)
}

func (o *OrderService) GetOrderInfo(orderSn string) model.Order {
	return dao.GetOrderByOrderId(orderSn)
}
