migu_server/tools/app/return.go
2024-10-18 23:46:54 +08:00

138 lines
3.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package app
import (
"encoding/json"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"go-admin/app/admin/models"
"go-admin/tools"
"net/http"
"strconv"
)
// 失败数据处理
func Error(c *gin.Context, code int, err error, msg string) {
var res Response
if err != nil {
res.Msg = err.Error()
}
if msg != "" {
res.Msg = msg
}
res.RequestId = tools.GenerateMsgIDFromContext(c)
//traceId, _ := c.Get("trace")
//res.RequestId = traceId.(string)
c.JSON(http.StatusOK, res.ReturnError(code))
response, _ := json.Marshal(res)
c.Set("response", string(response))
}
// 通常成功数据处理
func OK(c *gin.Context, data interface{}, msg string) {
var res Response
res.Data = data
if msg != "" {
res.Msg = msg
}
res.RequestId = tools.GenerateMsgIDFromContext(c)
//traceId, _ := c.Get("trace")
//res.RequestId = traceId.(string)
c.JSON(http.StatusOK, res.ReturnOK())
response, _ := json.Marshal(res)
c.Set("response", string(response))
}
// MiGuOK 通常成功数据处理
func MiGuOK(c *gin.Context, data interface{}) {
// 从上下文中获取 requestId
requestId := pkg.GenerateMsgIDFromContext(c)
// 根据具体的响应类型判断并添加 requestId
switch v := data.(type) {
case models.MiGuRsp:
// 修改数据并添加 requestId
v.RequestId = requestId
c.JSON(http.StatusOK, v)
case models.MiGuCheckRsp:
// 修改数据并添加 requestId
v.RequestId = requestId
c.JSON(http.StatusOK, v)
case models.CheckOrderResp:
// 修改数据并添加 requestId
v.RequestId = requestId
c.JSON(http.StatusOK, v)
default:
// 如果不是预期的类型,则直接返回原始数据
c.JSON(http.StatusOK, data)
}
// 如果仍然需要记录 response 到上下文中
response, _ := json.Marshal(data)
c.Set("response", string(response))
}
// MiGuError 失败数据处理code 为 int 类型,内部转换为 string
func MiGuError(c *gin.Context, code int, err error, msg string) {
var res MiGuErrorResponse
if err != nil {
res.Msg = err.Error()
}
if msg != "" {
res.Msg = msg
}
res.RequestId = tools.GenerateMsgIDFromContext(c) // 获取 requestId
res.Code = strconv.Itoa(code) // 将 int 类型的 code 转为 string
// 返回 JSON 响应
c.JSON(http.StatusOK, res)
// 如果仍然需要记录 response 到上下文中
response, _ := json.Marshal(res)
c.Set("response", string(response))
}
// MiGuNoticeOK 通常成功数据处理
func MiGuNoticeOK(c *gin.Context, data interface{}) {
// 将传入的数据转换为字符串
var responseString string
// 根据 data 的类型进行不同的处理
switch v := data.(type) {
case string:
responseString = v // 如果 data 已经是字符串,直接赋值
default:
// 对于其他类型的数据,尝试将其转换为 JSON 字符串
responseBytes, err := json.Marshal(data)
if err != nil {
// 如果转换失败,返回一个默认的错误信息
c.String(http.StatusInternalServerError, "无法处理响应数据")
return
}
responseString = string(responseBytes)
}
c.Writer.Header().Set("Content-Type", "text/plain; charset=utf-8")
// 直接返回字符串
c.String(http.StatusOK, responseString)
// 如果仍然需要记录 response 到上下文中
c.Set("response", responseString)
}
// 分页数据处理
func PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSize int, msg string) {
var res Page
res.List = result
res.Count = count
res.PageIndex = pageIndex
res.PageSize = pageSize
OK(c, res, msg)
}
// 兼容函数
func Custum(c *gin.Context, data gin.H) {
c.JSON(http.StatusOK, data)
}