Files

82 lines
4.8 KiB
Go
Raw Permalink Normal View History

2026-08-14 13:17:03 +08:00
package model
import "gorm.io/plugin/soft_delete"
// 游戏引擎类型常量
const (
EngineCanvas = "canvas" // 2D 画布游戏
EngineThree = "three" // Three.js 三维游戏
EngineOnline = "online" // WebSocket 联机游戏
)
// Game 游戏表平台全部游戏37 款)
type Game struct {
ID int `gorm:"primaryKey" json:"id"` // 游戏ID
Code string `gorm:"size:32;uniqueIndex" json:"code"` // 游戏编码(前端据此加载组件)
Name string `gorm:"size:32" json:"name"` // 游戏名称
Category string `gorm:"size:16" json:"category"` // 分类:益智/街机/动作/射击/棋牌/休闲/3D/联机
Icon string `gorm:"size:16" json:"icon"` // emoji 图标
Description string `gorm:"size:255" json:"description"` // 玩法简介
Price int `gorm:"default:0" json:"price"` // 售价积分0=免费)
Engine string `gorm:"size:16" json:"engine"` // 实现引擎canvas/three/online
ScorePerPoint int `gorm:"default:10" json:"score_per_point"` // 多少游戏得分兑1积分0=不兑换)
MaxPointsPerPlay int `gorm:"default:50" json:"max_points_per_play"` // 单局积分上限(防刷)
PlayCount int `gorm:"default:0" json:"play_count"` // 累计游玩次数
Sort int `gorm:"default:0" json:"sort"` // 排序权重
Carousel int `gorm:"default:0" json:"carousel"` // 大厅轮播0=不参与,>0=参与且按值升序排列
Status int `gorm:"default:1" json:"status"` // 状态1上架 2下架
CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 创建时间int 时间戳)
UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间int 时间戳)
DeletedAt soft_delete.DeletedAt `gorm:"default:0" json:"-"` // 软删除时间0=未删除)
}
// TableName 指定表名
func (Game) TableName() string { return "games" }
// GameRecord 游玩记录表:单机游戏每局结算写一条
type GameRecord struct {
ID int `gorm:"primaryKey" json:"id"` // 记录ID
UserID int `gorm:"index" json:"user_id"` // 玩家用户ID
GameID int `gorm:"index" json:"game_id"` // 游戏ID
Score int `gorm:"default:0" json:"score"` // 本局得分
PointsGained int `gorm:"default:0" json:"points_gained"` // 本局获得的平台积分
Duration int `gorm:"default:0" json:"duration"` // 游玩时长(秒)
CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 结算时间int 时间戳)
}
// TableName 指定表名
func (GameRecord) TableName() string { return "game_records" }
// 对战模式常量
const (
BattleModePVP = 1 // 好友联机
BattleModeAI = 2 // 人机对战
)
// 对战结果常量
const (
BattleResultWin = 1 // 胜利
BattleResultLose = 2 // 失败
BattleResultDraw = 3 // 平局
)
// BattleRecord 对战记录表:斗地主/象棋每局结束后,每个真人玩家写一条
type BattleRecord struct {
ID int `gorm:"primaryKey" json:"id"` // 记录ID
UserID int `gorm:"index" json:"user_id"` // 玩家用户ID
GameID int `json:"game_id"` // 游戏ID斗地主或象棋
RoomCode string `gorm:"size:16" json:"room_code"` // 房间邀请码
Mode int `gorm:"default:1" json:"mode"` // 模式1好友联机 2人机
// 注意AI 不在 GORM 常见缩写词表内,默认会被映射成 a_iprovider必须显式指定列名
AIProvider string `gorm:"size:16;column:ai_provider" json:"ai_provider"` // AI 提供方spark/deepseek/rule
AIDifficulty string `gorm:"size:16;column:ai_difficulty" json:"ai_difficulty"` // AI 难度easy/medium/hard
Result int `gorm:"default:1" json:"result"` // 结果1胜 2负 3平
PointsChange int `gorm:"default:0" json:"points_change"` // 积分变动(胜利奖励)
Duration int `gorm:"default:0" json:"duration"` // 对局时长(秒)
Detail string `gorm:"size:255" json:"detail"` // 对局详情摘要
CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 结算时间int 时间戳)
}
// TableName 指定表名
func (BattleRecord) TableName() string { return "battle_records" }