init
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"hakemsho/internal/economy"
|
||||
)
|
||||
|
||||
// gameSettler اینترفیس ws.Settler را با سرویس اقتصاد پیاده میکند.
|
||||
// tier را به ورودی/جایزه/XP/جام نگاشت کرده و تراکنش سکه را انجام میدهد.
|
||||
type gameSettler struct {
|
||||
eco *economy.Service
|
||||
}
|
||||
|
||||
func (g gameSettler) ChargeEntry(userID int64, tier string) error {
|
||||
t := economy.FindTier(tier)
|
||||
if t == nil {
|
||||
return nil // tier ناشناخته ⇒ بدون ورودی
|
||||
}
|
||||
return g.eco.ChargeEntry(context.Background(), userID, t.Entry, "tier:"+tier)
|
||||
}
|
||||
|
||||
func (g gameSettler) Refund(userID int64, tier string) {
|
||||
t := economy.FindTier(tier)
|
||||
if t == nil {
|
||||
return
|
||||
}
|
||||
if err := g.eco.Refund(context.Background(), userID, t.Entry, "tier:"+tier); err != nil {
|
||||
slog.Error("refund", "user", userID, "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (g gameSettler) AwardWinner(userID int64, tier string) {
|
||||
t := economy.FindTier(tier)
|
||||
if t == nil {
|
||||
return
|
||||
}
|
||||
if err := g.eco.AwardWinner(context.Background(), userID, t.Prize, t.XP, t.Trophy, "tier:"+tier); err != nil {
|
||||
slog.Error("award winner", "user", userID, "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (g gameSettler) RecordGame(room, playersJSON string, winnerTeam int, kot bool) {
|
||||
if err := g.eco.RecordGame(context.Background(), room, playersJSON, winnerTeam, kot); err != nil {
|
||||
slog.Error("record game", "room", room, "err", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user