fix: calculate total file size on backend instead of frontend
- Backend returns total_size for all matching versions - Frontend uses backend's total_size instead of computing from current page Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,27 @@ func handleGetAllVersions(c *gin.Context) {
|
|||||||
var forcedCount int64
|
var forcedCount int64
|
||||||
database.DB.Model(&model.Version{}).Where("application_id IN ? AND update_strategy = ?", appIDs, "forced").Count(&forcedCount)
|
database.DB.Model(&model.Version{}).Where("application_id IN ? AND update_strategy = ?", appIDs, "forced").Count(&forcedCount)
|
||||||
|
|
||||||
|
// 计算总文件大小
|
||||||
|
var totalSize int64
|
||||||
|
sizeQuery := database.DB.Model(&model.Version{}).Where("application_id IN ?", appIDs)
|
||||||
|
if applicationIDFilter != "" {
|
||||||
|
sizeQuery = sizeQuery.Where("application_id = ?", applicationIDFilter)
|
||||||
|
}
|
||||||
|
if updateStrategyFilter != "" {
|
||||||
|
sizeQuery = sizeQuery.Where("update_strategy = ?", updateStrategyFilter)
|
||||||
|
}
|
||||||
|
if updateTypeFilter != "" {
|
||||||
|
sizeQuery = sizeQuery.Where("update_type = ?", updateTypeFilter)
|
||||||
|
}
|
||||||
|
if updateMethodFilter != "" {
|
||||||
|
sizeQuery = sizeQuery.Where("update_method = ?", updateMethodFilter)
|
||||||
|
}
|
||||||
|
if searchFilter != "" {
|
||||||
|
searchLower := strings.ToLower(searchFilter)
|
||||||
|
sizeQuery = sizeQuery.Where("LOWER(version) LIKE ? OR LOWER(description) LIKE ?", "%"+searchLower+"%", "%"+searchLower+"%")
|
||||||
|
}
|
||||||
|
sizeQuery.Select("COALESCE(SUM(file_size), 0)").Scan(&totalSize)
|
||||||
|
|
||||||
query := database.DB.Where("application_id IN ?", appIDs)
|
query := database.DB.Where("application_id IN ?", appIDs)
|
||||||
if applicationIDFilter != "" {
|
if applicationIDFilter != "" {
|
||||||
query = query.Where("application_id = ?", applicationIDFilter)
|
query = query.Where("application_id = ?", applicationIDFilter)
|
||||||
@@ -190,6 +211,7 @@ func handleGetAllVersions(c *gin.Context) {
|
|||||||
"versions": result,
|
"versions": result,
|
||||||
"total": total,
|
"total": total,
|
||||||
"forced_count": forcedCount,
|
"forced_count": forcedCount,
|
||||||
|
"total_size": totalSize,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,9 +68,7 @@ const methodOptions = computed(() => [
|
|||||||
{ label: t('admin.versions.methods.manual'), value: 'manual' },
|
{ label: t('admin.versions.methods.manual'), value: 'manual' },
|
||||||
])
|
])
|
||||||
|
|
||||||
const totalSize = computed(() => {
|
const totalSize = ref(0)
|
||||||
return versions.value.reduce((sum, v) => sum + (v.file_size || 0), 0)
|
|
||||||
})
|
|
||||||
|
|
||||||
const serverPagination = computed(() => ({
|
const serverPagination = computed(() => ({
|
||||||
page: currentPage.value,
|
page: currentPage.value,
|
||||||
@@ -131,6 +129,7 @@ async function fetchVersions() {
|
|||||||
versions.value = data?.versions || []
|
versions.value = data?.versions || []
|
||||||
total.value = data?.total || 0
|
total.value = data?.total || 0
|
||||||
forcedCount.value = data?.forced_count || 0
|
forcedCount.value = data?.forced_count || 0
|
||||||
|
totalSize.value = data?.total_size || 0
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
console.error('加载版本列表失败:', error)
|
console.error('加载版本列表失败:', error)
|
||||||
|
|||||||
Reference in New Issue
Block a user