- 新增登录页面(使用 shadcn-svelte 组件) - 后端添加 JWT 认证 API (/api/auth/login, /api/auth/validate) - 用户账号通过 server/config.yaml 配置 - 前端路由保护(未登录跳转登录页) - 侧边栏显示当前用户信息 - 支持退出登录功能
67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
// Package router 路由配置
|
|
package router
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"billai-server/handler"
|
|
)
|
|
|
|
// Config 路由配置参数
|
|
type Config struct {
|
|
OutputDir string // 输出目录(用于静态文件服务)
|
|
Version string // 应用版本
|
|
}
|
|
|
|
// Setup 设置所有路由
|
|
func Setup(r *gin.Engine, cfg Config) {
|
|
// 健康检查
|
|
r.GET("/health", healthCheck(cfg.Version))
|
|
|
|
// API 路由组
|
|
setupAPIRoutes(r)
|
|
|
|
// 静态文件下载
|
|
r.Static("/download", cfg.OutputDir)
|
|
}
|
|
|
|
// healthCheck 健康检查处理器
|
|
func healthCheck(version string) gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": "ok",
|
|
"version": version,
|
|
})
|
|
}
|
|
}
|
|
|
|
// setupAPIRoutes 设置 API 路由
|
|
func setupAPIRoutes(r *gin.Engine) {
|
|
api := r.Group("/api")
|
|
{
|
|
// 认证相关(无需登录)
|
|
api.POST("/auth/login", handler.Login)
|
|
api.GET("/auth/validate", handler.ValidateToken)
|
|
|
|
// 账单上传
|
|
api.POST("/upload", handler.Upload)
|
|
|
|
// 复核相关
|
|
api.GET("/review", handler.Review)
|
|
|
|
// 账单查询
|
|
api.GET("/bills", handler.ListBills)
|
|
|
|
// 手动创建账单
|
|
api.POST("/bills/manual", handler.CreateManualBills)
|
|
|
|
// 月度统计(全部数据)
|
|
api.GET("/monthly-stats", handler.MonthlyStats)
|
|
|
|
// 待复核数据统计
|
|
api.GET("/review-stats", handler.ReviewStats)
|
|
}
|
|
}
|