155 lines
5.0 KiB
Go
155 lines
5.0 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type BetOutcome struct {
|
|
ID int64 `json:"id" example:"1"`
|
|
BetID int64 `json:"bet_id" example:"1"`
|
|
EventID int64 `json:"event_id" example:"1"`
|
|
OddID int64 `json:"odd_id" example:"1"`
|
|
SportID int64 `json:"sport_id" example:"1"`
|
|
HomeTeamName string `json:"home_team_name" example:"Manchester"`
|
|
AwayTeamName string `json:"away_team_name" example:"Liverpool"`
|
|
MarketID int64 `json:"market_id" example:"1"`
|
|
MarketName string `json:"market_name" example:"Fulltime Result"`
|
|
Odd float32 `json:"odd" example:"1.5"`
|
|
OddName string `json:"odd_name" example:"1"`
|
|
OddHeader string `json:"odd_header" example:"1"`
|
|
OddHandicap string `json:"odd_handicap" example:"1"`
|
|
Status OutcomeStatus `json:"status" example:"1"`
|
|
Expires time.Time `json:"expires" example:"2025-04-08T12:00:00Z"`
|
|
}
|
|
|
|
type CreateBetOutcome struct {
|
|
BetID int64 `json:"bet_id" example:"1"`
|
|
EventID int64 `json:"event_id" example:"1"`
|
|
OddID int64 `json:"odd_id" example:"1"`
|
|
SportID int64 `json:"sport_id" example:"1"`
|
|
HomeTeamName string `json:"home_team_name" example:"Manchester"`
|
|
AwayTeamName string `json:"away_team_name" example:"Liverpool"`
|
|
MarketID int64 `json:"market_id" example:"1"`
|
|
MarketName string `json:"market_name" example:"Fulltime Result"`
|
|
Odd float32 `json:"odd" example:"1.5"`
|
|
OddName string `json:"odd_name" example:"1"`
|
|
OddHeader string `json:"odd_header" example:"1"`
|
|
OddHandicap string `json:"odd_handicap" example:"1"`
|
|
Expires time.Time `json:"expires" example:"2025-04-08T12:00:00Z"`
|
|
}
|
|
|
|
// If it is a ShopBet then UserID and Fullname will be the cashier
|
|
// If it is a DigitalBet then UserID and Fullname will be the user
|
|
type Bet struct {
|
|
ID int64
|
|
Amount Currency
|
|
TotalOdds float32
|
|
Status OutcomeStatus
|
|
UserID int64
|
|
IsShopBet bool
|
|
CashedOut bool
|
|
FastCode string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type BetFilter struct {
|
|
UserID ValidInt64
|
|
CashedOut ValidBool
|
|
IsShopBet ValidBool
|
|
Query ValidString
|
|
CreatedBefore ValidTime
|
|
CreatedAfter ValidTime
|
|
}
|
|
|
|
type GetBet struct {
|
|
ID int64
|
|
Amount Currency
|
|
TotalOdds float32
|
|
Status OutcomeStatus
|
|
FullName string
|
|
PhoneNumber string
|
|
UserID int64
|
|
IsShopBet bool
|
|
CashedOut bool
|
|
Outcomes []BetOutcome
|
|
FastCode string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type CreateBet struct {
|
|
Amount Currency
|
|
TotalOdds float32
|
|
Status OutcomeStatus
|
|
UserID int64
|
|
IsShopBet bool
|
|
OutcomesHash string
|
|
FastCode string
|
|
}
|
|
|
|
type CreateBetOutcomeReq struct {
|
|
EventID int64 `json:"event_id" example:"1"`
|
|
OddID int64 `json:"odd_id" example:"1"`
|
|
MarketID int64 `json:"market_id" example:"1"`
|
|
}
|
|
|
|
type CreateBetReq struct {
|
|
Outcomes []CreateBetOutcomeReq `json:"outcomes" validate:"required"`
|
|
Amount float32 `json:"amount" validate:"required,gt=0" example:"100.0"`
|
|
BranchID *int64 `json:"branch_id,omitempty" validate:"required" example:"1"`
|
|
}
|
|
|
|
type RandomBetReq struct {
|
|
BranchID int64 `json:"branch_id" validate:"required" example:"1"`
|
|
NumberOfBets int64 `json:"number_of_bets" validate:"required" example:"1"`
|
|
}
|
|
|
|
type CreateBetRes struct {
|
|
ID int64 `json:"id" example:"1"`
|
|
Amount float32 `json:"amount" example:"100.0"`
|
|
TotalOdds float32 `json:"total_odds" example:"4.22"`
|
|
Status OutcomeStatus `json:"status" example:"1"`
|
|
UserID int64 `json:"user_id" example:"2"`
|
|
IsShopBet bool `json:"is_shop_bet" example:"false"`
|
|
CreatedNumber int64 `json:"created_number" example:"2"`
|
|
}
|
|
type BetRes struct {
|
|
ID int64 `json:"id" example:"1"`
|
|
Outcomes []BetOutcome `json:"outcomes"`
|
|
Amount float32 `json:"amount" example:"100.0"`
|
|
TotalOdds float32 `json:"total_odds" example:"4.22"`
|
|
Status OutcomeStatus `json:"status" example:"1"`
|
|
Fullname string `json:"full_name" example:"John Smith"`
|
|
UserID int64 `json:"user_id" example:"2"`
|
|
IsShopBet bool `json:"is_shop_bet" example:"false"`
|
|
CashedOut bool `json:"cashed_out" example:"false"`
|
|
CreatedAt time.Time `json:"created_at" example:"2025-04-08T12:00:00Z"`
|
|
FastCode string `json:"fast_code"`
|
|
}
|
|
|
|
func ConvertCreateBet(bet Bet, createdNumber int64) CreateBetRes {
|
|
return CreateBetRes{
|
|
ID: bet.ID,
|
|
Amount: bet.Amount.Float32(),
|
|
TotalOdds: bet.TotalOdds,
|
|
Status: bet.Status,
|
|
UserID: bet.UserID,
|
|
CreatedNumber: createdNumber,
|
|
}
|
|
}
|
|
|
|
func ConvertBet(bet GetBet) BetRes {
|
|
return BetRes{
|
|
ID: bet.ID,
|
|
Amount: bet.Amount.Float32(),
|
|
TotalOdds: bet.TotalOdds,
|
|
Status: bet.Status,
|
|
Fullname: bet.FullName,
|
|
UserID: bet.UserID,
|
|
Outcomes: bet.Outcomes,
|
|
IsShopBet: bet.IsShopBet,
|
|
CashedOut: bet.CashedOut,
|
|
CreatedAt: bet.CreatedAt,
|
|
FastCode: bet.FastCode,
|
|
}
|
|
}
|