From c0c32c62f41c90d8848e68a1211ab603c6865519 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 3 Apr 2026 09:17:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=85=85=E5=80=BC=20Handler=20=E7=BC=BA=E5=B0=91=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=AA=8C=E8=AF=81=E5=AF=BC=E8=87=B4=20check=20constra?= =?UTF-8?q?int=20=E8=BF=9D=E5=8F=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit payment_method 字段传入中文值「线下转账」时,因 AgentRechargeHandler 未注入 validator 而跳过 oneof 验证,直接写入 DB 触发 chk_agent_recharge_method 约束报错。 - AgentRechargeHandler 注入 validator,Create 方法补加 Struct 验证 - bootstrap/handlers.go 传入 validate 实例 - openapi/handlers.go 补 nil 占位保持编译通过 --- internal/bootstrap/handlers.go | 2 +- internal/handler/admin/agent_recharge.go | 11 ++++++++--- pkg/openapi/handlers.go | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/internal/bootstrap/handlers.go b/internal/bootstrap/handlers.go index d6e1bd6..6329308 100644 --- a/internal/bootstrap/handlers.go +++ b/internal/bootstrap/handlers.go @@ -95,7 +95,7 @@ func initHandlers(svc *services, deps *Dependencies) *Handlers { AssetLifecycle: admin.NewAssetLifecycleHandler(svc.AssetLifecycle), AssetWallet: admin.NewAssetWalletHandler(svc.AssetWallet), WechatConfig: admin.NewWechatConfigHandler(svc.WechatConfig), - AgentRecharge: admin.NewAgentRechargeHandler(svc.AgentRecharge), + AgentRecharge: admin.NewAgentRechargeHandler(svc.AgentRecharge, validate), Refund: admin.NewRefundHandler(svc.Refund), } } diff --git a/internal/handler/admin/agent_recharge.go b/internal/handler/admin/agent_recharge.go index 9d28fb2..0b22891 100644 --- a/internal/handler/admin/agent_recharge.go +++ b/internal/handler/admin/agent_recharge.go @@ -3,6 +3,7 @@ package admin import ( "strconv" + "github.com/go-playground/validator/v10" "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/model/dto" @@ -13,12 +14,13 @@ import ( // AgentRechargeHandler 代理预充值 Handler type AgentRechargeHandler struct { - service *agentRechargeSvc.Service + service *agentRechargeSvc.Service + validator *validator.Validate } // NewAgentRechargeHandler 创建代理预充值 Handler -func NewAgentRechargeHandler(service *agentRechargeSvc.Service) *AgentRechargeHandler { - return &AgentRechargeHandler{service: service} +func NewAgentRechargeHandler(service *agentRechargeSvc.Service, validator *validator.Validate) *AgentRechargeHandler { + return &AgentRechargeHandler{service: service, validator: validator} } // Create 创建代理充值订单 @@ -28,6 +30,9 @@ func (h *AgentRechargeHandler) Create(c *fiber.Ctx) error { if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } + if err := h.validator.Struct(&req); err != nil { + return errors.New(errors.CodeInvalidParam) + } result, err := h.service.Create(c.UserContext(), &req) if err != nil { diff --git a/pkg/openapi/handlers.go b/pkg/openapi/handlers.go index 2184075..936c326 100644 --- a/pkg/openapi/handlers.go +++ b/pkg/openapi/handlers.go @@ -57,7 +57,7 @@ func BuildDocHandlers() *bootstrap.Handlers { Asset: admin.NewAssetHandler(nil, nil, nil), AssetWallet: admin.NewAssetWalletHandler(nil), WechatConfig: admin.NewWechatConfigHandler(nil), - AgentRecharge: admin.NewAgentRechargeHandler(nil), + AgentRecharge: admin.NewAgentRechargeHandler(nil, nil), Refund: admin.NewRefundHandler(nil), } }