package response import ( "context" "github.com/zeromicro/go-zero/rest/httpx" "net/http" "tianyuan-api/pkg/errs" ) // 定义通用的响应结构 type Response struct { Code int `json:"code"` Data interface{} `json:"data,omitempty"` Message string `json:"message"` } type ResponseWithTransactionID struct { Code int `json:"code"` Data interface{} `json:"data,omitempty"` Message string `json:"message"` TransactionID string `json:"transaction_id"` } // 发送响应(公用函数) func sendResponse(ctx context.Context, w http.ResponseWriter, code int, message string, data interface{}) { // 从上下文中获取 TransactionID transactionID, _ := ctx.Value("transactionID").(string) if transactionID != "" { result := ResponseWithTransactionID{ Code: code, Data: data, Message: message, TransactionID: transactionID, } httpx.OkJsonCtx(ctx, w, result) } else { result := Response{ Code: code, Data: data, Message: message, } httpx.OkJsonCtx(ctx, w, result) } } // 响应成功 func Success(ctx context.Context, w http.ResponseWriter, data interface{}) { ctx = context.WithValue(ctx, "status", "success") ctx = context.WithValue(ctx, "Charges", true) sendResponse(ctx, w, 0, "success", data) } // 响应失败 func Fail(ctx context.Context, w http.ResponseWriter, err *errs.AppError) { ctx = context.WithValue(ctx, "status", "failed") ctx = context.WithValue(ctx, "remark", err.Message) sendResponse(ctx, w, err.Code, err.Message, nil) }