From 96c5870aa0d3f107f471db7e1be4d58f0fc35319 Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Tue, 24 Mar 2026 12:18:00 +0800 Subject: [PATCH] f --- .../http/handlers/statistics_handler.go | 67 +++++++++++++------ 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/internal/infrastructure/http/handlers/statistics_handler.go b/internal/infrastructure/http/handlers/statistics_handler.go index ede94c5..f4d38ff 100644 --- a/internal/infrastructure/http/handlers/statistics_handler.go +++ b/internal/infrastructure/http/handlers/statistics_handler.go @@ -1509,18 +1509,18 @@ func (h *StatisticsHandler) AdminGetTodayCertifiedEnterprises(c *gin.Context) { // GetPublicApiPopularityRanking 获取API受欢迎程度排行榜(公开接口) // @Summary 获取API受欢迎程度排行榜 -// @Description 获取API受欢迎程度排行榜,仅返回产品名称和编码,默认统计日度数据 +// @Description 获取API受欢迎程度排行榜,返回原始数据 // @Tags 统计公开接口 // @Accept json // @Produce json -// @Param period query string false "时间周期" Enums(today,month,total) default(today) +// @Param period query string false "时间周期" Enums(today,month,total) default(month) // @Param limit query int false "返回数量" default(10) -// @Success 200 {object} interfaces.APIResponse{data=[]ApiPopularityRankingItem} "获取成功" +// @Success 200 {object} interfaces.APIResponse "获取成功" // @Failure 400 {object} interfaces.APIResponse "请求参数错误" // @Failure 500 {object} interfaces.APIResponse "服务器内部错误" // @Router /api/v1/statistics/api-popularity-ranking [get] func (h *StatisticsHandler) GetPublicApiPopularityRanking(c *gin.Context) { - period := c.DefaultQuery("period", "today") // 默认日度 + period := c.DefaultQuery("period", "month") // 默认月度 limit := h.getIntQuery(c, "limit", 10) // 默认10条 // 调用应用服务获取API受欢迎程度排行榜 @@ -1531,23 +1531,48 @@ func (h *StatisticsHandler) GetPublicApiPopularityRanking(c *gin.Context) { return } - // 转换数据,只保留产品名称和编码 - if rankings, ok := result.Data.([]interface{}); ok { - var publicRankings []ApiPopularityRankingItem - for _, ranking := range rankings { - if rankingMap, ok := ranking.(map[string]interface{}); ok { - if product, productOk := rankingMap["product"].(map[string]interface{}); productOk { - item := ApiPopularityRankingItem{ - Name: product["name"].(string), - Code: product["code"].(string), - } - publicRankings = append(publicRankings, item) - } - } - } - h.responseBuilder.Success(c, publicRankings, "获取API受欢迎程度排行榜成功") - return + processedData := removeCallCountWhenDescriptionEqualsName(result.Data) + h.responseBuilder.Success(c, processedData, "获取API受欢迎程度排行榜成功") +} + +// removeCallCountWhenDescriptionEqualsName 在公开排行榜数据中移除 product_id 和 call_count 字段 +func removeCallCountWhenDescriptionEqualsName(data interface{}) interface{} { + dataMap, ok := data.(map[string]interface{}) + if !ok { + return data } - h.responseBuilder.Success(c, []ApiPopularityRankingItem{}, "获取API受欢迎程度排行榜成功") + rankingsRaw, ok := dataMap["rankings"] + if !ok { + return data + } + + switch rankings := rankingsRaw.(type) { + case []map[string]interface{}: + for _, item := range rankings { + delete(item, "product_id") + delete(item, "call_count") + } + + case []interface{}: + for _, ranking := range rankings { + item, ok := ranking.(map[string]interface{}) + if !ok { + continue + } + delete(item, "product_id") + delete(item, "call_count") + } + } + + return dataMap +} + +// getMapKeys 获取map的所有键(用于调试) +func getMapKeys(m map[string]interface{}) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + return keys }