/** * 全局路由 * @author * @since 2021/8/20 * @File : router */ package router import ( "github.com/gin-contrib/multitemplate" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" "gitlab.52pay.top/go/easygoadmin/app/controller" "gitlab.52pay.top/go/easygoadmin/app/middleware" widget2 "gitlab.52pay.top/go/easygoadmin/app/widget" "html/template" "path/filepath" "strings" "time" ) var Router *gin.Engine func init() { //gin.SetMode(gin.ReleaseMode) //gin.SetMode(gin.DebugMode) //fmt.Println("路由已加载") // 初始化 router := gin.Default() router.Use(middleware.DoCors()) // 创建基于cookie的存储引擎,secret11111 参数是用于加密的密钥 store := cookie.NewStore([]byte("TTTTMIIEogIBAAKCAQEA2")) // 设置session中间件,参数mysession,指的是session的名字,也是cookie的名字 // store是前面创建的存储引擎,我们可以替换成其他存储引擎 router.Use(sessions.Sessions("easygoadmin", store)) // 登录验证中间件 router.Use(middleware.CheckLogin()) // 验证权限 router.Use(middleware.CheckAuth()) // 设置模板文件目录 router.HTMLRender = LoadTemplates("views") // 指定模板加载目录 //router.LoadHTMLGlob("views/**/*") // 设置静态资源路由 router.Static("/resource", "./public/resource") router.Static("/temp", "./public/uploads/temp") router.StaticFile("/favicon.ico", "./public/resource/images/favicon.ico") /* 文件上传 */ upload := router.Group("upload") { // 上传图片 upload.POST("/uploadImage/:typ", controller.Upload.UploadImage) // 上传图片,存到mongoDb //upload.POST("/uploadImage2Db/:typ", controller.Upload.UploadImage2Db) } /* mongodb图片 */ img := router.Group("img") { img.GET("/:mode/:filename", controller.Img.Image) } /* 登录注册 */ index := router.Group("/") { index.GET("/:id", controller.Index.None) index.Any("/admin", controller.Index.Index) index.Any("/login", controller.Login.Login) index.Any("/loginKf", controller.Login.LoginKf) index.Any("/customer", controller.Login.Customer) index.GET("/captcha", controller.Login.Captcha) index.GET("/index", controller.Index.Index) index.GET("/main", controller.Index.Main) index.Any("/userInfo", controller.Index.UserInfo) index.Any("/updatePwd", controller.Index.UpdatePwd) index.GET("/logout", controller.Index.Logout) index.GET("/test", controller.Test.Test) } /* 用户管理 */ user := router.Group("user") { user.GET("/index", controller.User.Index) user.POST("/list", controller.User.List) user.GET("/edit", controller.User.Edit) user.POST("/add", controller.User.Add) user.POST("/update", controller.User.Update) user.POST("/delete/:ids", controller.User.Delete) user.POST("/setStatus", controller.User.Status) user.POST("/resetPwd", controller.User.ResetPwd) user.GET("/checkUser", controller.User.CheckUser) } // 职级管理 level := router.Group("/level") { level.GET("/index", controller.Level.Index) level.POST("/list", controller.Level.List) level.GET("/edit", controller.Level.Edit) level.POST("/add", controller.Level.Add) level.POST("/update", controller.Level.Update) level.POST("/delete/:ids", controller.Level.Delete) level.POST("/setStatus", controller.Level.Status) } /* 岗位管理 */ position := router.Group("position") { position.GET("/index", controller.Position.Index) position.POST("/list", controller.Position.List) position.GET("/edit", controller.Position.Edit) position.POST("/add", controller.Position.Add) position.POST("/update", controller.Position.Update) position.POST("/delete/:ids", controller.Position.Delete) position.POST("/setStatus", controller.Position.Status) position.GET("/getPositionList", controller.Position.GetPositionList) } /* 角色路由 */ role := router.Group("role") { role.GET("/index", controller.Role.Index) role.POST("/list", controller.Role.List) role.GET("/edit", controller.Role.Edit) role.POST("/add", controller.Role.Add) role.POST("/update", controller.Role.Update) role.POST("/delete/:ids", controller.Role.Delete) role.POST("/setStatus", controller.Role.Status) role.GET("/getRoleList", controller.Role.GetRoleList) } /* 角色菜单权限 */ roleMenu := router.Group("rolemenu") { roleMenu.GET("/index/:roleId", controller.RoleMenu.Index) roleMenu.POST("/save", controller.RoleMenu.Save) } /* 部门管理 */ dept := router.Group("dept") { dept.GET("/index", controller.Dept.Index) dept.POST("/list", controller.Dept.List) dept.GET("/edit", controller.Dept.Edit) dept.POST("/add", controller.Dept.Add) dept.POST("/update", controller.Dept.Update) dept.POST("/delete/:ids", controller.Dept.Delete) dept.GET("/getDeptList", controller.Dept.GetDeptList) } /* 菜单管理 */ menu := router.Group("menu") { menu.GET("/index", controller.Menu.Index) menu.POST("/list", controller.Menu.List) menu.GET("/edit", controller.Menu.Edit) menu.POST("/add", controller.Menu.Add) menu.POST("/update", controller.Menu.Update) menu.POST("/delete/:ids", controller.Menu.Delete) } ///* 登录日志 */ //loginLog := router.Group("loginlog") //{ // loginLog.GET("/index", controller.LoginLog.Index) // loginLog.GET("/list", controller.LoginLog.List) // loginLog.POST("/delete/:ids", controller.LoginLog.Delete) //} // ///* 操作日志 */ //operLog := router.Group("operlog") //{ // operLog.GET("/list", controller.OperLog.List) //} /* 友链管理 */ link := router.Group("link") { link.GET("/index", controller.Link.Index) link.POST("/list", controller.Link.List) link.GET("/edit", controller.Link.Edit) link.POST("/add", controller.Link.Add) link.POST("/update", controller.Link.Update) link.POST("/delete/:ids", controller.Link.Delete) link.POST("/setStatus", controller.Link.Status) } /* 城市管理 */ city := router.Group("city") { city.GET("/index", controller.City.Index) city.POST("/list", controller.City.List) city.GET("/edit", controller.City.Edit) city.POST("/add", controller.City.Add) city.POST("/update", controller.City.Update) city.POST("/delete/:ids", controller.City.Delete) city.POST("/getChilds", controller.City.GetChilds) } /* 会员等级 */ memberlevel := router.Group("memberlevel") { memberlevel.GET("/index", controller.MemberLevel.Index) memberlevel.POST("/list", controller.MemberLevel.List) memberlevel.GET("/edit", controller.MemberLevel.Edit) memberlevel.POST("/add", controller.MemberLevel.Add) memberlevel.POST("/update", controller.MemberLevel.Update) memberlevel.POST("/delete/:ids", controller.MemberLevel.Delete) memberlevel.GET("/getMemberLevelList", controller.MemberLevel.GetMemberLevelList) } /* 会员管理 */ member := router.Group("member") { member.GET("/index", controller.Member.Index) member.POST("/list", controller.Member.List) member.GET("/edit", controller.Member.Edit) member.POST("/add", controller.Member.Add) member.POST("/update", controller.Member.Update) member.POST("/delete/:ids", controller.Member.Delete) member.POST("/setStatus", controller.Member.Status) } /* 字典管理 */ dict := router.Group("dict") { dict.GET("/index", controller.Dict.Index) dict.POST("/list", controller.Dict.List) dict.POST("/add", controller.Dict.Add) dict.POST("/update", controller.Dict.Update) dict.POST("/delete/:ids", controller.Dict.Delete) } /* 字典项管理 */ dictdata := router.Group("dictdata") { dictdata.POST("/list", controller.DictData.List) dictdata.POST("/add", controller.DictData.Add) dictdata.POST("/update", controller.DictData.Update) dictdata.POST("/delete/:ids", controller.DictData.Delete) } /* 配置管理 */ config := router.Group("config") { config.GET("/index", controller.Config.Index) config.POST("/list", controller.Config.List) config.POST("/add", controller.Config.Add) config.POST("/update", controller.Config.Update) config.POST("/delete/:ids", controller.Config.Delete) } /* 配置项管理 */ configdata := router.Group("configdata") { configdata.POST("/list", controller.ConfigData.List) configdata.POST("/add", controller.ConfigData.Add) configdata.POST("/update", controller.ConfigData.Update) configdata.POST("/delete/:ids", controller.ConfigData.Delete) configdata.POST("/setStatus", controller.ConfigData.Status) } /* 网站设置 */ configweb := router.Group("configweb") { configweb.Any("/index", controller.ConfigWeb.Index) } /* 统计分析 */ analysis := router.Group("analysis") { analysis.GET("/index", controller.Analysis.Index) } /* 代码生成器 */ generate := router.Group("generate") { generate.GET("/index", controller.Generate.Index) generate.POST("/list", controller.Generate.List) generate.POST("/generate", controller.Generate.Generate) generate.POST("/batchGenerate", controller.Generate.BatchGenerate) } /* 演示一 */ example := router.Group("example") { example.GET("/index", controller.Example.Index) example.POST("/list", controller.Example.List) example.GET("/edit", controller.Example.Edit) example.POST("/add", controller.Example.Add) example.POST("/update", controller.Example.Update) example.POST("/delete/:ids", controller.Example.Delete) example.POST("/setStatus", controller.Example.Status) example.POST("/setIsVip", controller.Example.IsVip) } /* 演示二 */ example2 := router.Group("example2") { example2.GET("/index", controller.Example2.Index) example2.POST("/list", controller.Example2.List) example2.GET("/edit", controller.Example2.Edit) example2.POST("/add", controller.Example2.Add) example2.POST("/update", controller.Example2.Update) example2.POST("/delete/:ids", controller.Example2.Delete) example2.POST("/setStatus", controller.Example2.Status) } Router = router // 启动 //router.Run(":9097") } func LoadTemplates(templatesDir string) multitemplate.Renderer { r := multitemplate.NewRenderer() // 非模板嵌套 htmls, err := filepath.Glob(templatesDir + "/*.html") if err != nil { panic(err.Error()) } for _, html := range htmls { r.AddFromGlob(filepath.Base(html), html) } // 布局模板 layouts, err := filepath.Glob(templatesDir + "/layouts/*.html") if err != nil { panic(err.Error()) } // 嵌套的内容模板 includes, err := filepath.Glob(templatesDir + "/includes/**/*.html") if err != nil { panic(err.Error()) } // template自定义函数 funcMap := template.FuncMap{ "StringToLower": func(str string) string { return strings.ToLower(str) }, "date2": func() string { return time.Now().Format("2006-01-02 15:04:05.00000") }, "safe": func(str string) template.HTML { return template.HTML(str) }, "widget": widget2.Widget, "query": widget2.Query, "add": widget2.Add, "edit": widget2.Edit, "delete": widget2.Delete, "dall": widget2.Dall, "expand": widget2.Expand, "collapse": widget2.Collapse, "addz": widget2.Addz, "switch": widget2.Switch, "select": widget2.Select, "submit": widget2.Submit, "icon": widget2.Icon, "transfer": widget2.Transfer, "upload_image": widget2.UploadImage, "album": widget2.Album, "item": widget2.Item, "kindeditor": widget2.Kindeditor, "date": widget2.Date, "checkbox": widget2.Checkbox, "radio": widget2.Radio, "city": widget2.City, "refund": widget2.Refund, } // 将主模板,include页面,layout子模板组合成一个完整的html页面 for _, include := range includes { // 文件名称 baseName := filepath.Base(include) files := []string{} if strings.Contains(baseName, "edit") { files = append(files, templatesDir+"/layouts/form.html", include) } else if strings.Contains(baseName, "dict") { files = append(files, templatesDir+"/layouts/main.html", include) // 字典 dict, _ := filepath.Glob(templatesDir + "/includes/dict/*.html") files = append(files, dict...) } else if strings.Contains(baseName, "config") && !strings.Contains(baseName, "configweb") { files = append(files, templatesDir+"/layouts/main.html", include) // 配置 dict, _ := filepath.Glob(templatesDir + "/includes/config/*.html") files = append(files, dict...) } else if strings.Contains(baseName, "user_info") { files = append(files, include) } else { files = append(files, templatesDir+"/layouts/layout.html", include) } files = append(files, layouts...) r.AddFromFilesFuncs(baseName, funcMap, files...) } return r }