dual check v0.1
This commit is contained in:
1 parent
78bad1fa3d
commit
c137299016
36 files changed
+3727
-81
No files matched your search
@@ -0,0 +1,120 @@
|
||||
// Package response 提供统一的 JSON 响应封装
|
||||
package response
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Response 是所有 API 的统一响应结构
|
||||
type Response struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
// Success 返回成功响应
|
||||
func Success(c *gin.Context, data interface{}) {
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Code: 0,
|
||||
Message: "ok",
|
||||
Data: data,
|
||||
})
|
||||
}
|
||||
|
||||
// Fail 返回业务错误(HTTP 200 + 非零业务码)
|
||||
func Fail(c *gin.Context, code int, message string) {
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Code: code,
|
||||
Message: message,
|
||||
})
|
||||
}
|
||||
|
||||
// BadRequest 返回参数错误
|
||||
func BadRequest(c *gin.Context, message string) {
|
||||
c.JSON(http.StatusBadRequest, Response{
|
||||
Code: 4000,
|
||||
Message: message,
|
||||
})
|
||||
}
|
||||
|
||||
// NotFound 返回资源不存在
|
||||
func NotFound(c *gin.Context, message string) {
|
||||
c.JSON(http.StatusNotFound, Response{
|
||||
Code: 4040,
|
||||
Message: message,
|
||||
})
|
||||
}
|
||||
|
||||
// InternalError 返回服务端内部错误
|
||||
func InternalError(c *gin.Context, message string) {
|
||||
c.JSON(http.StatusInternalServerError, Response{
|
||||
Code: 5000,
|
||||
Message: message,
|
||||
})
|
||||
}
|
||||
|
||||
// WebSocketMessage 是 WebSocket 推送的统一消息格式
|
||||
type WebSocketMessage struct {
|
||||
Type string `json:"type"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
Error string `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
// ── WS 事件快捷构造器 ──
|
||||
|
||||
// WSFullState 全量快照推送(发起方 submit 后广播给所有人)
|
||||
func WSFullState(sess interface{}) WebSocketMessage {
|
||||
return WebSocketMessage{Type: "full_state", Data: sess}
|
||||
}
|
||||
|
||||
// WSParticipantJoined 新参与者加入
|
||||
func WSParticipantJoined(nickname string) WebSocketMessage {
|
||||
return WebSocketMessage{
|
||||
Type: "participant_joined",
|
||||
Data: map[string]string{"nickname": nickname},
|
||||
}
|
||||
}
|
||||
|
||||
// WSParticipantLeft 参与者离开
|
||||
func WSParticipantLeft(nickname string) WebSocketMessage {
|
||||
return WebSocketMessage{
|
||||
Type: "participant_left",
|
||||
Data: map[string]string{"nickname": nickname},
|
||||
}
|
||||
}
|
||||
|
||||
// WSParticipantSubmitted 参与者提交文本
|
||||
func WSParticipantSubmitted(nickname string, resp interface{}) WebSocketMessage {
|
||||
return WebSocketMessage{
|
||||
Type: "participant_submitted",
|
||||
Data: map[string]interface{}{
|
||||
"nickname": nickname,
|
||||
"submit": resp,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// WSInitiatorReady 发起方刚提交(所有参与者都会收到)
|
||||
func WSInitiatorReady() WebSocketMessage {
|
||||
return WebSocketMessage{Type: "initiator_ready"}
|
||||
}
|
||||
|
||||
// WSSessionExpired 会话过期
|
||||
func WSSessionExpired() WebSocketMessage {
|
||||
return WebSocketMessage{Type: "session_expired"}
|
||||
}
|
||||
|
||||
// WSSessionEnded 会话被发起方主动结束
|
||||
func WSSessionEnded() WebSocketMessage {
|
||||
return WebSocketMessage{Type: "session_ended"}
|
||||
}
|
||||
|
||||
// WSResubmitChanged 发起方切换了"允许参与者重新提交"开关
|
||||
func WSResubmitChanged(allow bool) WebSocketMessage {
|
||||
return WebSocketMessage{
|
||||
Type: "resubmit_changed",
|
||||
Data: map[string]bool{"allow": allow},
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user