GetUserUsageStatisticsSummary 获取特定用户的用量统计摘要信息
(userId int, startDate, endDate string, tokenId int, modelName string)
| 532 | |
| 533 | // GetUserUsageStatisticsSummary 获取特定用户的用量统计摘要信息 |
| 534 | func 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 获取特定用户的月度用量统计摘要信息 |
| 590 | func GetUserMonthlyUsageStatisticsSummary(userId int, startDate, endDate string, tokenId int, modelName string) (map[string]interface{}, error) { |
no test coverage detected