删除 miniprogram2 目录及其所有文件,包括项目配置、样式、图标和自定义组件,简化项目结构,专注于 miniprogram 目录的开发和维护。

This commit is contained in:
Alex-larget
2026-02-25 16:26:13 +08:00
parent 44f995a5a3
commit 04abcb2a87
171 changed files with 3703 additions and 21333 deletions

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"net/http"
"strconv"
"time"
"soul-api/internal/database"
@@ -14,15 +15,32 @@ import (
"github.com/gin-gonic/gin"
)
// AdminWithdrawalsList GET /api/admin/withdrawals
// AdminWithdrawalsList GET /api/admin/withdrawals(支持分页 page、pageSize筛选 status
func AdminWithdrawalsList(c *gin.Context) {
statusFilter := c.Query("status")
var list []model.Withdrawal
q := database.DB().Order("created_at DESC").Limit(100)
if statusFilter != "" {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
if page < 1 {
page = 1
}
if pageSize < 1 || pageSize > 100 {
pageSize = 10
}
db := database.DB()
q := db.Model(&model.Withdrawal{})
if statusFilter != "" && statusFilter != "all" {
q = q.Where("status = ?", statusFilter)
}
if err := q.Find(&list).Error; err != nil {
var total int64
q.Count(&total)
var list []model.Withdrawal
query := db.Order("created_at DESC")
if statusFilter != "" && statusFilter != "all" {
query = query.Where("status = ?", statusFilter)
}
if err := query.Offset((page - 1) * pageSize).Limit(pageSize).Find(&list).Error; err != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error(), "withdrawals": []interface{}{}, "stats": gin.H{"total": 0}})
return
}
@@ -82,7 +100,27 @@ func AdminWithdrawalsList(c *gin.Context) {
"userConfirmedAt": userConfirmedAt,
})
}
c.JSON(http.StatusOK, gin.H{"success": true, "withdrawals": withdrawals, "stats": gin.H{"total": len(withdrawals)}})
totalPages := int(total) / pageSize
if int(total)%pageSize > 0 {
totalPages++
}
var pendingCount, successCount, failedCount int64
var pendingAmount, successAmount float64
db.Model(&model.Withdrawal{}).Where("status IN ?", []string{"pending", "pending_confirm", "processing"}).Count(&pendingCount)
db.Model(&model.Withdrawal{}).Where("status IN ?", []string{"pending", "pending_confirm", "processing"}).Select("COALESCE(SUM(amount), 0)").Scan(&pendingAmount)
db.Model(&model.Withdrawal{}).Where("status IN ?", []string{"success", "completed"}).Count(&successCount)
db.Model(&model.Withdrawal{}).Where("status IN ?", []string{"success", "completed"}).Select("COALESCE(SUM(amount), 0)").Scan(&successAmount)
db.Model(&model.Withdrawal{}).Where("status IN ?", []string{"failed", "rejected"}).Count(&failedCount)
c.JSON(http.StatusOK, gin.H{
"success": true, "withdrawals": withdrawals,
"total": total, "page": page, "pageSize": pageSize, "totalPages": totalPages,
"stats": gin.H{
"total": total, "pendingCount": pendingCount, "pendingAmount": pendingAmount,
"successCount": successCount, "successAmount": successAmount, "failedCount": failedCount,
},
})
}
// AdminWithdrawalsAction PUT /api/admin/withdrawals 审核/打款