OshimaGameModule/OshimaServers/Model/CSBettingModels.cs
2026-05-10 22:40:42 +08:00

253 lines
6.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Text.Json.Serialization;
namespace Oshima.FunGame.WebAPI.Model
{
/// <summary>
/// 赛事状态
/// </summary>
public enum EventStatus
{
/// <summary>
/// 未开始
/// </summary>
Upcoming,
/// <summary>
/// 进行中
/// </summary>
InProgress,
/// <summary>
/// 已结束
/// </summary>
Completed
}
/// <summary>
/// 比赛状态
/// </summary>
public enum MatchStatus
{
/// <summary>
/// 未开始
/// </summary>
Scheduled,
/// <summary>
/// 正在进行
/// </summary>
Live,
/// <summary>
/// 已结束
/// </summary>
Finished
}
/// <summary>
/// 投注选项类型
/// </summary>
public enum BetOptionType
{
/// <summary>
/// 队伍1胜
/// </summary>
Team1Win,
/// <summary>
/// 队伍2胜
/// </summary>
Team2Win,
/// <summary>
/// 精确比分
/// </summary>
Score,
/// <summary>
/// 赛事MVP
/// </summary>
MVP
}
/// <summary>
/// CS 队伍
/// </summary>
public class CSTeam
{
public int Id { get; set; }
public string Name { get; set; } = "";
public string LogoUrl { get; set; } = "";
public List<string> Players { get; set; } = [];
}
/// <summary>
/// 赛事Event
/// </summary>
public class CSEvent
{
public int Id { get; set; }
public string Name { get; set; } = "";
public EventStatus Status { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public List<CSMatch> Matches { get; set; } = [];
/// <summary>
/// MVP 候选人列表(玩家 OpenId 或游戏内 UID
/// </summary>
public List<long> MVPCandidates { get; set; } = [];
}
/// <summary>
/// 单场比赛
/// </summary>
public class CSMatch
{
public int Id { get; set; }
public int EventId { get; set; }
public int Team1Id { get; set; }
public int Team2Id { get; set; }
public MatchStatus Status { get; set; }
public DateTime StartTime { get; set; }
public string Stage { get; set; } = "";
public string Description { get; set; } = "";
/// <summary>
/// 竞猜截止时间
/// </summary>
public DateTime BetDeadline { get; set; }
/// <summary>
/// 比赛结果(如 “16:14” 或 “2:1”
/// </summary>
///
public string? Result { get; set; }
/// <summary>
/// 获胜方1=Team12=Team20=平局/未定)
/// </summary>
public int Winner { get; set; }
/// <summary>
/// 支持的投注选项类型(常规包含 Team1Win/Team2Win总决赛增加 Score
/// </summary>
public List<BetOptionType> AvailableOptions { get; set; } = [BetOptionType.Team1Win, BetOptionType.Team2Win];
/// <summary>
/// 队伍1胜赔率默认2.5
/// </summary>
public decimal Team1WinOdds { get; set; } = 2.50m;
/// <summary>
/// 队伍2胜赔率默认2.5
/// </summary>
public decimal Team2WinOdds { get; set; } = 2.50m;
}
/// <summary>
/// 用户投注记录
/// </summary>
public class BetRecord
{
public long Id { get; set; }
public long UserId { get; set; }
public int MatchId { get; set; }
public BetOptionType OptionType { get; set; }
/// <summary>
/// 投注选项内容(如 “Team1Win” 或具体比分 “16:14”
/// </summary>
public string OptionValue { get; set; } = "";
/// <summary>
/// 投注金币
/// </summary>
public long Amount { get; set; }
/// <summary>
/// 投注时间
/// </summary>
public DateTime BetTime { get; set; }
/// <summary>
/// 是否已结算
/// </summary>
public bool IsSettled { get; set; }
/// <summary>
/// 结算金额(含本金),未结算为 null
/// </summary>
public long? Payout { get; set; }
/// <summary>
/// 结算备注
/// </summary>
public string? ResultNote { get; set; }
}
public class CreateEventRequest
{
[JsonPropertyName("uid")]
public long Uid { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("start_time")]
public DateTime StartTime { get; set; }
[JsonPropertyName("end_time")]
public DateTime EndTime { get; set; }
}
public class CreateMatchRequest
{
[JsonPropertyName("uid")]
public long Uid { get; set; }
[JsonPropertyName("event_id")]
public int EventId { get; set; }
[JsonPropertyName("team1_name")]
public string Team1Name { get; set; } = "";
[JsonPropertyName("team2_name")]
public string Team2Name { get; set; } = "";
[JsonPropertyName("stage")]
public string Stage { get; set; } = "";
[JsonPropertyName("start_time")]
public DateTime StartTime { get; set; }
[JsonPropertyName("bet_deadline")]
public DateTime BetDeadline { get; set; }
[JsonPropertyName("available_options")]
public string AvailableOptions { get; set; } = "team1_win,team2_win";
[JsonPropertyName("team1_win_odds")]
public decimal? Team1WinOdds { get; set; }
[JsonPropertyName("team2_win_odds")]
public decimal? Team2WinOdds { get; set; }
}
public class UpdateMatchRequest
{
[JsonPropertyName("uid")]
public long Uid { get; set; }
[JsonPropertyName("match_id")]
public int MatchId { get; set; }
[JsonPropertyName("team1_win_odds")]
public decimal? Team1WinOdds { get; set; }
[JsonPropertyName("team2_win_odds")]
public decimal? Team2WinOdds { get; set; }
[JsonPropertyName("start_time")]
public DateTime? StartTime { get; set; }
[JsonPropertyName("bet_deadline")]
public DateTime? BetDeadline { get; set; }
[JsonPropertyName("description")]
public string? Description { get; set; }
}
}