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) }