File size: 836 Bytes
f1dd159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package response

import "github.com/gin-gonic/gin"

type successEnvelope struct {
	Data any `json:"data"`
}

type errorEnvelope struct {
	Error errorBody `json:"error"`
}

type errorBody struct {
	Code      string `json:"code"`
	Message   string `json:"message"`
	RequestID string `json:"requestId,omitempty"`
}

// Success 返回 Admin API 统一成功包裹。
func Success(c *gin.Context, status int, data any) {
	c.JSON(status, successEnvelope{Data: data})
}

// Error 返回 Admin API 稳定错误码和请求 ID。
func Error(c *gin.Context, status int, code, message string) {
	requestID, _ := c.Get("requestId")
	c.AbortWithStatusJSON(status, errorEnvelope{Error: errorBody{Code: code, Message: message, RequestID: stringValue(requestID)}})
}

func stringValue(value any) string {
	result, _ := value.(string)
	return result
}