170 lines
8.5 KiB
Go
170 lines
8.5 KiB
Go
package main
|
||
|
||
import (
|
||
"log"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
"github.com/niangaodev/art-code/config"
|
||
"github.com/niangaodev/art-code/handlers"
|
||
"github.com/niangaodev/art-code/middleware"
|
||
"github.com/niangaodev/art-code/utils"
|
||
)
|
||
|
||
func main() {
|
||
// 初始化数据库连接
|
||
config.InitDB()
|
||
defer config.CloseDB()
|
||
|
||
// 初始化ip2region (如果文件不存在,将降级为普通IP记录)
|
||
// 请确保在server根目录或合适位置放入 ip2region.xdb
|
||
utils.InitIP2Region("ip2region.xdb")
|
||
|
||
// 创建Gin引擎
|
||
router := gin.New()
|
||
|
||
// 配置中间件
|
||
router.Use(middleware.CorsMiddleware())
|
||
router.Use(middleware.AccessLogMiddleware()) // 添加访问日志中间件
|
||
router.Use(gin.Recovery())
|
||
|
||
// API路由组
|
||
api := router.Group("/api")
|
||
{
|
||
// 作品路由
|
||
api.GET("/works", handlers.GetWorks)
|
||
api.GET("/works/:id", handlers.GetWork)
|
||
|
||
// 博客路由
|
||
api.GET("/posts", handlers.GetPosts)
|
||
api.GET("/posts/:id", handlers.GetPost)
|
||
|
||
// 代码片段路由
|
||
api.GET("/snippets", handlers.GetSnippets)
|
||
api.GET("/snippets/:id", handlers.GetSnippet)
|
||
|
||
// 标签路由
|
||
api.GET("/tags", handlers.GetTags)
|
||
api.GET("/tags/:id", handlers.GetTag)
|
||
api.GET("/tags/:id/posts", handlers.GetPostsByTagID)
|
||
|
||
// 代码执行路由
|
||
api.POST("/run", handlers.RunCode)
|
||
|
||
// 关于页面路由
|
||
api.GET("/about", handlers.GetAboutProfile)
|
||
|
||
// 合作页面路由
|
||
api.GET("/testimonials", handlers.GetTestimonials)
|
||
api.GET("/partners", handlers.GetPartners)
|
||
|
||
// 咨询相关路由
|
||
api.POST("/inquiries", handlers.SubmitInquiry)
|
||
api.GET("/email-suffixes", handlers.GetEmailSuffixes)
|
||
}
|
||
|
||
// 管理员API路由组
|
||
admin := router.Group("/api/admin")
|
||
{
|
||
// 登录路由(不需要认证)
|
||
admin.POST("/login", handlers.AdminLogin)
|
||
|
||
// 需要认证的路由
|
||
authAdmin := admin.Group("/")
|
||
authAdmin.Use(middleware.AuthMiddleware(), middleware.OperationLogMiddleware())
|
||
{
|
||
// 用户管理
|
||
authAdmin.GET("/users", middleware.PermissionMiddleware("users", "read"), handlers.AdminGetUsers)
|
||
authAdmin.GET("/users/:id", middleware.PermissionMiddleware("users", "read"), handlers.AdminGetUser)
|
||
authAdmin.POST("/users", middleware.PermissionMiddleware("users", "create"), handlers.AdminCreateUser)
|
||
authAdmin.PUT("/users/:id", middleware.PermissionMiddleware("users", "update"), handlers.AdminUpdateUser)
|
||
authAdmin.DELETE("/users/:id", middleware.PermissionMiddleware("users", "delete"), handlers.AdminDeleteUser)
|
||
|
||
// 角色管理
|
||
authAdmin.GET("/roles", middleware.PermissionMiddleware("roles", "read"), handlers.AdminGetRoles)
|
||
authAdmin.POST("/roles", middleware.PermissionMiddleware("roles", "create"), handlers.AdminCreateRole)
|
||
authAdmin.PUT("/roles/:id", middleware.PermissionMiddleware("roles", "update"), handlers.AdminUpdateRole)
|
||
authAdmin.DELETE("/roles/:id", middleware.PermissionMiddleware("roles", "delete"), handlers.AdminDeleteRole)
|
||
|
||
// 权限管理
|
||
authAdmin.GET("/permissions", middleware.PermissionMiddleware("roles", "read"), handlers.AdminGetPermissions)
|
||
authAdmin.PUT("/roles/:id/permissions", middleware.PermissionMiddleware("roles", "update"), handlers.AdminUpdateRolePermissions)
|
||
|
||
// 作品管理
|
||
authAdmin.GET("/works", middleware.PermissionMiddleware("works", "read"), handlers.AdminGetWorks)
|
||
authAdmin.POST("/works", middleware.PermissionMiddleware("works", "create"), handlers.AdminCreateWork)
|
||
authAdmin.PUT("/works/:id", middleware.PermissionMiddleware("works", "update"), handlers.AdminUpdateWork)
|
||
authAdmin.DELETE("/works/:id", middleware.PermissionMiddleware("works", "delete"), handlers.AdminDeleteWork)
|
||
|
||
// 代码片段管理
|
||
authAdmin.GET("/snippets", middleware.PermissionMiddleware("snippets", "read"), handlers.AdminGetSnippets)
|
||
authAdmin.POST("/snippets", middleware.PermissionMiddleware("snippets", "create"), handlers.AdminCreateSnippet)
|
||
authAdmin.PUT("/snippets/:id", middleware.PermissionMiddleware("snippets", "update"), handlers.AdminUpdateSnippet)
|
||
authAdmin.DELETE("/snippets/:id", middleware.PermissionMiddleware("snippets", "delete"), handlers.AdminDeleteSnippet)
|
||
|
||
// 系统配置管理
|
||
authAdmin.GET("/settings", middleware.PermissionMiddleware("settings", "read"), handlers.AdminGetSettings)
|
||
authAdmin.POST("/settings", middleware.PermissionMiddleware("settings", "create"), handlers.AdminCreateSetting)
|
||
authAdmin.PUT("/settings", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateSetting)
|
||
authAdmin.DELETE("/settings/:key", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeleteSetting)
|
||
|
||
// 仪表盘统计
|
||
authAdmin.GET("/dashboard/stats", middleware.PermissionMiddleware("dashboard", "read"), handlers.GetDashboardStats)
|
||
|
||
// 文章管理
|
||
authAdmin.GET("/posts", middleware.PermissionMiddleware("posts", "read"), handlers.AdminGetPosts)
|
||
authAdmin.POST("/posts", middleware.PermissionMiddleware("posts", "create"), handlers.CreatePost)
|
||
authAdmin.PUT("/posts/:id", middleware.PermissionMiddleware("posts", "update"), handlers.AdminUpdatePost)
|
||
authAdmin.DELETE("/posts/:id", middleware.PermissionMiddleware("posts", "delete"), handlers.AdminDeletePost)
|
||
|
||
// 文章历史记录
|
||
authAdmin.GET("/posts/:id/history", middleware.PermissionMiddleware("posts", "read"), handlers.AdminGetPostHistory)
|
||
authAdmin.GET("/posts/:id/history/:version", middleware.PermissionMiddleware("posts", "read"), handlers.AdminGetPostHistoryByVersion)
|
||
|
||
// 操作日志管理
|
||
authAdmin.GET("/operation-logs", middleware.PermissionMiddleware("operation_logs", "read"), handlers.AdminGetOperationLogs)
|
||
|
||
// 仪表盘数据
|
||
authAdmin.GET("/dashboard/stats", middleware.PermissionMiddleware("dashboard", "read"), handlers.AdminGetDashboardStats)
|
||
authAdmin.GET("/dashboard/activities", middleware.PermissionMiddleware("dashboard", "read"), handlers.AdminGetRecentActivities)
|
||
|
||
// 标签管理
|
||
authAdmin.GET("/tags", middleware.PermissionMiddleware("tags", "read"), handlers.AdminGetTags)
|
||
authAdmin.POST("/tags", middleware.PermissionMiddleware("tags", "create"), handlers.AdminCreateTag)
|
||
authAdmin.PUT("/tags/:id", middleware.PermissionMiddleware("tags", "update"), handlers.AdminUpdateTag)
|
||
authAdmin.DELETE("/tags/:id", middleware.PermissionMiddleware("tags", "delete"), handlers.AdminDeleteTag)
|
||
|
||
// 关于页面管理 (复用 settings 权限)
|
||
authAdmin.GET("/about", middleware.PermissionMiddleware("settings", "read"), handlers.AdminGetAboutProfiles)
|
||
authAdmin.POST("/about", middleware.PermissionMiddleware("settings", "create"), handlers.AdminCreateAboutProfile)
|
||
authAdmin.PUT("/about/:id", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateAboutProfile)
|
||
authAdmin.DELETE("/about/:id", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeleteAboutProfile)
|
||
|
||
// 客户评价管理 (复用 settings 权限)
|
||
authAdmin.POST("/testimonials", middleware.PermissionMiddleware("settings", "create"), handlers.AdminCreateTestimonial)
|
||
authAdmin.PUT("/testimonials/:id", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateTestimonial)
|
||
authAdmin.DELETE("/testimonials/:id", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeleteTestimonial)
|
||
|
||
// 合作伙伴管理 (复用 settings 权限)
|
||
authAdmin.POST("/partners", middleware.PermissionMiddleware("settings", "create"), handlers.AdminCreatePartner)
|
||
authAdmin.PUT("/partners/:id", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdatePartner)
|
||
authAdmin.DELETE("/partners/:id", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeletePartner)
|
||
|
||
// 咨询管理
|
||
authAdmin.GET("/inquiries", middleware.PermissionMiddleware("settings", "read"), handlers.AdminGetInquiries)
|
||
authAdmin.PUT("/inquiries/:id/status", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateInquiryStatus)
|
||
|
||
// 邮箱后缀配置
|
||
authAdmin.GET("/email-suffixes", middleware.PermissionMiddleware("settings", "read"), handlers.AdminGetEmailSuffixes)
|
||
authAdmin.POST("/email-suffixes", middleware.PermissionMiddleware("settings", "create"), handlers.AdminCreateEmailSuffix)
|
||
authAdmin.PUT("/email-suffixes/:id", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateEmailSuffix)
|
||
authAdmin.DELETE("/email-suffixes/:id", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeleteEmailSuffix)
|
||
}
|
||
}
|
||
|
||
// 启动服务器
|
||
log.Println("Server running on http://localhost:8081")
|
||
if err := router.Run(":8081"); err != nil {
|
||
log.Fatalf("Failed to start server: %v", err)
|
||
}
|
||
}
|