diff --git a/internal/api/admin/dashboard_admin.go b/internal/api/admin/dashboard_admin.go index 826c69e..8c74b3e 100755 --- a/internal/api/admin/dashboard_admin.go +++ b/internal/api/admin/dashboard_admin.go @@ -220,11 +220,12 @@ type trendRequest struct { } type trendPoint struct { - Date string `json:"date"` - Value int64 `json:"value"` - Gmv int64 `json:"gmv"` - Orders int64 `json:"orders"` - NewUsers int64 `json:"newUsers"` + Date string `json:"date"` + Value int64 `json:"value"` + Gmv int64 `json:"gmv"` + PaidAmount int64 `json:"paidAmount"` + Orders int64 `json:"orders"` + NewUsers int64 `json:"newUsers"` } type salesDrawTrendResponse struct { @@ -1760,8 +1761,9 @@ func (h *handler) DashboardSalesDrawTrend() core.HandlerFunc { // 总业务价值 (GMV) + 订单数:仅统计小程序内已支付订单 var orderStats struct { - Orders int64 `gorm:"column:orders"` - Gmv int64 `gorm:"column:gmv"` + Orders int64 `gorm:"column:orders"` + Gmv int64 `gorm:"column:gmv"` + PaidAmount int64 `gorm:"column:paid_amount"` } _ = h.readDB.Orders.WithContext(ctx.RequestContext()).UnderlyingDB(). Model(&model.Orders{}). @@ -1770,7 +1772,7 @@ func (h *handler) DashboardSalesDrawTrend() core.HandlerFunc { Where("(ext_order_id = '' OR ext_order_id IS NULL)"). Where("paid_at >= ?", b.Start). Where("paid_at <= ?", b.End). - Select("COUNT(id) as orders, COALESCE(SUM(actual_amount + discount_amount), 0) as gmv"). + Select("COUNT(id) as orders, COALESCE(SUM(actual_amount + discount_amount), 0) as gmv, COALESCE(SUM(actual_amount), 0) as paid_amount"). Scan(&orderStats) // 新注册用户数 @@ -1780,11 +1782,12 @@ func (h *handler) DashboardSalesDrawTrend() core.HandlerFunc { Count() list[i] = trendPoint{ - Date: b.Label, - Value: draws, - Gmv: orderStats.Gmv / 100, // 转为元 - Orders: orderStats.Orders, - NewUsers: newUsers, + Date: b.Label, + Value: draws, + Gmv: orderStats.Gmv / 100, // 转为元 + PaidAmount: orderStats.PaidAmount / 100, // 转为元 + Orders: orderStats.Orders, + NewUsers: newUsers, } } diff --git a/internal/api/admin/dashboard_admin_test.go b/internal/api/admin/dashboard_admin_test.go index 6bfafb2..08a547e 100755 --- a/internal/api/admin/dashboard_admin_test.go +++ b/internal/api/admin/dashboard_admin_test.go @@ -1,6 +1,8 @@ package admin import ( + "encoding/json" + "strings" "testing" "time" ) @@ -116,3 +118,24 @@ func TestShouldUseMonthlyGranularityForAll(t *testing.T) { t.Fatalf("non-day granularity should not switch") } } + +func TestTrendPointJSONIncludesPaidAmount(t *testing.T) { + point := trendPoint{ + Date: "2026-03-01", + Value: 10, + Gmv: 20, + PaidAmount: 15, + Orders: 3, + NewUsers: 2, + } + + payload, err := json.Marshal(point) + if err != nil { + t.Fatalf("marshal trendPoint: %v", err) + } + + data := string(payload) + if !strings.Contains(data, "\"paidAmount\":15") { + t.Fatalf("expected paidAmount in json, got: %s", data) + } +}