package ledger

import (
	"strings"
)

// GameCoinChangeCommand 是 game-service 对钱包发起的游戏专用金币改账命令。
type GameCoinChangeCommand struct {
	AppCode         string
	CommandID       string
	UserID          int64
	PlatformCode    string
	GameID          string
	ProviderOrderID string
	ProviderRoundID string
	OpType          string
	CoinAmount      int64
	RoomID          string
	RequestHash     string
}

// GameCoinChangeReceipt 是游戏改账成功或幂等重放后的稳定回执。
type GameCoinChangeReceipt struct {
	TransactionID    string
	BalanceAfter     int64
	IdempotentReplay bool
}

func NormalizeGameOpType(opType string) string {
	switch strings.ToLower(strings.TrimSpace(opType)) {
	case GameOpDebit:
		return GameOpDebit
	case GameOpCredit:
		return GameOpCredit
	case GameOpRefund:
		return GameOpRefund
	case GameOpReverse:
		return GameOpReverse
	default:
		return ""
	}
}
