// Package router ... // // Description : router ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-01-27 19:42 package router import ( "git.zhangdeman.cn/zhangdeman/exception" "git.zhangdeman.cn/zhangdeman/gin/request" "git.zhangdeman.cn/zhangdeman/gin/response" "github.com/gin-gonic/gin" "reflect" ) // RequestHandler 获取请求处理方法 TODO : 待完成 // // Author : go_developer@163.com<白茶清欢> // // Date : 19:44 2025/1/27 func RequestHandler(uriCfg UriConfig) gin.HandlerFunc { return func(ctx *gin.Context) { var ( err error ok bool e exception.IException ) formData := reflect.New(uriCfg.FormDataType).Interface() // 表单解析 if err = request.Form.Parse(ctx, formData); nil != err { e = exception.NewFromError(400, err) response.SendWithException(ctx, e, nil) return } // 执行逻辑 resList := uriCfg.ApiLogicFunc.Func.Call([]reflect.Value{uriCfg.ApiStructValue, reflect.ValueOf(ctx), reflect.ValueOf(formData)}) if resList[1].IsNil() { // 请求成功 response.Success(ctx, resList[0].Interface()) return } // 请求失败 if e, ok = resList[1].Interface().(exception.IException); ok { response.SendWithException(ctx, e, nil) return } if err, ok = resList[1].Interface().(error); ok { e = exception.NewFromError(-1, err) response.SendWithException(ctx, e, nil) return } e = exception.NewWithCodeAndData(-1, map[string]any{ "err": resList[1].Interface(), }) response.SendWithException(ctx, e, nil) return } }