修复admin卡密统计GORM累积条件问题、data-table传递server-pagination
This commit is contained in:
@@ -446,27 +446,24 @@ func handleGetCards(c *gin.Context) {
|
|||||||
var total int64
|
var total int64
|
||||||
query.Count(&total)
|
query.Count(&total)
|
||||||
|
|
||||||
baseQuery := database.DB.Model(&model.Card{}).
|
countBase := func(status string) int64 {
|
||||||
Joins("JOIN card_types ON cards.card_type_id = card_types.id").
|
var count int64
|
||||||
Joins("JOIN applications ON card_types.application_id = applications.id")
|
q := database.DB.Model(&model.Card{}).
|
||||||
|
Joins("JOIN card_types ON cards.card_type_id = card_types.id").
|
||||||
if len(authorizedAppIDs) > 0 {
|
Joins("JOIN applications ON card_types.application_id = applications.id")
|
||||||
baseQuery = baseQuery.Where("applications.user_id = ? OR (cards.application_id IN ? AND cards.creator_id = ?)", userID, authorizedAppIDs, userID)
|
if len(authorizedAppIDs) > 0 {
|
||||||
} else {
|
q = q.Where("applications.user_id = ? OR (cards.application_id IN ? AND cards.creator_id = ?)", userID, authorizedAppIDs, userID)
|
||||||
baseQuery = baseQuery.Where("applications.user_id = ?", userID)
|
} else {
|
||||||
|
q = q.Where("applications.user_id = ?", userID)
|
||||||
|
}
|
||||||
|
q.Where("cards.status = ?", status).Count(&count)
|
||||||
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
var unusedCount int64
|
unusedCount := countBase("unused")
|
||||||
baseQuery.Where("cards.status = ?", "unused").Count(&unusedCount)
|
usedCount := countBase("used")
|
||||||
|
bannedCount := countBase("banned")
|
||||||
var usedCount int64
|
expiredCount := countBase("expired")
|
||||||
baseQuery.Where("cards.status = ?", "used").Count(&usedCount)
|
|
||||||
|
|
||||||
var bannedCount int64
|
|
||||||
baseQuery.Where("cards.status = ?", "banned").Count(&bannedCount)
|
|
||||||
|
|
||||||
var expiredCount int64
|
|
||||||
baseQuery.Where("cards.status = ?", "expired").Count(&expiredCount)
|
|
||||||
|
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20"))
|
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20"))
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ const props = defineProps<Omit<DataTableProps<Card>, 'columns'> & {
|
|||||||
onToggleStatus: (row: Card) => void
|
onToggleStatus: (row: Card) => void
|
||||||
onDelete: (row: Card) => void
|
onDelete: (row: Card) => void
|
||||||
searchFilter?: string
|
searchFilter?: string
|
||||||
|
serverPagination?: DataTableProps<Card>['serverPagination']
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@@ -45,6 +46,7 @@ const table = generateVueTable<Card>({
|
|||||||
get data() { return props.data },
|
get data() { return props.data },
|
||||||
get loading() { return props.loading },
|
get loading() { return props.loading },
|
||||||
columns: columns.value,
|
columns: columns.value,
|
||||||
|
serverPagination: props.serverPagination,
|
||||||
})
|
})
|
||||||
|
|
||||||
const columnLabels: Record<string, string> = {
|
const columnLabels: Record<string, string> = {
|
||||||
@@ -67,7 +69,7 @@ defineExpose({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DataTable :columns="columns" :data :loading :table @refresh="emit('refresh')">
|
<DataTable :columns="columns" :data :loading :table :server-pagination @refresh="emit('refresh')">
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="flex items-center justify-end">
|
<div class="flex items-center justify-end">
|
||||||
|
|||||||
Reference in New Issue
Block a user