chore: initial commit

This commit is contained in:
2026-07-22 17:50:33 +08:00
parent 82936a8987
commit ee9f50b859
107 changed files with 8346 additions and 0 deletions

18
internal/router/client.go Normal file
View File

@@ -0,0 +1,18 @@
package router
import (
"server/internal/handler"
"github.com/go-chi/chi/v5"
)
func SetupPostRoutes(r chi.Router, h *handler.PostHandler) {
r.Get("/post", h.ListPage)
r.Get("/post/{slug}", h.GetPost)
r.Get("/category/stats", h.ListCategoryStats)
r.Get("/post/archive", h.ListArchives)
}
func SetupWebRoutes(r chi.Router, h *handler.WebHandler) {
}

80
internal/router/router.go Normal file
View File

@@ -0,0 +1,80 @@
package router
import (
"net/http"
"os"
"path/filepath"
"server/internal/config"
"server/internal/handler"
"server/internal/middleware"
"github.com/go-chi/chi/v5"
"go.uber.org/fx"
)
type Handlers struct {
fx.In
// auth
JwtMiddleware *middleware.JWTMiddleware
AuthMiddleware *middleware.AuthMiddleware
LoggerMiddleware *middleware.LoggerMiddleware
// system
SysUserHandler *handler.SysUserHandler
SysRoleHandler *handler.SysRoleHandler
SysMenuHandler *handler.SysMenuHandler
SysApiHandler *handler.SysApiHandler
SysFileHandler *handler.SysFileHandler
SysPostHandler *handler.SysPostHandler
CategoryHandler *handler.CategoryHandler
// web
PostHandler *handler.PostHandler
WebHandler *handler.WebHandler
}
func setupStaticFiles(r chi.Router) {
rootDir, _ := os.Getwd()
uploadsDir := filepath.Join(rootDir, "uploads")
r.Handle("/static/*", http.StripPrefix("/static/", http.FileServer(http.Dir(uploadsDir))))
}
func NewRouter(m Handlers) *chi.Mux {
r := chi.NewRouter()
r.Use(m.LoggerMiddleware.Middleware)
if config.IsDev() {
// 开放静态目录
setupStaticFiles(r)
}
r.Route("/api/admin", func(r chi.Router) {
r.Post("/auth/login", m.SysUserHandler.Login)
r.Post("/auth/refresh-token", m.SysUserHandler.RefreshToken)
r.Post("/auth/logout", m.SysUserHandler.Logout)
r.Group(func(r chi.Router) {
r.Use(m.JwtMiddleware.Middleware)
r.Use(m.AuthMiddleware.Middleware)
SetupSysUserRoutes(r, m.SysUserHandler)
SetupSysRoleRoutes(r, m.SysRoleHandler)
SetupSysMenuRoutes(r, m.SysMenuHandler)
SetupSysApiRoutes(r, m.SysApiHandler)
SetupSysFileRoutes(r, m.SysFileHandler)
SetupCategoryRoutes(r, m.CategoryHandler)
SetupSysPostRoutes(r, m.SysPostHandler)
})
})
// web api
r.Route("/api", func(r chi.Router) {
r.Group(func(r chi.Router) {
SetupPostRoutes(r, m.PostHandler)
SetupWebRoutes(r, m.WebHandler)
})
})
return r
}

68
internal/router/system.go Normal file
View File

@@ -0,0 +1,68 @@
package router
import (
"server/internal/handler"
"github.com/go-chi/chi/v5"
)
func SetupSysUserRoutes(r chi.Router, h *handler.SysUserHandler) {
r.Get("/user", h.ListPage)
r.Get("/user/info", h.GetUserInfo)
r.Get("/user/{id}/roles", h.GetRoles)
r.Post("/user", h.Create)
r.Patch("/user/{id}", h.Update)
r.Put("/user/{id}/roles", h.SetRoles)
r.Patch("/user/{id}/password", h.UpdatePassword)
r.Delete("/user/{id}", h.Delete)
}
func SetupSysRoleRoutes(r chi.Router, h *handler.SysRoleHandler) {
r.Get("/role", h.ListPage)
r.Get("/role/{id}/menus", h.GetRoleMenus)
r.Get("/role/{id}/apis", h.GetRoleApis)
r.Get("/role/all", h.GetRoles)
r.Post("/role", h.Create)
r.Patch("/role/{id}", h.Update)
r.Put("/role/{id}/menus", h.SetRoleMenus)
r.Put("/role/{id}/apis", h.SetRoleApis)
r.Delete("/role/{id}", h.Delete)
}
func SetupSysMenuRoutes(r chi.Router, h *handler.SysMenuHandler) {
r.Get("/menu", h.ListPage)
r.Get("/menu/all", h.GetMenus)
r.Post("/menu", h.Create)
r.Patch("/menu/{id}", h.Update)
r.Delete("/menu/{id}", h.Delete)
}
func SetupSysApiRoutes(r chi.Router, h *handler.SysApiHandler) {
r.Get("/api", h.ListPage)
r.Get("/api/all", h.GetAllSysApis)
r.Get("/api/group-names", h.GetApiGroupNames)
r.Post("/api", h.Create)
r.Patch("/api/{id}", h.Update)
r.Delete("/api/{id}", h.Delete)
}
func SetupSysFileRoutes(r chi.Router, h *handler.SysFileHandler) {
r.Get("/file", h.ListPage)
r.Post("/file", h.Upload)
}
func SetupSysPostRoutes(r chi.Router, h *handler.SysPostHandler) {
r.Get("/post", h.ListPage)
r.Get("/post/{id}", h.GetPostById)
r.Post("/post", h.Create)
r.Patch("/post/{id}", h.Update)
r.Delete("/post/{id}", h.Delete)
}
func SetupCategoryRoutes(r chi.Router, h *handler.CategoryHandler) {
r.Get("/category", h.ListPage)
r.Get("/category/all", h.ListAll)
r.Post("/category", h.Create)
r.Patch("/category/{id}", h.Update)
r.Delete("/category/{id}", h.Delete)
}