From d634ce1993787bbd8e08b1342f18de3633c26493 Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Fri, 31 Oct 2025 16:46:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=B8=9A=E5=8A=A1=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/fileupload/uploadfilehandler.go | 27 ++++++++++++++ .../logic/fileupload/uploadfilelogic.go | 36 +++++++++++++++++++ server/internal/file/internal/types/types.go | 12 +++++++ 3 files changed, 75 insertions(+) create mode 100644 server/internal/file/handler/fileupload/uploadfilehandler.go create mode 100644 server/internal/file/internal/logic/fileupload/uploadfilelogic.go create mode 100644 server/internal/file/internal/types/types.go diff --git a/server/internal/file/handler/fileupload/uploadfilehandler.go b/server/internal/file/handler/fileupload/uploadfilehandler.go new file mode 100644 index 00000000..0dde21e2 --- /dev/null +++ b/server/internal/file/handler/fileupload/uploadfilehandler.go @@ -0,0 +1,27 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package fileupload + +import ( + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/file/internal/logic/fileupload" + "github.com/gin-gonic/gin" +) + +func UploadFileHandler(cfg *config.Config) gin.HandlerFunc { + return func(c *gin.Context) { + // 1. 传递上下文:直接用 Gin 上下文的 c.Context()(包含超时、取消等信息,比 c.Request.Context() 更完整) + ctx := c.Request.Context() + + // 2. 创建 Logic 实例:参数顺序/类型与 Logic 层构造函数完全匹配(ctx, cfg, c) + // 注意:此处第三个参数是 Gin 上下文 c,与你 Logic 层的 `c *gin.Context` 字段对应 + l := fileupload.NewUploadFileLogic(ctx, cfg, c) + + // 3. 调用 Logic 层方法:无需处理返回的 resp/err(因为 Logic 层已通过 l.c.JSON 返回响应) + // 即使返回 err,Logic 层也已提前返回错误响应,此处仅需调用方法即可 + _, _ = l.UploadFile() + + // 4. 无需额外响应处理!!!(关键:避免重复调用 c.JSON/httpx 导致错误) + } +} diff --git a/server/internal/file/internal/logic/fileupload/uploadfilelogic.go b/server/internal/file/internal/logic/fileupload/uploadfilelogic.go new file mode 100644 index 00000000..564c451e --- /dev/null +++ b/server/internal/file/internal/logic/fileupload/uploadfilelogic.go @@ -0,0 +1,36 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package fileupload + +import ( + "context" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/file/internal/types" + "github.com/gin-gonic/gin" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UploadFileLogic struct { + logx.Logger + ctx context.Context + cfg *config.Config + c *gin.Context +} + +func NewUploadFileLogic(ctx context.Context, cfg *config.Config, c *gin.Context) *UploadFileLogic { + return &UploadFileLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + cfg: cfg, + c: c, + } +} + +func (l *UploadFileLogic) UploadFile() (resp *types.UploadFileResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/server/internal/file/internal/types/types.go b/server/internal/file/internal/types/types.go new file mode 100644 index 00000000..890bea9c --- /dev/null +++ b/server/internal/file/internal/types/types.go @@ -0,0 +1,12 @@ +// Code generated by goctl. DO NOT EDIT. +// goctl 1.9.2 + +package types + +type UploadFileResp struct { + Code int `json:"code"` // 业务状态码 + Message string `json:"message"` // 提示信息 + Data struct { + Url string `json:"url"` // 文件访问地址 + } `json:"data"` +}