package api import ( "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/service" "github.com/gin-gonic/gin" "go.uber.org/zap" ) type MiniStatisticsApi struct{} var miniStatisticsService = service.ServiceGroupApp.MiniStatisticsService // GetMiniStatistics 获取小程序基础统计数据 // @Tags MiniStatistics // @Summary 获取小程序基础统计数据 // @Description 获取小程序基础统计数据 // @Accept json // @Produce json // @Success 200 {object} response.Response{data=response.MiniStatisticsResponse} "获取成功" // @Router /wechat/mini/statistics [get] func (m *MiniStatisticsApi) GetMiniStatistics(c *gin.Context) { statistics, err := miniStatisticsService.GetMiniStatistics() if err != nil { global.GVA_LOG.Error("获取小程序基础统计数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(statistics, c) } // GetVisitTrendData 获取访问趋势数据 // @Tags MiniStatistics // @Summary 获取访问趋势数据 // @Description 获取小程序访问趋势数据 // @Accept json // @Produce json // @Param startDate query string false "开始日期" // @Param endDate query string false "结束日期" // @Success 200 {object} response.Response{data=[]response.VisitTrendData} "获取成功" // @Router /wechat/mini/statistics/visit-trend [get] func (m *MiniStatisticsApi) GetVisitTrendData(c *gin.Context) { startDate := c.Query("startDate") endDate := c.Query("endDate") trendData, err := miniStatisticsService.GetVisitTrendData(startDate, endDate) if err != nil { global.GVA_LOG.Error("获取访问趋势数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(trendData, c) } // GetSourceData 获取用户来源分布数据 // @Tags MiniStatistics // @Summary 获取用户来源分布数据 // @Description 获取小程序用户来源分布数据 // @Accept json // @Produce json // @Success 200 {object} response.Response{data=[]response.SourceData} "获取成功" // @Router /wechat/mini/statistics/source [get] func (m *MiniStatisticsApi) GetSourceData(c *gin.Context) { sourceData, err := miniStatisticsService.GetSourceData() if err != nil { global.GVA_LOG.Error("获取用户来源分布数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(sourceData, c) } // GetPageData 获取页面访问数据 // @Tags MiniStatistics // @Summary 获取页面访问数据 // @Description 获取小程序页面访问数据 // @Accept json // @Produce json // @Success 200 {object} response.Response{data=[]response.PageData} "获取成功" // @Router /wechat/mini/statistics/page [get] func (m *MiniStatisticsApi) GetPageData(c *gin.Context) { pageData, err := miniStatisticsService.GetPageData() if err != nil { global.GVA_LOG.Error("获取页面访问数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(pageData, c) } // GetRetentionData 获取用户留存数据 // @Tags MiniStatistics // @Summary 获取用户留存数据 // @Description 获取小程序用户留存数据 // @Accept json // @Produce json // @Success 200 {object} response.Response{data=[]response.RetentionData} "获取成功" // @Router /wechat/mini/statistics/retention [get] func (m *MiniStatisticsApi) GetRetentionData(c *gin.Context) { retentionData, err := miniStatisticsService.GetRetentionData() if err != nil { global.GVA_LOG.Error("获取用户留存数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(retentionData, c) } // GetDeviceData 获取设备分布数据 // @Tags MiniStatistics // @Summary 获取设备分布数据 // @Description 获取小程序设备分布数据 // @Accept json // @Produce json // @Success 200 {object} response.Response{data=[]response.DeviceData} "获取成功" // @Router /wechat/mini/statistics/device [get] func (m *MiniStatisticsApi) GetDeviceData(c *gin.Context) { deviceData, err := miniStatisticsService.GetDeviceData() if err != nil { global.GVA_LOG.Error("获取设备分布数据失败!", zap.Error(err)) response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithData(deviceData, c) }