修复所有分页页面统计从当前页计算的问题,改为服务端统计

This commit is contained in:
2026-05-10 07:04:22 +08:00
parent f198ae268e
commit 3cbb607ff3
11 changed files with 84 additions and 43 deletions
@@ -80,6 +80,11 @@ func handleGetAllAnnouncements(c *gin.Context) {
}
countQuery.Count(&total)
var activeCount, inactiveCount, topCount int64
database.DB.Model(&model.Announcement{}).Where("application_id IN ? AND status = ?", appIDs, "active").Count(&activeCount)
database.DB.Model(&model.Announcement{}).Where("application_id IN ? AND status = ?", appIDs, "inactive").Count(&inactiveCount)
database.DB.Model(&model.Announcement{}).Where("application_id IN ? AND is_top = ?", appIDs, true).Count(&topCount)
query := database.DB.Where("application_id IN ?", appIDs)
if applicationIDFilter != "" {
query = query.Where("application_id = ?", applicationIDFilter)
@@ -133,6 +138,9 @@ func handleGetAllAnnouncements(c *gin.Context) {
response.Success(c, gin.H{
"announcements": result,
"total": total,
"active_count": activeCount,
"inactive_count": inactiveCount,
"top_count": topCount,
})
}
+9 -5
View File
@@ -106,6 +106,9 @@ func handleGetDevices(c *gin.Context) {
}
countQuery.Count(&total)
var bannedCount int64
database.DB.Model(&model.UserDevice{}).Where("application_id IN ? AND status = ?", appIDs, "banned").Count(&bannedCount)
query := database.DB.Preload("User").Preload("Application").Where("application_id IN ?", appIDs)
if userIDFilter != "" {
@@ -168,11 +171,12 @@ func handleGetDevices(c *gin.Context) {
}
response.Success(c, gin.H{
"devices": devicesWithDetails,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"devices": devicesWithDetails,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"banned_count": bannedCount,
})
}
+14 -6
View File
@@ -1,4 +1,4 @@
package admin
package admin
import (
"strconv"
@@ -68,6 +68,11 @@ func handleGetLogs(c *gin.Context) {
query.Count(&total)
var successCount, failedCount, operationCount int64
database.DB.Model(&model.ApiUsage{}).Where("application_id IN ? OR user_id = ?", appIDs, userID).Where("status = ?", "success").Count(&successCount)
database.DB.Model(&model.ApiUsage{}).Where("application_id IN ? OR user_id = ?", appIDs, userID).Where("status = ?", "failed").Count(&failedCount)
database.DB.Model(&model.ApiUsage{}).Where("application_id IN ? OR user_id = ?", appIDs, userID).Where("log_type = ?", "operation").Count(&operationCount)
offset := (page - 1) * pageSize
if err := query.Preload("User").Preload("Application").Preload("AppUser").Order("created_at DESC").Offset(offset).Limit(pageSize).Find(&logs).Error; err != nil {
response.Error(c, 500, "获取日志失败")
@@ -75,10 +80,13 @@ func handleGetLogs(c *gin.Context) {
}
response.Success(c, gin.H{
"logs": logs,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"logs": logs,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"success_count": successCount,
"failed_count": failedCount,
"operation_count": operationCount,
})
}
+13 -5
View File
@@ -88,6 +88,11 @@ func handleGetTickets(c *gin.Context) {
var total int64
query.Count(&total)
var openCount, processingCount, resolvedCount int64
database.DB.Model(&model.Ticket{}).Where("user_id = ? OR assigned_to = ?", userID, userID).Where("status = ?", "open").Count(&openCount)
database.DB.Model(&model.Ticket{}).Where("user_id = ? OR assigned_to = ?", userID, userID).Where("status = ?", "processing").Count(&processingCount)
database.DB.Model(&model.Ticket{}).Where("user_id = ? OR assigned_to = ?", userID, userID).Where("status = ?", "resolved").Count(&resolvedCount)
offset := (page - 1) * pageSize
var tickets []model.Ticket
@@ -128,11 +133,14 @@ func handleGetTickets(c *gin.Context) {
}
response.Success(c, gin.H{
"tickets": result,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"tickets": result,
"total": total,
"page": page,
"page_size": pageSize,
"total_page": (total + int64(pageSize) - 1) / int64(pageSize),
"open_count": openCount,
"processing_count": processingCount,
"resolved_count": resolvedCount,
})
}
+6 -2
View File
@@ -95,6 +95,9 @@ func handleGetAllVersions(c *gin.Context) {
}
countQuery.Count(&total)
var forcedCount int64
database.DB.Model(&model.Version{}).Where("application_id IN ? AND update_strategy = ?", appIDs, "forced").Count(&forcedCount)
query := database.DB.Where("application_id IN ?", appIDs)
if applicationIDFilter != "" {
query = query.Where("application_id = ?", applicationIDFilter)
@@ -184,8 +187,9 @@ func handleGetAllVersions(c *gin.Context) {
}
response.Success(c, gin.H{
"versions": result,
"total": total,
"versions": result,
"total": total,
"forced_count": forcedCount,
})
}