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

Function GetUserUsageStatisticsSummary

model/usage_statistics.go:534–587  ·  view source on GitHub ↗

GetUserUsageStatisticsSummary 获取特定用户的用量统计摘要信息

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

Source from the content-addressed store, hash-verified

532
533// GetUserUsageStatisticsSummary 获取特定用户的用量统计摘要信息
534func GetUserUsageStatisticsSummary(userId int, startDate, endDate string, tokenId int, modelName string) (map[string]interface{}, error) {
535 query := DB.Table("usage_statistics").
536 Joins("JOIN tokens ON usage_statistics.token_id = tokens.id").
537 Where("tokens.user_id = ?", userId)
538
539 // 添加查询条件
540 if startDate != "" {
541 query = query.Where("usage_statistics.date >= ?", startDate)
542 }
543 if endDate != "" {
544 query = query.Where("usage_statistics.date <= ?", endDate)
545 }
546 if tokenId > 0 {
547 query = query.Where("usage_statistics.token_id = ?", tokenId)
548 }
549 if modelName != "" {
550 query = query.Where("usage_statistics.model_name LIKE ?", "%"+modelName+"%")
551 }
552
553 var result struct {
554 TotalRequests int `json:"total_requests"`
555 SuccessfulRequests int `json:"successful_requests"`
556 FailedRequests int `json:"failed_requests"`
557 TotalTokens int `json:"total_tokens"`
558 TotalQuota int `json:"total_quota"`
559 }
560
561 err := query.Select(
562 "SUM(usage_statistics.total_requests) as total_requests",
563 "SUM(usage_statistics.successful_requests) as successful_requests",
564 "SUM(usage_statistics.failed_requests) as failed_requests",
565 "SUM(usage_statistics.total_tokens) as total_tokens",
566 "SUM(usage_statistics.total_quota) as total_quota",
567 ).Scan(&result).Error
568
569 if err != nil {
570 return nil, err
571 }
572
573 summary := map[string]interface{}{
574 "total_requests": result.TotalRequests,
575 "successful_requests": result.SuccessfulRequests,
576 "failed_requests": result.FailedRequests,
577 "success_rate": 0.0,
578 "total_tokens": result.TotalTokens,
579 "total_quota": result.TotalQuota,
580 }
581
582 if result.TotalRequests > 0 {
583 summary["success_rate"] = float64(result.SuccessfulRequests) / float64(result.TotalRequests) * 100
584 }
585
586 return summary, nil
587}
588
589// GetUserMonthlyUsageStatisticsSummary 获取特定用户的月度用量统计摘要信息
590func GetUserMonthlyUsageStatisticsSummary(userId int, startDate, endDate string, tokenId int, modelName string) (map[string]interface{}, error) {

Callers 1

GetUserUsageStatisticsFunction · 0.92

Calls 1

ScanMethod · 0.45

Tested by

no test coverage detected