From 645876e3167dce6ba3e5773eb9ad1ee5d47faaf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 31 Oct 2025 23:16:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B3=A8=E5=85=A5,=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=98=AF=E5=90=A6=E5=B7=B2=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/common_param.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/router/common_param.go b/router/common_param.go index 87d965d..eb576ae 100644 --- a/router/common_param.go +++ b/router/common_param.go @@ -53,7 +53,9 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error { fieldTable := map[string]bool{} fieldNum := reflectType.Elem().NumField() for i := 0; i < fieldNum; i++ { - if reflectType.Elem().Field(i).Anonymous && ((reflectType.Elem().Field(i).Type.Kind() == reflect.Ptr && reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) || reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) { + if reflectType.Elem().Field(i).Anonymous && // 是匿名字段, 再做一次解析 + ((reflectType.Elem().Field(i).Type.Kind() == reflect.Ptr && reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) || // 结构体指针 + reflectType.Elem().Field(i).Type.Kind() == reflect.Struct) { // 结构体 anonymousFieldType := reflectType.Elem().Field(i).Type if anonymousFieldType.Kind() == reflect.Ptr { anonymousFieldType = anonymousFieldType.Elem() @@ -75,6 +77,16 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error { }).ToFieldList()...) continue } + fieldValue := reflectFormValue.Elem().FieldByName(fieldName) + if !fieldValue.IsZero() { + // 表单次数不为空, 说明从参数中传递, 不做覆盖填充 + logger.Instance.Debug("指定字段已赋值, 不做重新覆盖填充处理, 跳过", pkgLogger.NewLogData(innerCtx, logger.RecordType, logger.CodeInjectCommonParam, map[string]any{ + "field_name": fieldName, + "struct": reflectFormValue.Elem().Type().String(), + "input_form_value": fieldValue.Interface(), + }).ToFieldList()...) + continue + } if val, err = getParamFunc(ctx); nil != err { logger.Instance.Error("获取公共结构体字段参数值失败", pkgLogger.NewLogData(innerCtx, logger.RecordType, logger.CodeInjectCommonParam, map[string]any{ "field_name": fieldName, @@ -82,7 +94,6 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error { }).ToFieldList()...) return err } - fieldValue := reflectFormValue.Elem().FieldByName(fieldName) if !fieldValue.CanSet() { logDataList := pkgLogger.NewLogData(util.GinCtxToContext(ctx), logger.RecordType, logger.CodeInjectCommonParam, map[string]any{ "field_name": fieldName,