初始化项目

This commit is contained in:
2025-12-06 15:24:30 +08:00
parent 88a2753211
commit fd08b8925f
59 changed files with 2456 additions and 447 deletions

View File

@@ -0,0 +1,147 @@
package controller
import (
"context"
"cidservice/model/dto"
"cidservice/service"
)
var (
StatReport = &statReport{}
)
type statReport struct{}
// GenerateReport 生成报表
func (c *statReport) GenerateReport(ctx context.Context, req *dto.ReportGenerateReq) (res *dto.ReportGenerateRes, err error) {
var resp *dto.ReportGenerateResp
switch req.ReportType {
case "daily":
resp, err = service.StatReport.GenerateDailyReport(ctx, req)
case "monthly":
resp, err = service.StatReport.GenerateMonthlyReport(ctx, req)
case "quarterly":
resp, err = service.StatReport.GenerateQuarterlyReport(ctx, req)
case "yearly":
resp, err = service.StatReport.GenerateYearlyReport(ctx, req)
default:
return nil, err
}
if err != nil {
return nil, err
}
return &dto.ReportGenerateRes{
Data: resp,
}, nil
}
// GetReportList 获取报表列表
func (c *statReport) GetReportList(ctx context.Context, req *dto.ReportListReq) (res *dto.ReportListRes, err error) {
resp, err := service.StatReport.GetReportList(ctx, req)
if err != nil {
return nil, err
}
return &dto.ReportListRes{
Data: resp,
}, nil
}
// GetReportDetail 获取报表详情
func (c *statReport) GetReportDetail(ctx context.Context, req *dto.ReportDetailReq) (res *dto.ReportDetailRes, err error) {
resp, err := service.StatReport.GetReportDetail(ctx, req.ReportID)
if err != nil {
return nil, err
}
return &dto.ReportDetailRes{
Data: resp,
}, nil
}
// QueryStats 统计查询
func (c *statReport) QueryStats(ctx context.Context, req *dto.StatQueryReq) (res *dto.StatQueryRes, err error) {
// 这里调用统计查询服务
// resp, err := service.StatReport.QueryStats(ctx, req)
// 暂时返回示例数据
resp := &dto.StatQueryResp{
Data: []*dto.StatDataPoint{
{
Date: "2024-01-01",
Impressions: 1000,
Clicks: 50,
Revenue: 500.0,
CTR: 5.0,
AvgDuration: 30.5,
},
},
Summary: &dto.StatSummary{
TotalImpressions: 1000,
TotalClicks: 50,
TotalRevenue: 500.0,
AvgCTR: 5.0,
AvgDuration: 30.5,
GrowthRate: &dto.GrowthRate{
Impressions: 10.5,
Clicks: 8.2,
Revenue: 12.3,
CTR: -1.2,
},
},
}
return &dto.StatQueryRes{
Data: resp,
}, nil
}
// RealTimeStats 实时统计
func (c *statReport) RealTimeStats(ctx context.Context, req *dto.RealTimeStatReq) (res *dto.RealTimeStatRes, err error) {
// 这里调用实时统计服务
// resp, err := service.StatReport.GetRealTimeStats(ctx, req)
// 暂时返回示例数据
resp := &dto.RealTimeStatResp{
CurrentHour: &dto.HourlyStat{
Hour: "14:00",
Impressions: 120,
Clicks: 6,
Revenue: 60.0,
},
Last24Hours: []*dto.HourlyStat{
{
Hour: "13:00",
Impressions: 110,
Clicks: 5,
Revenue: 55.0,
},
{
Hour: "12:00",
Impressions: 100,
Clicks: 4,
Revenue: 50.0,
},
},
}
return &dto.RealTimeStatRes{
Data: resp,
}, nil
}
// ExportReport 导出报表
func (c *statReport) ExportReport(ctx context.Context, req *dto.ReportDetailReq) (res *dto.ExportReportRes, err error) {
// 获取报表详情
resp, err := service.StatReport.GetReportDetail(ctx, req.ReportID)
if err != nil {
return nil, err
}
// 返回导出数据由上层处理HTTP响应
return &dto.ExportReportRes{
ReportData: resp,
}, nil
}