244 lines
7.3 KiB
Go
244 lines
7.3 KiB
Go
package router
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"chatapp3-golang/internal/config"
|
|
"chatapp3-golang/internal/service/voiceroomrocket"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// registerVoiceRoomRocketRoutes 注册语音房火箭 App、后台和内部调试接口。
|
|
func registerVoiceRoomRocketRoutes(
|
|
engine *gin.Engine,
|
|
cfg config.Config,
|
|
javaClient authGateway,
|
|
service *voiceroomrocket.Service,
|
|
) {
|
|
if service == nil {
|
|
return
|
|
}
|
|
|
|
appGroup := engine.Group("/app/voice-room/rocket")
|
|
appGroup.Use(authMiddleware(javaClient))
|
|
appGroup.GET("/config", func(c *gin.Context) {
|
|
resp, err := service.GetConfig(c.Request.Context(), mustAuthUser(c))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.GET("/level-contents", func(c *gin.Context) {
|
|
resp, err := service.GetLevelContents(c.Request.Context(), mustAuthUser(c))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.GET("/status", func(c *gin.Context) {
|
|
resp, err := service.GetStatus(c.Request.Context(), mustAuthUser(c), parseInt64(c.Query("roomId")))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.GET("/king", func(c *gin.Context) {
|
|
cursor, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("cursor", "1")))
|
|
limit, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("limit", "100")))
|
|
level, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("level", "1")))
|
|
roundNo, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("roundNo", "0")))
|
|
resp, err := service.GetKingRanking(c.Request.Context(), mustAuthUser(c), parseInt64(c.Query("roomId")), level, roundNo, cursor, limit)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.GET("/reward-popups", func(c *gin.Context) {
|
|
resp, err := service.ListRewardPopups(c.Request.Context(), mustAuthUser(c), parseInt64(c.Query("roomId")))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.POST("/reward-popups/ack", func(c *gin.Context) {
|
|
var req voiceroomrocket.AckRewardPopupsRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
if err := service.AckRewardPopups(c.Request.Context(), mustAuthUser(c), req); err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, gin.H{"success": true})
|
|
})
|
|
appGroup.GET("/reward-records", func(c *gin.Context) {
|
|
cursor, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("cursor", "1")))
|
|
limit, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("limit", "20")))
|
|
user := mustAuthUser(c)
|
|
roomID := parseInt64(c.Query("roomId"))
|
|
launchNo := strings.TrimSpace(c.Query("launchNo"))
|
|
scope := strings.ToLower(strings.TrimSpace(c.Query("scope")))
|
|
var (
|
|
resp *voiceroomrocket.RewardRecordPageResponse
|
|
err error
|
|
)
|
|
if launchNo != "" || scope == "room" {
|
|
resp, err = service.PageRoomRewardRecords(c.Request.Context(), user, roomID, launchNo, cursor, limit)
|
|
} else {
|
|
resp, err = service.PageRewardRecords(c.Request.Context(), user, roomID, cursor, limit)
|
|
}
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
appGroup.GET("/rule", func(c *gin.Context) {
|
|
resp, err := service.GetRule(c.Request.Context(), mustAuthUser(c))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
|
|
adminGroup := engine.Group("/resident-activity/voice-room-rocket")
|
|
adminGroup.Use(consoleAuthMiddleware(javaClient))
|
|
adminGroup.GET("/config", func(c *gin.Context) {
|
|
resp, err := service.GetAdminConfig(c.Request.Context(), c.Query("sysOrigin"))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.POST("/config/save", func(c *gin.Context) {
|
|
var req voiceroomrocket.SaveConfigRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.SaveAdminConfig(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.GET("/level-configs", func(c *gin.Context) {
|
|
resp, err := service.ListLevelConfigs(c.Request.Context(), c.Query("sysOrigin"))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.POST("/level-configs/save", func(c *gin.Context) {
|
|
var req voiceroomrocket.SaveLevelConfigsRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.SaveLevelConfigs(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.GET("/reward-configs", func(c *gin.Context) {
|
|
level, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("level", "0")))
|
|
resp, err := service.ListRewardConfigs(c.Request.Context(), c.Query("sysOrigin"), level)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.POST("/reward-configs/save", func(c *gin.Context) {
|
|
var req voiceroomrocket.SaveRewardConfigsRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.SaveRewardConfigs(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.GET("/launch-records", func(c *gin.Context) {
|
|
cursor, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("cursor", "1")))
|
|
limit, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("limit", "20")))
|
|
resp, err := service.PageAdminLaunchRecords(c.Request.Context(), c.Query("sysOrigin"), parseInt64(c.Query("roomId")), cursor, limit)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.GET("/reward-records", func(c *gin.Context) {
|
|
cursor, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("cursor", "1")))
|
|
limit, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("limit", "20")))
|
|
resp, err := service.PageAdminRewardRecords(
|
|
c.Request.Context(),
|
|
c.Query("sysOrigin"),
|
|
parseInt64(c.Query("roomId")),
|
|
parseInt64(c.Query("userId")),
|
|
c.Query("grantStatus"),
|
|
cursor,
|
|
limit,
|
|
)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
adminGroup.POST("/reward-records/retry", func(c *gin.Context) {
|
|
var req struct {
|
|
ID int64 `json:"id,string"`
|
|
}
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
if err := service.RetryReward(c.Request.Context(), req.ID); err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, gin.H{"success": true})
|
|
})
|
|
|
|
internalGroup := engine.Group("/internal/voice-room/rocket")
|
|
internalGroup.Use(internalSecretMiddleware(cfg.HTTP.InternalCallbackSecret))
|
|
internalGroup.POST("/gift-event", func(c *gin.Context) {
|
|
body, err := c.GetRawData()
|
|
if err != nil {
|
|
writeError(c, voiceroomrocket.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.ProcessGiftPayload(c.Request.Context(), string(body))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
}
|
|
|
|
func parseInt64(value string) int64 {
|
|
parsed, _ := strconv.ParseInt(strings.TrimSpace(value), 10, 64)
|
|
return parsed
|
|
}
|