diff --git a/api_doc.md b/api_doc.md deleted file mode 100755 index c8942ea..0000000 --- a/api_doc.md +++ /dev/null @@ -1,378 +0,0 @@ -### 验证码 -无需校验参数 -##### 获取验证码 -> *GET*,/captcha -> 返回示例: -```json -{ - "code": 200, - "data": { - "id": "ECAZBGqD6ORferpWPx9y", - "img_url": "/captcha/ECAZBGqD6ORferpWPx9y.png",// 验证码图片地址 - "refresh": "/captcha/ECAZBGqD6ORferpWPx9y.png?reload=1", - "verify": "/captcha/ECAZBGqD6ORferpWPx9y/这里替换为正确的验证码进行验证" - }, - "msg": "验证码信息" -} -``` -#### 验证验证码 -> *GET*,/captcha/:captcha_id/:captcha_value -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "验证码校验通过" -} -``` - -## 用户相关 -### 无需鉴权 -#### 获取公钥 -> *POST*,/admin/users/publickey -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -> 返回示例: -``` ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw/GsJEfppPkaZXGt7uKr -q2UOsCEzrtPYz/DDUCjJzWnr725FoNqT77B33QbET995hay8j8Bcwwj7APkUYKyt -RoNUOJkaWgAqpNp9/TKhulFex8ycEaI1lG0kzqPQtcNjIQyqOQ1qSyXb8BxFFN5+ -zvuWdpb4lI8YxZGg9+n77qtmr2an7d4ADIsRVAejJuoDWB56RovVuiLihG71Wfam -V1HhGf0ykWfyamd1HxN74hdBICbpChWPCmD/S2MwBMViM+TfCu5D15DxP5ZkADLU -vV81YIKBLg6KZUV7N7oZzzJqiEmpeis4QO4ABf/KRQ9KVRe4dcJFi4E0uVCBKGm8 -1QIDAQAB ------END PUBLIC KEY----- -``` -> 加密参考 */test/login_test.html* -> 用户发送密码必须通过加密,否则会产生错误 -```javascript -const response = await fetch('http://localhost:14514/admin/users/publickey?user_name=joefalmko',{ - method: 'POST', -}); -const publicKey = await response.text(); -console.log("public key:\n",publicKey); - -// Encrypt the password using the public key -const encrypt = new JSEncrypt(); -encrypt.setPublicKey(publicKey); -const encryptedPassword = encrypt.encrypt(password); -console.log("encrypted password: ",encryptedPassword); -``` -#### 用户注册 -> *POST*,/admin/users/register -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -pass|form-data|string|必填 -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "Success" -} -``` -#### 用户登录 -> *POST*,/admin/users/login -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -pass|form-data|string|必填 -> 返回示例: -```json -{ - "code": 200, - "data": { - "userId":5 - "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo1LCJ1c2VyX25hbWUiOiJqb2VmYWxta28iLCJwaG9uZSI6IiIsImV4cCI6MTczMDA1OTQxMSwibmJmIjoxNzMwMDMwNjAxfQ.tqxCyPGQYPpTUJBoqZ47sfCAdxEN2thKRBPHilWHl18", - "updated_at":"2024-10-27 20:03:31", - "msg": "Success" - } -} -``` -### 需要鉴权 -Header中必须包含 "Authorization": "Bearer {token}" -#### 获取用户信息 -> *POST*,/admin/users/info -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -> 返回示例: -```json -{ - "code": 200, - "data": { - "id": 1, - "user_name": "joefalmko", - }, - "msg": "Success" -} -``` -#### 更新用户名 -> *POST*,/admin/users/username -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -id|form-data|int|必填 -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "Success" -} -``` -#### 更新密码 -> *POST*,/admin/users/password -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -id|form-data|int|必填 -oldpass|form-data|string|必填 -newpass|form-data|string|必填 -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "Success" -} -``` -#### 注销用户 -> *POST*,/admin/users/delete -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -id|form-data|int|必填 -pass|form-data|string|必填 -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "Success" -} -``` -#### 登出用户 -> *POST*,/admin/users/logout -参数字段|参数属性|类型|选项 ----|---|---|---|--- -id|form-data|int|必填 -> 返回示例: -```json -{ - "code": 200, - "data": "", - "msg": "Success" -} -``` -#### token刷新 ,请将旧token放置在header头参数直接提交更新 -> *post*,/admin/users/refreshtoken - -参数字段|参数属性|类型|选项|默认值 ----|---|---|---|--- -Authorization|Headers|string|必填|Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjQ3LCJ1c2VyX25hbWUiOiJnb3NrZWxldG9uMS40IiwicGhvbmUiOiIiLCJleHAiOjE2MDQwNTIxNzMsIm5iZiI6MTYwNDA0ODU2M30.YNhN9_QasHc5XILQiilZvhxpPDnmC_j82y4JfYPnI7A - -> 返回示例: -```json -{ - "code": 200, - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjQ3LCJ1c2VyX25hbWUiOiJnb3NrZWxldG9uMS40IiwicGhvbmUiOiIiLCJleHAiOjE2MDQwNTYxMDcsIm5iZiI6MTYwNDA0ODU2M30.JPE6G-9YE9UTdxHiWuvdVlD-akiIkvp6Ezf9y4_ud9M" - }, - "msg": "Success" -} -``` - -#### 请求图片文字识别 -> *post*,/admin/ai_recognition/pic_recognition - -参数字段|参数属性|类型|选项|默认值 ----|---|---|---|--- -pic|form-data|string|必填|"" (示例内容在 storage/app/test/文字识别.txt 中) - -> 返回示例: -```json -{ - "code": 200, - "data": { - "words": "out[entry]=\nfor each basic block ∈N -{entry}\nout[B] =\nchange = true\nwhile (changes) {\n// Find: fix point solution\nchange = false\nfor each B∈N - {entry} {\noldout = out[B]\nin[B]= Uout[P]\nP∈pred[B]\nout[B] = GEN[B] ∪ (in[B]∩ PRSV[B])\nif(out[B] ≠ oldout) change = true;\n}\n}\n" - }, - "msg": "Success" -} -``` - -#### 请求语音识别 -> *post*,/admin/ai_recognition/voc_recognition - -参数字段|参数属性|类型|选项|默认值 ----|---|---|---|--- -voc|form-data|string|必填|"" (示例内容在 storage/app/test/A13_221.txt 中) - -> 返回示例: -```json -{ - "code": 200, - "data": { - "words": "韩国的基本目标是射箭三块金牌只到三块金牌,羽毛球,两块金牌,以及举重等12块金牌。\n" - }, - "msg": "Success" -} -``` - -#### 请求文本优化 -> *post*,/admin/ai_doc/doc_refine - -参数字段|参数属性|类型|选项|默认值 ----|---|---|---|--- -doc|form-data|string|必填|"" -background|form-data|string||"" -type|form-data|string|必填|"abstract"/"decorate"/"sequel_writing"/"rewrite_wrong"/"translate" -> 返回示例: -```json -{ - "code": 200, - "data": { - "new_doc": "Whether it's a business report, an academic paper, or a creative piece of writing, this module can polish the language, correct grammar and spelling errors, and optimize the overall structure." - }, - "msg": "Success" -} -``` -#### 创建文件 -> *post*,/admin/file/file_creat - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -file_path|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件创建成功", - "msg": "Success" -} -} -``` -#### 创建文件夹 -> *post*,/admin/file/folder_creat - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -folder_name|form-data|string|必填 -folder_path|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件夹创建成功", - "msg": "Success" -} -} -``` -#### 打开文件 -> *post*,/admin/file/file_get - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -file_path|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件获取成功", - "msg": "Success" -} -} -``` -#### 文件重命名 -> *post*,/admin/file/file_rename - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -file_path|form-data|string|必填 -newname|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件重命名成功", - "msg": "Success" -} -} -``` -#### 移动文件 -> *post*,/admin/file/file_move - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -file_path|form-data|string|必填 -newpath|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件移动成功", - "msg": "Success" -} -} -``` -#### 保存文件 -> *post*,/admin/file/file_save - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -save_path|form-data|string|必填 -file_data|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件保存成功", - "msg": "Success" -} -} -``` -#### 删除文件 -> *post*,/admin/file/file_delete - -参数字段|参数属性|类型|选项 ----|---|---|---|--- -user_name|form-data|string|必填 -file_name|form-data|string|必填 -file_path|form-data|string|必填 - -> 返回示例: -```json -{ -{ - "code": 200, - "data": "文件删除成功", - "msg": "Success" -} -} -``` \ No newline at end of file diff --git a/app/http/controller/web/file_controller.go b/app/http/controller/web/file_controller.go deleted file mode 100644 index 83338ce..0000000 --- a/app/http/controller/web/file_controller.go +++ /dev/null @@ -1,209 +0,0 @@ -package web - -import ( - "fmt" - "goskeleton/app/global/consts" - "goskeleton/app/service/file" - "goskeleton/app/utils/response" - "os" - - "github.com/gin-gonic/gin" -) - -type File struct { -} - -// 创建文件 -func (f *File) Creat(context *gin.Context) { - //从context获得路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - file_Path := context.GetString(consts.ValidatorPrefix + "file_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_Path := fmt.Sprintf("%s/%s.docx", file_Path, file_Name) - - //file, err := os.Create(final_Path) - if err := file.CreateFile(user_name, final_Path); err != nil { - response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg, err.Error()) - return - } - - // 文件创建成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件创建成功") -} - -// 创建文件夹 -func (f *File) FolderCreat(context *gin.Context) { - //从context获得路径和文件夹名,并拼接获得最终文件夹路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - folder_Path := context.GetString(consts.ValidatorPrefix + "folder_path") - folder_Name := context.GetString(consts.ValidatorPrefix + "folder_name") - final_Path := fmt.Sprintf("%s/%s", folder_Path, folder_Name) - - if err := file.CreateFolder(user_name, final_Path); err != nil { - response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg, err.Error()) - return - } - - // 文件创建成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件夹创建成功") -} - -// 打开文件 -func (f *File) Get(context *gin.Context) { - //从context获得路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - file_Path := context.GetString(consts.ValidatorPrefix + "file_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_Path := fmt.Sprintf("%s/%s.docx", file_Path, file_Name) - - fileObj, err := file.GetFile(user_name, final_Path) - if err != nil { - // 根据不同的错误类型,返回更具体、合适的错误响应给客户端 - switch err := err.(type) { - case *os.PathError: - //文件路径错误 - response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error()) - default: - if err == os.ErrNotExist { - //文件不存在错误 - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error()) - } - - } - return - } - defer fileObj.Close() // 确保文件使用完后被关闭 - - // 文件获取成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件获取成功") -} - -// 文件重命名 -func (f *File) Rename(context *gin.Context) { - //从context获得路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - file_Path := context.GetString(consts.ValidatorPrefix + "file_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_Path := fmt.Sprintf("%s/%s.docx", file_Path, file_Name) - - //old_Name := context.GetString(consts.ValidatorPrefix + "oldname") - new_Name := context.GetString(consts.ValidatorPrefix + "newname") - new_finalpath := fmt.Sprintf("%s/%s.docx", file_Path, new_Name) - - err := file.FileRename(user_name, final_Path, new_finalpath) - if err != nil { - // 根据不同的错误类型,返回更具体、合适的错误响应给客户端 - switch err := err.(type) { - case *os.PathError: - //文件路径错误 - response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error()) - default: - if err == os.ErrNotExist { - //文件不存在错误 - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error()) - } - - } - return - } - - // 文件重命名成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件重命名成功") -} - -// 文件移动 -func (f *File) Move(context *gin.Context) { - //从context获得路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - file_Path := context.GetString(consts.ValidatorPrefix + "file_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_Path := fmt.Sprintf("%s/%s.docx", file_Path, file_Name) - - //old_Name := context.GetString(consts.ValidatorPrefix + "oldname") - new_Path := context.GetString(consts.ValidatorPrefix + "newpath") - new_finalpath := fmt.Sprintf("%s/%s.docx", new_Path, file_Name) - - err := file.FileMove(user_name, final_Path, new_finalpath) - if err != nil { - // 根据不同的错误类型,返回更具体、合适的错误响应给客户端 - switch err := err.(type) { - case *os.PathError: - //文件路径错误 - response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error()) - default: - if err == os.ErrNotExist { - //文件不存在错误 - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error()) - } - - } - return - } - - // 文件移动成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件移动成功") -} - -// 文件保存 -func (f *File) Save(context *gin.Context) { - //从context获得路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - Save_path := context.GetString(consts.ValidatorPrefix + "save_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_savePath := fmt.Sprintf("%s/%s.docx", Save_path, file_Name) - - fileDataBase64 := context.PostForm("file_data") - if fileDataBase64 == "" { - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, nil) - return - } - - err := file.FileSave(user_name, final_savePath, fileDataBase64) - if err != nil { - // 根据不同的错误类型,返回更具体、合适的错误响应给客户端 - switch err := err.(type) { - case *os.PathError: - //文件路径错误 - response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error()) - default: - if err == os.ErrNotExist { - //文件不存在错误 - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error()) - } - - } - return - } - - // 文件保存成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件保存成功") -} - -// 文件删除 -func (f *File) Delete(context *gin.Context) { - // 从context获得用户名、文件路径和文件名,并拼接获得最终文件路径 - user_name := context.GetString(consts.ValidatorPrefix + "user_name") - file_Path := context.GetString(consts.ValidatorPrefix + "file_path") - file_Name := context.GetString(consts.ValidatorPrefix + "file_name") - final_Path := fmt.Sprintf("%s/%s.docx", file_Path, file_Name) - - err := file.FileDe(user_name, final_Path) - if err != nil { - // 根据不同的错误类型,返回更具体、合适的错误响应给客户端 - switch err := err.(type) { - case *os.PathError: - //文件路径错误 - response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error()) - default: - if err == os.ErrNotExist { - //文件不存在错误 - response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error()) - } - - } - return - } - - // 文件删除成功,返回成功响应给客户端 - response.Success(context, consts.CurdStatusOkMsg, "文件删除成功") -} diff --git a/routers/web.go b/routers/web.go deleted file mode 100755 index f1275db..0000000 --- a/routers/web.go +++ /dev/null @@ -1,136 +0,0 @@ -package routers - -import ( - "github.com/gin-contrib/pprof" - "github.com/gin-gonic/gin" - - // "go.uber.org/zap" - "goskeleton/app/global/consts" - "goskeleton/app/global/variable" - "goskeleton/app/http/controller/captcha" - "goskeleton/app/http/middleware/authorization" - "goskeleton/app/http/middleware/cors" - validatorFactory "goskeleton/app/http/validator/core/factory" - // "goskeleton/app/utils/gin_release" - // "net/http" -) - -func InitWebRouter_Co() *gin.Engine { - var router *gin.Engine = gin.Default() - // 日志显示在控制台 - pprof.Register(router) - - //根据配置进行设置跨域 - if variable.ConfigYml.GetBool("HttpServer.AllowCrossDomain") { - router.Use(cors.Next()) - } - - // 创建一个验证码路由 - verifyCode := router.Group("captcha") - { - // 验证码业务,该业务无需专门校验参数,所以可以直接调用控制器 - verifyCode.GET("/", (&captcha.Captcha{}).GenerateId) // 获取验证码ID - verifyCode.GET("/:captcha_id", (&captcha.Captcha{}).GetImg) // 获取图像地址 - verifyCode.GET("/:captcha_id/:captcha_value", (&captcha.Captcha{}).CheckCode) // 校验验证码 - } - // 创建一个后端接口路由组 - backend := router.Group("/admin/") - { - - // 【不需要token】中间件验证的路由 用户注册、登录 - noAuth := backend.Group("users/") - { - // 关于路由的第二个参数用法说明 - // 1.编写一个表单参数验证器结构体,参见代码: app/http/validator/web/users/register.go - // 2.将以上表单参数验证器注册,遵守 键 =》值 格式注册即可 ,app/http/validator/common/register_validator/web_register_validator.go 20行就是注册时候的键 consts.ValidatorPrefix+"UsersRegister" - // 3.按照注册时的键,直接从容器调用即可 :validatorFactory.Create(consts.ValidatorPrefix+"UsersRegister") - noAuth.POST("register", validatorFactory.Create(consts.ValidatorPrefix+"UsersRegister")) // ok - // 不需要验证码即可登陆 - noAuth.POST("login", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogin")) // ok - - // 如果加载了验证码中间件,那么就需要提交验证码才可以登陆(本质上就是给登陆接口增加了2个参数:验证码id提交时的键:captcha_id 和 验证码值提交时的键 captcha_value,具体参见配置文件) - //noAuth.Use(authorization.CheckCaptchaAuth()).POST("login", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogin")) - - // 获取公钥,用于密码等敏感信息的加密 - noAuth.POST("publickey", validatorFactory.Create(consts.ValidatorPrefix+"PublicKey")) - } - - // 刷新token - refreshToken := backend.Group("users/") - { - // 刷新token,当过期的token在允许失效的延长时间范围内,用旧token换取新token - refreshToken.Use(authorization.RefreshTokenConditionCheck()).POST("refreshtoken", validatorFactory.Create(consts.ValidatorPrefix+"RefreshToken")) - } - // TODO:linlnf - // 人工智能识别相关 - aiRecognition := backend.Group("ai_recognition/") - { - // 请求图片文字识别 - aiRecognition.POST("pic_recognition", validatorFactory.Create(consts.ValidatorPrefix+"PicRecognition")) - // 请求语音识别 - aiRecognition.POST("voc_recognition", validatorFactory.Create(consts.ValidatorPrefix+"VocRecognition")) - } - // TODO:linlnf - // 人工智能文档处理相关 - aiDoc := backend.Group("ai_doc/") - { - // 请求优化文字 - aiDoc.POST("doc_refine", validatorFactory.Create(consts.ValidatorPrefix+"DocRefine")) - } - - // 智能排版相关 - aiLayout := backend.Group("ai_layout/") - { - // 请求样式生成 - aiLayout.POST("style_generate", validatorFactory.Create(consts.ValidatorPrefix+"StyleGenerate")) - // 请求排版 - aiLayout.POST("layout_generate", validatorFactory.Create(consts.ValidatorPrefix+"LayoutGenerate")) - } - - // 【需要token】中间件验证的路由 - backend.Use(authorization.CheckTokenAuth()) - { - // 用户组路由 - users := backend.Group("users/") - { - // 查询 ,这里的验证器直接从容器获取,是因为程序启动时,将验证器注册在了容器,具体代码位置:App\Http\Validator\Web\Users\xxx - // 展示用户详细信息-用户名、ID - users.GET("info", validatorFactory.Create(consts.ValidatorPrefix+"UsersInfo")) - // 新增 - // users.POST("create", validatorFactory.Create(consts.ValidatorPrefix+"UsersStore")) // not need - // 更新用户名或密码 - users.POST("username", validatorFactory.Create(consts.ValidatorPrefix+"UsersNameUpdate")) - users.POST("password", validatorFactory.Create(consts.ValidatorPrefix+"UsersPasswordUpdate")) - // 注销用户 - users.POST("delete", validatorFactory.Create(consts.ValidatorPrefix+"UsersDestroy")) - // 退出登录 - users.POST("logout", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogout")) - } - } - - //【需要token】中间件验证的路由 - backend.Use(authorization.CheckTokenAuth()) - { - // 文件操作相关路由组 - file := backend.Group("file/") - { - //创建文件 - file.POST("file_creat", validatorFactory.Create(consts.ValidatorPrefix+"FileCreat")) - //打开文件 - file.GET("file_get", validatorFactory.Create(consts.ValidatorPrefix+"FileGet")) - //文件重命名 - file.POST("file_rename", validatorFactory.Create(consts.ValidatorPrefix+"FileRename")) - //移动文件 - file.POST("file_move", validatorFactory.Create(consts.ValidatorPrefix+"FileMove")) - //保存文件 - file.POST("file_save", validatorFactory.Create(consts.ValidatorPrefix+"FileSave")) - //删除文件 - file.POST("file_delete", validatorFactory.Create(consts.ValidatorPrefix+"FileDelete")) - //创建文件夹 - file.POST("folder_creat", validatorFactory.Create(consts.ValidatorPrefix+"FolderCreat")) - } - } - - } - return router -}