save code
This commit is contained in:
		| @ -7,7 +7,12 @@ | ||||
| // Date : 2025-10-30 15:39 | ||||
| package router | ||||
|  | ||||
| import "github.com/gin-gonic/gin" | ||||
| import ( | ||||
| 	"reflect" | ||||
|  | ||||
| 	"git.zhangdeman.cn/zhangdeman/gin/logger" | ||||
| 	"github.com/gin-gonic/gin" | ||||
| ) | ||||
|  | ||||
| // GetCommonParam 获取公共参数 | ||||
| type GetCommonParam func(ctx *gin.Context) (any, error) | ||||
| @ -23,3 +28,26 @@ func (s *server) AddCommonParamRules(rules map[string]GetCommonParam) { | ||||
| 		s.AddCommonParamRule(fieldName, rule) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // injectCommonParam 注入公共参数 | ||||
| func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error { | ||||
| 	reflectType := reflect.TypeOf(formValue) | ||||
| 	fieldTable := map[string]bool{} | ||||
| 	fieldNum := reflectType.Elem().NumField() | ||||
| 	for i := 0; i < fieldNum; i++ { | ||||
| 		// 提取全部结构体字段 | ||||
| 		fieldTable[reflectType.Elem().Field(i).Name] = true | ||||
| 	} | ||||
| 	reflectValue := reflect.ValueOf(formValue) | ||||
| 	for fieldName, getParamFunc := range s.commonParam { | ||||
| 		if _, ok := fieldTable[fieldName]; !ok { | ||||
| 			// 结构体字段未配置自动注入 | ||||
| 			continue | ||||
| 		} | ||||
| 		if val, err := getParamFunc(ctx); nil != err { | ||||
| 			logger.Instance.Error("inject common param failed") | ||||
| 			return err | ||||
| 		} | ||||
| 		reflectValue.Elem().FieldByName(fieldName) | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user