Files
kra-new/internal/service/business/analytics_excel.go
T

47 lines
1.7 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 business
import (
"context"
"strconv"
"kra/internal/biz/business"
"kra/internal/service/dto"
)
func (s *AnalyticsService) Export(ctx context.Context, req *dto.AnalyticsQuery) ([]byte, error) {
f, err := analyticsRequest(req)
if err != nil {
return nil, err
}
page, err := s.uc.ListAll(ctx, business.ChannelAnalytics, f)
if err != nil {
return nil, err
}
if !page.Available {
return nil, business.ErrChannelReportsUnavailable
}
headers := []string{"所属平台", "渠道名称", "归属商务", "渠道类型", "新增注册", "活跃玩家", "充值额", "付费玩家", "新增付费", "付费率"}
rows := make([][]ledgerCell, 0, len(page.Rows)+1)
appendRow := func(row *business.AnalyticsRow, summary bool) {
platform, name, owner, kind := business.PlatformName(row.SourceDB), row.Name, row.BusinessName(), "—"
if row.PromoteType != nil {
if *row.PromoteType == 1 {
kind = "公会"
} else if *row.PromoteType == 0 {
kind = "个人"
}
}
if summary {
platform, name, owner, kind = "全部", "合计(有效端 "+strconv.FormatInt(page.EffectiveCount, 10)+")", "—", "—"
}
rows = append(rows, []ledgerCell{textCell(platform), textCell(name), textCell(owner), textCell(kind), numericCell(strconv.FormatInt(row.Counts.Register, 10)), numericCell(strconv.FormatInt(row.Counts.Active, 10)), numericCell(row.Pay), numericCell(strconv.FormatInt(row.Counts.Pay, 10)), numericCell(strconv.FormatInt(row.Counts.NewPay, 10)), textCell(row.PayRate + "%")})
}
for _, row := range page.Rows {
appendRow(row, false)
}
if page.Summary != nil {
appendRow(page.Summary, true)
}
return ledgerWorkbook("渠道数据统计", headers, rows)
}