package swagger import ( "reflect" "xiawan/wx/api/req" ) // 为避免自动分析控制器失败,手动指定Swagger定义 func init() { // 添加回调API的Swagger定义 // 使用特殊的注册函数,确保这些API放在最前面 RegisterCallbackAPI("/message/SetCallback", "post", "设置消息回调", req.MessageCallbackConfigModel{}) RegisterCallbackAPI("/message/GetCallback", "get", "获取消息回调配置", nil) RegisterCallbackAPI("/message/DeleteCallback", "get", "删除消息回调配置", nil) RegisterCallbackAPI("/message/TestCallback", "get", "测试消息回调配置", nil) // 手动注册回调模型 RegisterModel(req.MessageCallbackConfigModel{}) RegisterModel(req.MessageCallbackPayload{}) } // RegisterCallbackAPI 注册回调API到Swagger文档并设置优先显示 func RegisterCallbackAPI(path, method, summary string, model interface{}) { if manualAPIs[path] == nil { manualAPIs[path] = make(map[string]SwgMap) } params := []SwgMap{ { "in": "query", "name": "key", "type": "string", "description": "账号唯一标识", }, } // 如果模型不为空,添加请求体参数 if model != nil { modelType := reflect.TypeOf(model) modelName := modelType.Name() if modelName == "" && modelType.Kind() == reflect.Ptr { modelName = modelType.Elem().Name() } params = append(params, SwgMap{ "in": "body", "name": "body", "description": "请求参数", "schema": SwgMap{ "$ref": "#/definitions/" + modelName, }, }) } // 使用特殊的标签"消息回调" manualAPIs[path][method] = SwgMap{ "summary": summary, "parameters": params, "responses": SwgMap{ "200": SwgMap{ "description": "", }, }, "tags": []string{"消息回调"}, } }