feat: 前端搭建-未完成

This commit is contained in:
tbphp
2025-06-29 21:59:32 +08:00
parent ab95af0bbe
commit 731315144e
62 changed files with 4831 additions and 604 deletions

View File

@@ -0,0 +1,62 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
"gpt-load/internal/db"
"gpt-load/internal/models"
"gpt-load/internal/response"
)
// GetDashboardStats godoc
// @Summary Get dashboard statistics
// @Description Get statistics for the dashboard, including total requests, success rate, and group distribution.
// @Tags Dashboard
// @Accept json
// @Produce json
// @Success 200 {object} models.DashboardStats
// @Router /api/dashboard/stats [get]
func GetDashboardStats(c *gin.Context) {
var totalRequests, successRequests int64
var groupStats []models.GroupRequestStat
// Get total requests
if err := db.DB.Model(&models.RequestLog{}).Count(&totalRequests).Error; err != nil {
response.Error(c, http.StatusInternalServerError, "Failed to get total requests")
return
}
// Get success requests (status code 2xx)
if err := db.DB.Model(&models.RequestLog{}).Where("status_code >= ? AND status_code < ?", 200, 300).Count(&successRequests).Error; err != nil {
response.Error(c, http.StatusInternalServerError, "Failed to get success requests")
return
}
// Calculate success rate
var successRate float64
if totalRequests > 0 {
successRate = float64(successRequests) / float64(totalRequests)
}
// Get group stats
err := db.DB.Table("request_logs").
Select("groups.name as group_name, count(request_logs.id) as request_count").
Joins("join groups on groups.id = request_logs.group_id").
Group("groups.name").
Order("request_count desc").
Scan(&groupStats).Error
if err != nil {
response.Error(c, http.StatusInternalServerError, "Failed to get group stats")
return
}
stats := models.DashboardStats{
TotalRequests: totalRequests,
SuccessRequests: successRequests,
SuccessRate: successRate,
GroupStats: groupStats,
}
response.Success(c, stats)
}