网络游戏初步接入

This commit is contained in:
2024-10-18 15:11:40 +08:00
parent 263a57f636
commit b27d2b80f7
12 changed files with 306 additions and 67 deletions
+53 -26
View File
@@ -66,17 +66,14 @@ func (s *serverService) StartListenServer() error {
router.GET("/download/card/:uuid", func(c *gin.Context) {
uuid := c.Param("uuid")
card := repo.BaseCard.Find(global.DB, uuid)
fmt.Println("card:", card)
if card.UUID == "" {
c.JSON(404, nil)
return
}
cardPath := filepath.Join(cfg.T.CardDir, card.UUID)
// 设置响应头
c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s.zip", uuid))
c.Header("Content-Type", "application/zip")
err := zipFolder(cardPath, c.Writer)
if err != nil {
c.JSON(500, err)
@@ -85,15 +82,8 @@ func (s *serverService) StartListenServer() error {
})
router.POST("/chat", func(c *gin.Context) {
uuid := c.GetHeader("User-UserID")
user := repo.UserFollow.GetUser(global.DB, uuid)
if user.Ip != c.ClientIP() {
c.JSON(200, gin.H{"message": "对方未关注你"})
return
}
var msg = make(map[string]interface{})
if err := c.ShouldBind(&msg); err != nil {
c.JSON(200, gin.H{"message": "输入异常"})
user, msg, is := publicPostCheck(c)
if !is {
return
}
message := &models.Message{
@@ -105,23 +95,45 @@ func (s *serverService) StartListenServer() error {
c.JSON(200, gin.H{"message": "ok"})
})
// 游戏接口
router.POST("/game", func(c *gin.Context) {
uuid := c.GetHeader("User-UserID")
user := repo.UserFollow.GetUser(global.DB, uuid)
if user.Ip != c.ClientIP() {
c.JSON(200, gin.H{"message": "对方未关注你"})
// 开始游戏
router.POST("/start_game", func(c *gin.Context) {
user, msg, is := publicPostCheck(c)
if !is {
return
}
var msg = make(map[string]interface{})
if err := c.ShouldBind(&msg); err != nil {
c.JSON(200, gin.H{"message": "输入异常"})
return
}
message := &models.GameMessage{
UserID: user.ID,
Pos: msg["text"].(int),
Router: "/start_game",
User: &user.Users,
GameType: int(msg["type"].(float64)),
GameUuid: msg["game_uuid"].(string),
}
global.Send.Game1Chan <- message
c.JSON(200, gin.H{"message": "ok"})
})
router.POST("/play_game", func(c *gin.Context) {
user, msg, is := publicPostCheck(c)
if !is {
return
}
message := &models.GameMessage{
Router: "/play_game",
User: &user.Users,
Pos: int(msg["pos"].(float64)),
GameUuid: msg["game_uuid"].(string),
}
global.Send.Game1Chan <- message
c.JSON(200, gin.H{"message": "ok"})
})
router.POST("/close_game", func(c *gin.Context) {
user, msg, is := publicPostCheck(c)
if !is {
return
}
message := &models.GameMessage{
Router: "/close_game",
User: &user.Users,
GameUuid: msg["game_uuid"].(string),
}
global.Send.Game1Chan <- message
c.JSON(200, gin.H{"message": "ok"})
@@ -190,3 +202,18 @@ func zipFolder(folderPath string, zipFile io.Writer) error {
return nil
}
func publicPostCheck(c *gin.Context) (*models.UserFollows, map[string]interface{}, bool) {
uuid := c.GetHeader("User-User")
user := repo.UserFollow.GetUser(global.DB, uuid)
if user.Ip != c.ClientIP() {
c.JSON(200, gin.H{"message": "对方未关注你"})
return nil, nil, false
}
var msg = make(map[string]interface{})
if err := c.ShouldBind(&msg); err != nil {
c.JSON(200, gin.H{"message": "输入异常"})
return nil, nil, false
}
return user, msg, true
}