feat: 实现后端业务逻辑和Inertia.js管理后台
- 实现数据库连接和自动迁移 - 实现用户服务(登录、资料、JWT认证) - 实现许愿服务(创建、列表、机器人许愿) - 实现订单服务(创建、支付、状态管理) - 实现JWT认证中间件 - 实现管理后台API(仪表盘、用户、订单、许愿、设置) - 创建Inertia.js前端页面(Vue3 + Tailwind CSS) - 修复Go模块依赖问题
This commit is contained in:
+25
-19
@@ -2,25 +2,28 @@ package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/gouki/lunar-server/internal/config"
|
||||
"github.com/gouki/lunar-server/internal/handler"
|
||||
"github.com/gouki/lunar-server/internal/middleware"
|
||||
"github.com/gouki/lunar-server/internal/service"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 加载环境变量
|
||||
if err := godotenv.Load("../.env.local"); err != nil {
|
||||
log.Println("No .env.local file found, using system environment")
|
||||
}
|
||||
|
||||
// 初始化配置
|
||||
// 加载配置
|
||||
cfg := config.Load()
|
||||
|
||||
// 设置 Gin 模式
|
||||
// 初始化数据库
|
||||
if err := config.InitDB(cfg); err != nil {
|
||||
log.Fatalf("Failed to initialize database: %v", err)
|
||||
}
|
||||
|
||||
// 启动机器人许愿定时任务
|
||||
wishService := service.NewWishService()
|
||||
wishService.StartRobotWishJob()
|
||||
|
||||
// 设置运行模式
|
||||
if cfg.Server.Env == "production" {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
@@ -32,9 +35,9 @@ func main() {
|
||||
r.Use(middleware.CORS())
|
||||
r.Use(middleware.Logger())
|
||||
|
||||
// 静态文件(Inertia.js 前端构建产物)
|
||||
r.Static("/build", "./web/public/build")
|
||||
r.LoadHTMLGlob("web/*.html")
|
||||
// 静态文件
|
||||
r.Static("/static", "./web/static")
|
||||
r.StaticFile("/", "./web/index.html")
|
||||
|
||||
// API 路由
|
||||
api := r.Group("/api")
|
||||
@@ -54,31 +57,34 @@ func main() {
|
||||
{
|
||||
pay.POST("/create", middleware.Auth(), handler.CreateOrder)
|
||||
pay.POST("/notify", handler.PayNotify)
|
||||
pay.GET("/status/:orderId", middleware.Auth(), handler.GetPayStatus)
|
||||
pay.GET("/status/:orderId", handler.GetPayStatus)
|
||||
}
|
||||
|
||||
// 订单管理
|
||||
// 订单相关
|
||||
order := api.Group("/order")
|
||||
{
|
||||
order.GET("/list", middleware.Auth(), handler.GetOrderList)
|
||||
order.GET("/detail/:id", middleware.Auth(), handler.GetOrderDetail)
|
||||
order.GET("/:id", middleware.Auth(), handler.GetOrderDetail)
|
||||
order.POST("/cancel/:id", middleware.Auth(), handler.CancelOrder)
|
||||
}
|
||||
|
||||
// 许愿树
|
||||
// 许愿相关
|
||||
wish := api.Group("/wish")
|
||||
{
|
||||
wish.GET("/tree", handler.GetWishTree)
|
||||
wish.POST("/create", middleware.Auth(), handler.CreateWish)
|
||||
wish.GET("/list", handler.GetWishList)
|
||||
wish.GET("/:id", handler.GetWishDetail)
|
||||
wish.DELETE("/:id", middleware.Auth(), handler.DeleteWish)
|
||||
wish.GET("/products", handler.GetWishProducts)
|
||||
}
|
||||
}
|
||||
|
||||
// 管理后台(Inertia.js)
|
||||
// 管理后台路由(Inertia.js)
|
||||
admin := r.Group("/admin")
|
||||
admin.Use(middleware.AdminAuth())
|
||||
{
|
||||
admin.GET("/", handler.AdminIndex)
|
||||
admin.GET("/", handler.AdminDashboard)
|
||||
admin.GET("/users", handler.AdminUsers)
|
||||
admin.GET("/orders", handler.AdminOrders)
|
||||
admin.GET("/wishes", handler.AdminWishes)
|
||||
@@ -89,6 +95,6 @@ func main() {
|
||||
addr := ":" + cfg.Server.Port
|
||||
log.Printf("Server starting on %s", addr)
|
||||
if err := r.Run(addr); err != nil {
|
||||
log.Fatal("Failed to start server:", err)
|
||||
log.Fatalf("Failed to start server: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user