GetMonthlyUsageStatisticsSummary 获取月度用量统计摘要信息
(startDate, endDate string, tokenId int, modelName string)
| 319 | |
| 320 | // GetMonthlyUsageStatisticsSummary 获取月度用量统计摘要信息 |
| 321 | func 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"` |
no test coverage detected