fix: 修复代理充值 Handler 缺少参数验证导致 check constraint 违反的问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m18s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m18s
payment_method 字段传入中文值「线下转账」时,因 AgentRechargeHandler 未注入 validator 而跳过 oneof 验证,直接写入 DB 触发 chk_agent_recharge_method 约束报错。 - AgentRechargeHandler 注入 validator,Create 方法补加 Struct 验证 - bootstrap/handlers.go 传入 validate 实例 - openapi/handlers.go 补 nil 占位保持编译通过
This commit is contained in:
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user