MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / GetMonthlyUsageStatisticsSummary

Function GetMonthlyUsageStatisticsSummary

model/usage_statistics.go:321–401  ·  view source on GitHub ↗

GetMonthlyUsageStatisticsSummary 获取月度用量统计摘要信息

(startDate, endDate string, tokenId int, modelName string)

Source from the content-addressed store, hash-verified

319
320// GetMonthlyUsageStatisticsSummary 获取月度用量统计摘要信息
321func GetMonthlyUsageStatisticsSummary(startDate, endDate string, tokenId int, modelName string) (map[string]interface{}, error) {
322 // 使用原生SQL查询实现按月分组统计
323 db := DB.Model(&UsageStatistics{})
324
325 // 构建查询条件
326 conditions := ""
327 params := []interface{}{}
328
329 // 添加日期范围条件(按月查询)
330 if startDate != "" {
331 conditions += " AND date >= ?"
332 params = append(params, startDate+"-01")
333 }
334 if endDate != "" {
335 // 获取 endDate 所在月份的最后一天
336 if len(endDate) >= 7 {
337 year := endDate[0:4]
338 month := endDate[5:7]
339 conditions += " AND date <= ?"
340 params = append(params, year+"-"+month+"-31")
341 }
342 }
343
344 if tokenId > 0 {
345 conditions += " AND token_id = ?"
346 params = append(params, tokenId)
347 }
348 if modelName != "" {
349 conditions += " AND model_name LIKE ?"
350 params = append(params, "%"+modelName+"%")
351 }
352
353 // 构建完整的SQL查询
354 sql := `
355 SELECT
356 SUM(total_requests) as total_requests,
357 SUM(successful_requests) as successful_requests,
358 SUM(failed_requests) as failed_requests,
359 SUM(total_tokens) as total_tokens,
360 SUM(total_quota) as total_quota
361 FROM (
362 SELECT
363 SUM(total_requests) as total_requests,
364 SUM(successful_requests) as successful_requests,
365 SUM(failed_requests) as failed_requests,
366 SUM(total_tokens) as total_tokens,
367 SUM(total_quota) as total_quota
368 FROM usage_statistics
369 WHERE 1=1` + conditions + `
370 GROUP BY SUBSTR(date, 1, 7), token_id, token_name, model_name
371 ) as grouped_data
372 `
373
374 var result struct {
375 TotalRequests int `json:"total_requests"`
376 SuccessfulRequests int `json:"successful_requests"`
377 FailedRequests int `json:"failed_requests"`
378 TotalTokens int `json:"total_tokens"`

Callers 2

Calls 1

ScanMethod · 0.45

Tested by

no test coverage detected