| 
						
					 | 
					 | 
					@ -8,9 +8,12 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					package router
 | 
					 | 
					 | 
					 | 
					package router
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import (
 | 
					 | 
					 | 
					 | 
					import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"errors"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"reflect"
 | 
					 | 
					 | 
					 | 
						"reflect"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"git.zhangdeman.cn/zhangdeman/gin/logger"
 | 
					 | 
					 | 
					 | 
						"git.zhangdeman.cn/zhangdeman/gin/logger"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"git.zhangdeman.cn/zhangdeman/gin/util"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						pkgLogger "git.zhangdeman.cn/zhangdeman/logger"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/gin-gonic/gin"
 | 
					 | 
					 | 
					 | 
						"github.com/gin-gonic/gin"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					)
 | 
					 | 
					 | 
					 | 
					)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@ -31,6 +34,12 @@ func (s *server) AddCommonParamRules(rules map[string]GetCommonParam) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// injectCommonParam 注入公共参数
 | 
					 | 
					 | 
					 | 
					// injectCommonParam 注入公共参数
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error {
 | 
					 | 
					 | 
					 | 
					func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						innerCtx := util.GinCtxToContext(ctx)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						var (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							val any
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							err error
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						reflectType := reflect.TypeOf(formValue)
 | 
					 | 
					 | 
					 | 
						reflectType := reflect.TypeOf(formValue)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fieldTable := map[string]bool{}
 | 
					 | 
					 | 
					 | 
						fieldTable := map[string]bool{}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fieldNum := reflectType.Elem().NumField()
 | 
					 | 
					 | 
					 | 
						fieldNum := reflectType.Elem().NumField()
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@ -42,12 +51,40 @@ func (s *server) injectCommonParam(ctx *gin.Context, formValue any) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for fieldName, getParamFunc := range s.commonParam {
 | 
					 | 
					 | 
					 | 
						for fieldName, getParamFunc := range s.commonParam {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if _, ok := fieldTable[fieldName]; !ok {
 | 
					 | 
					 | 
					 | 
							if _, ok := fieldTable[fieldName]; !ok {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// 结构体字段未配置自动注入
 | 
					 | 
					 | 
					 | 
								// 结构体字段未配置自动注入
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								logger.Instance.Debug("当前结构体不包含指定字段, 忽略执行", pkgLogger.NewLogData(innerCtx, logger.RecordType, logger.CodeInjectCommonParam, map[string]any{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_name": fieldName,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"struct":     reflectValue.Elem().Type().String(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}).ToFieldList()...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								continue
 | 
					 | 
					 | 
					 | 
								continue
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if val, err := getParamFunc(ctx); nil != err {
 | 
					 | 
					 | 
					 | 
							if val, err = getParamFunc(ctx); nil != err {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								logger.Instance.Error("inject common param failed")
 | 
					 | 
					 | 
					 | 
								logger.Instance.Error("获取公共结构体字段参数值失败", pkgLogger.NewLogData(innerCtx, logger.RecordType, logger.CodeInjectCommonParam, map[string]any{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_name": fieldName,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"err_msg":    err.Error(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}).ToFieldList()...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return err
 | 
					 | 
					 | 
					 | 
								return err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							reflectValue.Elem().FieldByName(fieldName)
 | 
					 | 
					 | 
					 | 
							fieldValue := reflectValue.Elem().FieldByName(fieldName)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if !fieldValue.CanSet() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								logDataList := pkgLogger.NewLogData(util.GinCtxToContext(ctx), logger.RecordType, logger.CodeInjectCommonParam, map[string]any{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_name": fieldName,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_type": fieldValue.Type().String(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								logger.Instance.Error("结构体字段不可设置值", logDataList.ToFieldList()...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return errors.New(fieldName + ": 结构体字段不可设置值")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							reflectVal := reflect.ValueOf(val)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if reflectVal.Type() != fieldValue.Type() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								logDataList := pkgLogger.NewLogData(util.GinCtxToContext(ctx), logger.RecordType, logger.CodeInjectCommonParam, map[string]any{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_name": fieldName,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"field_type": fieldValue.Type().String(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"value_type": reflectVal.Type().String(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								logger.Instance.Error("返回数据类型与字段类型不一致", logDataList.ToFieldList()...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return errors.New(fieldName + ": 字段自动注入, 返回数据类型与字段类型不一致")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							// 设置值
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							fieldValue.Set(reflectVal)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return nil
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						 
						
						
						
						 
					 | 
					 | 
					
 
 |