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),
|
AssetLifecycle: admin.NewAssetLifecycleHandler(svc.AssetLifecycle),
|
||||||
AssetWallet: admin.NewAssetWalletHandler(svc.AssetWallet),
|
AssetWallet: admin.NewAssetWalletHandler(svc.AssetWallet),
|
||||||
WechatConfig: admin.NewWechatConfigHandler(svc.WechatConfig),
|
WechatConfig: admin.NewWechatConfigHandler(svc.WechatConfig),
|
||||||
AgentRecharge: admin.NewAgentRechargeHandler(svc.AgentRecharge),
|
AgentRecharge: admin.NewAgentRechargeHandler(svc.AgentRecharge, validate),
|
||||||
Refund: admin.NewRefundHandler(svc.Refund),
|
Refund: admin.NewRefundHandler(svc.Refund),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package admin
|
|||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/go-playground/validator/v10"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
|
|
||||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||||
@@ -13,12 +14,13 @@ import (
|
|||||||
|
|
||||||
// AgentRechargeHandler 代理预充值 Handler
|
// AgentRechargeHandler 代理预充值 Handler
|
||||||
type AgentRechargeHandler struct {
|
type AgentRechargeHandler struct {
|
||||||
service *agentRechargeSvc.Service
|
service *agentRechargeSvc.Service
|
||||||
|
validator *validator.Validate
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewAgentRechargeHandler 创建代理预充值 Handler
|
// NewAgentRechargeHandler 创建代理预充值 Handler
|
||||||
func NewAgentRechargeHandler(service *agentRechargeSvc.Service) *AgentRechargeHandler {
|
func NewAgentRechargeHandler(service *agentRechargeSvc.Service, validator *validator.Validate) *AgentRechargeHandler {
|
||||||
return &AgentRechargeHandler{service: service}
|
return &AgentRechargeHandler{service: service, validator: validator}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create 创建代理充值订单
|
// Create 创建代理充值订单
|
||||||
@@ -28,6 +30,9 @@ func (h *AgentRechargeHandler) Create(c *fiber.Ctx) error {
|
|||||||
if err := c.BodyParser(&req); err != nil {
|
if err := c.BodyParser(&req); err != nil {
|
||||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
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)
|
result, err := h.service.Create(c.UserContext(), &req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ func BuildDocHandlers() *bootstrap.Handlers {
|
|||||||
Asset: admin.NewAssetHandler(nil, nil, nil),
|
Asset: admin.NewAssetHandler(nil, nil, nil),
|
||||||
AssetWallet: admin.NewAssetWalletHandler(nil),
|
AssetWallet: admin.NewAssetWalletHandler(nil),
|
||||||
WechatConfig: admin.NewWechatConfigHandler(nil),
|
WechatConfig: admin.NewWechatConfigHandler(nil),
|
||||||
AgentRecharge: admin.NewAgentRechargeHandler(nil),
|
AgentRecharge: admin.NewAgentRechargeHandler(nil, nil),
|
||||||
Refund: admin.NewRefundHandler(nil),
|
Refund: admin.NewRefundHandler(nil),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user