Files
customer-server/controller/data_statistics_controller.go
2026-03-14 10:02:49 +08:00

63 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package controller - 数据统计控制器
// 功能:对话数据的统计分析、报表导出
package controller
import (
"context"
"customer-server/model/dto"
"customer-server/service"
"gitea.com/red-future/common/beans"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
var DataStatistics = new(dataStatistics)
type dataStatistics struct{}
// Add 添加数据统计
// 参数: req - 添加数据统计请求,包含日期和统计数据
// 返回: res - 添加成功后的统计ID等信息
// 功能: 创建新的数据统计记录
func (c *dataStatistics) Add(ctx context.Context, req *dto.AddDataStatisticsReq) (res *dto.AddDataStatisticsRes, err error) {
res, err = service.DataStatistics.Add(ctx, req)
return
}
// Update 更新数据统计
// 参数: req - 更新数据统计请求包含统计ID和待更新字段
// 返回: res - 空响应成功则err为nil
// 功能: 更新数据统计记录内容
func (c *dataStatistics) Update(ctx context.Context, req *dto.UpdateDataStatisticsReq) (res *beans.ResponseEmpty, err error) {
err = service.DataStatistics.Update(ctx, req)
return
}
// List 获取数据统计列表
// 参数: req - 列表查询请求,支持分页、日期范围筛选
// 返回: res - 数据统计列表及分页信息
// 功能: 分页查询数据统计记录,支持按日期范围筛选
func (c *dataStatistics) List(ctx context.Context, req *dto.ListDataStatisticsReq) (res *dto.ListDataStatisticsRes, err error) {
res, err = service.DataStatistics.List(ctx, req)
return
}
// Export 导出数据统计
// 参数: req - 导出请求,包含筛选条件
// 返回: res - 空响应直接写入Response流
// 功能: 将数据统计导出为ZIP文件包含Excel文件
func (c *dataStatistics) Export(ctx context.Context, req *dto.ExportDataStatisticsReq) (res *beans.ResponseEmpty, err error) {
zipData, filename, err := service.DataStatistics.Export(ctx, req)
if err != nil {
return
}
r := g.RequestFromCtx(ctx)
r.Response.Header().Set("Content-Type", "application/zip")
r.Response.Header().Set("Content-Disposition", "attachment; filename=\""+filename+"\"")
r.Response.Header().Set("Content-Length", gconv.String(len(zipData)))
r.Response.Write(zipData)
return
}