代码初始化
This commit is contained in:
@@ -0,0 +1 @@
|
||||
/.idea/*
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
FROM golang:1.25.3
|
||||
RUN go env -w GO111MODULE=on
|
||||
RUN go env -w GOPROXY=https://goproxy.cn,direct
|
||||
ENV WORKDIR /usr/local/bin/app
|
||||
WORKDIR $WORKDIR
|
||||
|
||||
ENV TIME_ZONE=Asia/Seoul
|
||||
RUN useradd -ms /bin/bash golang
|
||||
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime \
|
||||
&& chmod 0755 /usr/bin/wall \
|
||||
&& chmod 0755 /usr/bin/passwd \
|
||||
&& chmod 0755 /usr/bin/newgrp \
|
||||
&& chmod 0755 /usr/bin/chfn \
|
||||
&& chmod 0755 /usr/bin/chage \
|
||||
&& chmod 0755 /usr/bin/gpasswd \
|
||||
&& chmod 0755 /usr/bin/chsh \
|
||||
&& chmod 0755 /usr/bin/expiry \
|
||||
&& chmod 0755 /bin/umount \
|
||||
&& chmod 0755 /bin/mount \
|
||||
&& chmod 0755 /bin/su \
|
||||
&& chmod 0755 /sbin/unix_chkpwd \
|
||||
&& chmod 110 /usr/bin/chfn \
|
||||
&& chmod 110 /usr/bin/passwd \
|
||||
&& chmod 110 /usr/bin/newgrp \
|
||||
&& chmod 110 /usr/bin/chsh \
|
||||
&& chmod 110 /usr/bin/wall \
|
||||
&& chmod 110 /usr/bin/gpasswd \
|
||||
&& chmod 110 /usr/bin/expiry \
|
||||
&& chmod 110 /usr/bin/chage \
|
||||
&& chmod 110 /bin/mount \
|
||||
&& chmod 110 /bin/umount \
|
||||
&& chmod 110 /bin/su \
|
||||
&& chmod 110 /sbin/unix_chkpwd \
|
||||
&& chmod 110 /usr/lib/openssh/ssh-keysign \
|
||||
&& chmod 110 /usr/bin/ssh-agent
|
||||
|
||||
COPY go.mod go.sum ./
|
||||
# RUN chown -R golang:golang $WORKDIR
|
||||
RUN go mod download && go mod verify
|
||||
COPY ../../cid $WORKDIR
|
||||
RUN chown -R golang:golang $WORKDIR
|
||||
# Remove SetUID, SetGID
|
||||
RUN chmod 0755 /usr/local/bin/app/api \
|
||||
&& chmod 0755 /usr/local/bin/app/common \
|
||||
&& chmod 0755 /usr/local/bin/app/middleware \
|
||||
&& chmod 0755 /usr/local/bin/app/model \
|
||||
&& rm -rf .git \
|
||||
&& rm -rf .gitignore \
|
||||
&& rm -rf .gitlab-ci.yml \
|
||||
&& rm -rf Dockerfile.bak \
|
||||
&& rm -rf config-local.yml
|
||||
USER golang
|
||||
RUN go build -v -o /usr/local/bin/app ./...
|
||||
EXPOSE 3002
|
||||
CMD ./cid
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
server:
|
||||
address : ":3001"
|
||||
name: "data-engine"
|
||||
workerId: 1
|
||||
logPath: "resource/log/server"
|
||||
logStdout: true
|
||||
errorStack: true
|
||||
rate:
|
||||
limit: 200
|
||||
burst: 300
|
||||
|
||||
# Database.
|
||||
database:
|
||||
default:
|
||||
- type: "pgsql"
|
||||
host: "localhost"
|
||||
port: "5432"
|
||||
user: "postgres"
|
||||
pass: "root"
|
||||
name: "cid"
|
||||
role: "master"
|
||||
maxIdle: "5"
|
||||
maxOpen: "20"
|
||||
maxLifetime: "60s"
|
||||
charset: "utf8mb4"
|
||||
debug: true
|
||||
dryRun: false
|
||||
createdAt: "created_at"
|
||||
updatedAt: "updated_at"
|
||||
deletedAt: "deleted_at"
|
||||
timeMaintainDisabled: false
|
||||
|
||||
redis:
|
||||
# 集群模式配置方法
|
||||
default:
|
||||
address: 192.168.3.30:6379
|
||||
db: 0
|
||||
idleTimeout: "60s" #连接最大空闲时间,使用时间字符串例如30s/1m/1d
|
||||
maxConnLifetime: "90s" #连接最长存活时间,使用时间字符串例如30s/1m/1d
|
||||
waitTimeout: "60s" #等待连接池连接的超时时间,使用时间字符串例如30s/1m/1d
|
||||
dialTimeout: "30s" #TCP连接的超时时间,使用时间字符串例如30s/1m/1d
|
||||
readTimeout: "30s" #TCP的Read操作超时时间,使用时间字符串例如30s/1m/1d
|
||||
writeTimeout: "30s" #TCP的Write操作超时时间,使用时间字符串例如30s/1m/1d
|
||||
maxActive: 100
|
||||
consul:
|
||||
address: 116.204.74.41:8500
|
||||
# pass: jiahui8888
|
||||
jaeger: #链路追踪
|
||||
addr: 116.204.74.41:4318
|
||||
@@ -0,0 +1,18 @@
|
||||
package api_feature
|
||||
|
||||
// ApiMethod 接口请求方法
|
||||
type ApiMethod string
|
||||
|
||||
const (
|
||||
ApiMethodGet ApiMethod = "GET" // GET请求
|
||||
ApiMethodPost ApiMethod = "POST" // POST请求
|
||||
ApiMethodPut ApiMethod = "PUT" // PUT请求
|
||||
ApiMethodDelete ApiMethod = "DELETE" // DELETE请求
|
||||
ApiMethodPatch ApiMethod = "PATCH" // PATCH请求
|
||||
ApiMethodHead ApiMethod = "HEAD" // HEAD请求
|
||||
ApiMethodOptions ApiMethod = "OPTIONS" // OPTIONS请求
|
||||
)
|
||||
|
||||
func (m ApiMethod) String() string {
|
||||
return string(m)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package api_feature
|
||||
|
||||
// AppStatus 应用状态
|
||||
type AppStatus string
|
||||
|
||||
const (
|
||||
AppStatusActive AppStatus = "active" // 启用
|
||||
AppStatusInactive AppStatus = "inactive" // 停用
|
||||
)
|
||||
|
||||
func (s AppStatus) String() string {
|
||||
return string(s)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package api_feature
|
||||
|
||||
// AppType 应用类型
|
||||
type AppType string
|
||||
|
||||
const (
|
||||
AppTypeWeb AppType = "web" // Web应用
|
||||
AppTypeMobile AppType = "mobile" // 移动应用
|
||||
AppTypeMiniApp AppType = "mini_app" // 小程序
|
||||
AppTypeH5 AppType = "h5" // H5应用
|
||||
AppTypeDesktop AppType = "desktop" // 桌面应用
|
||||
AppTypeThirdParty AppType = "third_party" // 第三方应用
|
||||
)
|
||||
|
||||
func (s AppType) String() string {
|
||||
return string(s)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package api_feature
|
||||
|
||||
// FetchStatus 数据获取状态
|
||||
type FetchStatus string
|
||||
|
||||
const (
|
||||
FetchStatusPending FetchStatus = "pending" // 待执行
|
||||
FetchStatusRunning FetchStatus = "running" // 执行中
|
||||
FetchStatusSuccess FetchStatus = "success" // 成功
|
||||
FetchStatusFailed FetchStatus = "failed" // 失败
|
||||
FetchStatusRateLimit FetchStatus = "rate_limit" // 触发限流
|
||||
)
|
||||
|
||||
func (f FetchStatus) String() string {
|
||||
return string(f)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package api_feature
|
||||
|
||||
// LimitType 限流类型
|
||||
type LimitType string
|
||||
|
||||
const (
|
||||
LimitTypeApp LimitType = "app" // 应用维度限流
|
||||
LimitTypeTenant LimitType = "tenant" // 租户维度限流
|
||||
LimitTypeApi LimitType = "api" // 接口维度限流
|
||||
)
|
||||
|
||||
func (l LimitType) String() string {
|
||||
return string(l)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package api_feature
|
||||
|
||||
// MappingStatus 映射状态
|
||||
type MappingStatus string
|
||||
|
||||
const (
|
||||
MappingStatusActive MappingStatus = "active" // 启用
|
||||
MappingStatusInactive MappingStatus = "inactive" // 停用
|
||||
)
|
||||
|
||||
func (s MappingStatus) String() string {
|
||||
return string(s)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package api_feature
|
||||
|
||||
// PlatformStatus 平台状态
|
||||
type PlatformStatus string
|
||||
|
||||
const (
|
||||
PlatformStatusActive PlatformStatus = "active" // 启用
|
||||
PlatformStatusInactive PlatformStatus = "inactive" // 停用
|
||||
)
|
||||
|
||||
func (s PlatformStatus) String() string {
|
||||
return string(s)
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package api_feature
|
||||
|
||||
// SyncPlatform 同步平台类型
|
||||
type SyncPlatform string
|
||||
|
||||
const (
|
||||
PlatformTaobao SyncPlatform = "taobao" // 淘宝
|
||||
PlatformJD SyncPlatform = "jd" // 京东
|
||||
PlatformKuaishou SyncPlatform = "kuaishou" // 快手
|
||||
PlatformDouyin SyncPlatform = "douyin" // 抖音
|
||||
PlatformXhs SyncPlatform = "xhs" // 小红书
|
||||
PlatformPdd SyncPlatform = "pdd" // 拼多多
|
||||
PlatformXianyu SyncPlatform = "xianyu" // 闲鱼
|
||||
PlatformTmall SyncPlatform = "tmall" // 天猫
|
||||
PlatformWechat SyncPlatform = "wechat" // 微信
|
||||
PlatformCustom SyncPlatform = "custom" // 自定义平台
|
||||
)
|
||||
|
||||
func (s SyncPlatform) String() string {
|
||||
return string(s)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package api_feature
|
||||
|
||||
// TransformType 转换类型
|
||||
type TransformType string
|
||||
|
||||
const (
|
||||
TransformTypeFixed TransformType = "fixed" // 固定值
|
||||
TransformTypeMapping TransformType = "mapping" // 值映射
|
||||
TransformTypeRegex TransformType = "regex" // 正则转换
|
||||
TransformTypeFunction TransformType = "function" // 函数转换
|
||||
TransformTypeScript TransformType = "script" // 脚本转换
|
||||
)
|
||||
|
||||
func (t TransformType) String() string {
|
||||
return string(t)
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package dict
|
||||
|
||||
// 转换类型
|
||||
const (
|
||||
TransformTypeDirect = "direct" // 直接映射
|
||||
TransformTypeFormatDate = "formatDate" // 日期格式化
|
||||
TransformTypeMapValue = "mapValue" // 值映射
|
||||
TransformTypeConcat = "concat" // 拼接
|
||||
TransformTypeCalc = "calc" // 计算
|
||||
TransformTypeRegex = "regex" // 正则提取
|
||||
)
|
||||
|
||||
// 业务域
|
||||
const (
|
||||
BusinessDomainUser = "user" // 用户
|
||||
BusinessDomainOrder = "order" // 订单
|
||||
BusinessDomainProduct = "product" // 商品
|
||||
BusinessDomainPayment = "payment" // 支付
|
||||
)
|
||||
|
||||
// 字段类型
|
||||
const (
|
||||
FieldTypeString = "string"
|
||||
FieldTypeNumber = "number"
|
||||
FieldTypeInteger = "integer"
|
||||
FieldTypeBoolean = "boolean"
|
||||
FieldTypeArray = "array"
|
||||
FieldTypeObject = "object"
|
||||
FieldTypeDate = "date"
|
||||
FieldTypeTime = "time"
|
||||
FieldTypeDateTime = "datetime"
|
||||
)
|
||||
|
||||
// 平台状态
|
||||
type PlatformStatus string
|
||||
|
||||
const (
|
||||
PlatformStatusActive PlatformStatus = "active"
|
||||
PlatformStatusInactive PlatformStatus = "inactive"
|
||||
)
|
||||
|
||||
// 接口方法
|
||||
type ApiMethod string
|
||||
|
||||
const (
|
||||
ApiMethodGET ApiMethod = "GET"
|
||||
ApiMethodPOST ApiMethod = "POST"
|
||||
ApiMethodPUT ApiMethod = "PUT"
|
||||
ApiMethodDELETE ApiMethod = "DELETE"
|
||||
ApiMethodPATCH ApiMethod = "PATCH"
|
||||
)
|
||||
@@ -0,0 +1,19 @@
|
||||
package public
|
||||
|
||||
// PostgreSQL表名常量
|
||||
const (
|
||||
ApiInterfaceTable = "cid_api_interface" // 接口管理表
|
||||
CidAccountReportDetailTable = "cid_account_report_detail" // 广告账户数据明细表
|
||||
CidAccountReportSumTable = "cid_account_report_sum" // 广告账户数据汇总表
|
||||
FieldMappingConfigTable = "field_mapping_config" // 字段映射表
|
||||
DatasourcePlatformTable = "datasource_platform" // 数据源平台表
|
||||
TaskReportTable = "task_report" // 调控任务数据表
|
||||
PopulationReportTable = "population_report" // 人群报表表
|
||||
MaterialReportTable = "material_report" // 素材报表表
|
||||
StorewideReportSumTable = "storewide_report_sum" // 全站数据sum表
|
||||
StorewideReportDetailTable = "storewide_report_detail" // 全站数据detail表
|
||||
CreativeReportSumTable = "creative_report_sum" // 广告创意数据sum表
|
||||
CreativeReportDetailTable = "creative_report_detail" // 广告创意数据detail表
|
||||
UnitReportSumTable = "unit_report_sum" // 广告创意数据detail表
|
||||
UnitReportDetailTable = "unit_report_detail" // 广告创意数据detail表
|
||||
)
|
||||
@@ -0,0 +1,32 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
)
|
||||
|
||||
type AccountReport struct{}
|
||||
|
||||
// AccountReportDetail CidAccountReportDetail 广告数据报表详情控制器
|
||||
var AccountReportDetail = new(AccountReport)
|
||||
|
||||
// CreateCidAccountReportDetail 创建广告数据报表详情
|
||||
func (c *AccountReport) CreateCidAccountReportDetail(ctx context.Context, req *dto.CreateCidAccountReportDetailReq) (res *dto.CreateCidAccountReportDetailRes, err error) {
|
||||
return service.CidAccountReportDetail.Create(ctx, req.CidAccountReportDetailItem)
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportDetail 批量创建广告数据报表详情
|
||||
func (c *AccountReport) BatchCreateCidAccountReportDetail(ctx context.Context, req *dto.BatchCreateCidAccountReportDetailReq) (res *dto.BatchCreateCidAccountReportDetailRes, err error) {
|
||||
return service.CidAccountReportDetail.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
// CreateCidAccountReportSum 创建广告数据报表汇总
|
||||
func (c *AccountReport) CreateCidAccountReportSum(ctx context.Context, req *dto.CreateCidAccountReportSumReq) (res *dto.CreateCidAccountReportSumRes, err error) {
|
||||
return service.CidAccountReportDetail.CreateSum(ctx, req.CidAccountReportSumItem)
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportSum 批量创建广告数据报表汇总
|
||||
func (c *AccountReport) BatchCreateCidAccountReportSum(ctx context.Context, req *dto.BatchCreateCidAccountReportSumReq) (res *dto.BatchCreateCidAccountReportSumRes, err error) {
|
||||
return service.CidAccountReportDetail.BatchCreateSum(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
)
|
||||
|
||||
type creativeReport struct{}
|
||||
|
||||
// CreativeReport 广告效果指标表控制器
|
||||
var CreativeReport = new(creativeReport)
|
||||
|
||||
// CreateCreativeReportSum 创建广告效果指标表
|
||||
func (c *creativeReport) CreateCreativeReportSum(ctx context.Context, req *dto.CreateCreativeReportSumReq) (res *dto.CreateCreativeReportSumRes, err error) {
|
||||
return service.CreativeReportSum.Create(ctx, req.CreativeReportSumItem)
|
||||
}
|
||||
|
||||
// BatchCreateCreativeReportSum 批量创建广告效果指标表
|
||||
func (c *creativeReport) BatchCreateCreativeReportSum(ctx context.Context, req *dto.BatchCreateCreativeReportSumReq) (res *dto.BatchCreateCreativeReportSumRes, err error) {
|
||||
return service.CreativeReportSum.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
func (c *creativeReport) CreateCreativeReportDetail(ctx context.Context, req *dto.CreateCreativeReportDetailReq) (res *dto.CreateCreativeReportDetailRes, err error) {
|
||||
return service.CreativeReportSum.CreateDetail(ctx, req.CreativeReportDetailItem)
|
||||
}
|
||||
|
||||
func (c *creativeReport) BatchCreateCreativeReportDetail(ctx context.Context, req *dto.BatchCreateCreativeReportDetailReq) (res *dto.BatchCreateCreativeReportDetailRes, err error) {
|
||||
return service.CreativeReportSum.BatchCreateDetail(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
)
|
||||
|
||||
type materialReport struct{}
|
||||
|
||||
// MaterialReport 素材报表数据控制器
|
||||
var MaterialReport = new(materialReport)
|
||||
|
||||
// CreateMaterialReport 创建素材报表数据
|
||||
func (c *materialReport) CreateMaterialReport(ctx context.Context, req *dto.CreateMaterialReportReq) (res *dto.CreateMaterialReportRes, err error) {
|
||||
return service.MaterialReport.Create(ctx, req.MaterialReportItem)
|
||||
}
|
||||
|
||||
// BatchCreateMaterialReport 批量创建素材报表数据
|
||||
func (c *materialReport) BatchCreateMaterialReport(ctx context.Context, req *dto.BatchCreateMaterialReportReq) (res *dto.BatchCreateMaterialReportRes, err error) {
|
||||
return service.MaterialReport.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
// ListMaterialReport 获取素材报表数据列表
|
||||
func (c *materialReport) ListMaterialReport(ctx context.Context, req *dto.ListMaterialReportReq) (res *dto.ListMaterialReportRes, err error) {
|
||||
return service.MaterialReport.List(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
var PopulationReport = new(populationReport)
|
||||
|
||||
type populationReport struct{}
|
||||
|
||||
// CreatePopulationReport 创建人群报表数据
|
||||
func (c *populationReport) CreatePopulationReport(ctx context.Context, req *dto.CreatePopulationReportReq) (*dto.CreatePopulationReportRes, error) {
|
||||
return service.PopulationReportService.Create(ctx, req.PopulationReportItem)
|
||||
}
|
||||
|
||||
// BatchCreatePopulationReport 批量创建人群报表数据
|
||||
func (c *populationReport) BatchCreatePopulationReport(ctx context.Context, req *dto.BatchCreatePopulationReportReq) (*dto.BatchCreatePopulationReportRes, error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.PopulationReportService.BatchCreate(ctx, req.Items)
|
||||
}
|
||||
|
||||
// ListPopulationReport 查询人群报表数据列表
|
||||
func (c *populationReport) ListPopulationReport(ctx context.Context, req *dto.ListPopulationReportReq) (*dto.ListPopulationReportRes, error) {
|
||||
return service.PopulationReportService.List(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
)
|
||||
|
||||
type storewideReport struct{}
|
||||
|
||||
// StorewideReport 广告效果指标控制器
|
||||
var StorewideReport = new(storewideReport)
|
||||
|
||||
// CreateStorewideReport 创建广告效果指标表
|
||||
func (c *storewideReport) CreateStorewideReport(ctx context.Context, req *dto.CreateStorewideReportSumReq) (res *dto.CreateStorewideReportSumRes, err error) {
|
||||
return service.StorewideReportSum.Create(ctx, req.StorewideReportSumItem)
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReport 批量创建广告效果指标表
|
||||
func (c *storewideReport) BatchCreateStorewideReport(ctx context.Context, req *dto.BatchCreateStorewideReportSumReq) (res *dto.BatchCreateStorewideReportSumRes, err error) {
|
||||
return service.StorewideReportSum.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
// CreateStorewideReportDetail 创建广告效果指标表
|
||||
func (c *storewideReport) CreateStorewideReportDetail(ctx context.Context, req *dto.CreateStorewideReportDetailReq) (res *dto.CreateStorewideReportDetailRes, err error) {
|
||||
return service.StorewideReportSum.CreateDetail(ctx, req.StorewideReportDetailItem)
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReportDetail 批量创建广告效果指标表
|
||||
func (c *storewideReport) BatchCreateStorewideReportDetail(ctx context.Context, req *dto.BatchCreateStorewideReportDetailReq) (res *dto.BatchCreateStorewideReportDetailRes, err error) {
|
||||
return service.StorewideReportSum.BatchCreateDetail(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
service "cid/service/copydata"
|
||||
"context"
|
||||
)
|
||||
|
||||
type taskReport struct{}
|
||||
|
||||
// TaskReport 调控任务数据控制器
|
||||
var TaskReport = new(taskReport)
|
||||
|
||||
// CreateTaskReport 创建调控任务数据
|
||||
func (c *taskReport) CreateTaskReport(ctx context.Context, req *dto.CreateTaskReportReq) (res *dto.CreateTaskReportRes, err error) {
|
||||
return service.TaskReport.Create(ctx, req.TaskReportItem)
|
||||
}
|
||||
|
||||
// BatchCreateTaskReport 批量创建调控任务数据
|
||||
func (c *taskReport) BatchCreateTaskReport(ctx context.Context, req *dto.BatchCreateTaskReportReq) (res *dto.BatchCreateTaskReportRes, err error) {
|
||||
return service.TaskReport.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
// ListTaskReport 获取调控任务数据列表
|
||||
func (c *taskReport) ListTaskReport(ctx context.Context, req *dto.ListTaskReportReq) (res *dto.ListTaskReportRes, err error) {
|
||||
return service.TaskReport.List(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/copydata"
|
||||
"cid/service/copydata"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type unitReport struct{}
|
||||
|
||||
// UnitReport 获取广告单元数据控制器
|
||||
var UnitReport = new(unitReport)
|
||||
|
||||
// Create 创建广告效果指标
|
||||
func (c *unitReport) Create(ctx context.Context, req *dto.CreateUnitReportSumReq) (res *dto.CreateUnitReportSumRes, err error) {
|
||||
return copydata.UnitReportSumService.Create(ctx, req.UnitReportSumItem)
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标
|
||||
func (c *unitReport) BatchCreate(ctx context.Context, req *dto.BatchCreateUnitReportSumReq) (res *dto.BatchCreateUnitReportSumRes, err error) {
|
||||
return copydata.UnitReportSumService.BatchCreate(ctx, req)
|
||||
}
|
||||
|
||||
// CreateDetail 创建广告效果指标详情
|
||||
func (c *unitReport) CreateDetail(ctx context.Context, req *dto.CreateUnitReportDetailReq) (res *dto.CreateUnitReportDetailRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return copydata.UnitReportSumService.CreateDetail(ctx, req.UnitReportDetailItem)
|
||||
}
|
||||
|
||||
// BatchCreateDetail 批量创建广告效果指标详情
|
||||
func (c *unitReport) BatchCreateDetail(ctx context.Context, req *dto.BatchCreateUnitReportDetailReq) (res *dto.BatchCreateUnitReportDetailRes, err error) {
|
||||
return copydata.UnitReportSumService.BatchCreateDetail(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/dict"
|
||||
service "cid/service/dict"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type datasourcePlatformController struct{}
|
||||
|
||||
// DatasourcePlatform 数据源平台控制器
|
||||
var DatasourcePlatform = new(datasourcePlatformController)
|
||||
|
||||
// CreateDatasourcePlatform 创建数据源平台
|
||||
func (c *datasourcePlatformController) CreateDatasourcePlatform(ctx context.Context, req *dto.CreateDatasourcePlatformReq) (res *dto.CreateDatasourcePlatformRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.DatasourcePlatform.Create(ctx, req)
|
||||
}
|
||||
|
||||
// ListDatasourcePlatforms 获取数据源平台列表
|
||||
func (c *datasourcePlatformController) ListDatasourcePlatforms(ctx context.Context, req *dto.ListDatasourcePlatformReq) (res *dto.ListDatasourcePlatformRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.DatasourcePlatform.List(ctx, req)
|
||||
}
|
||||
|
||||
// GetDatasourcePlatform 获取数据源平台详情
|
||||
func (c *datasourcePlatformController) GetDatasourcePlatform(ctx context.Context, req *dto.GetDatasourcePlatformReq) (res *dto.GetDatasourcePlatformRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.DatasourcePlatform.GetOne(ctx, req)
|
||||
}
|
||||
|
||||
// GetPlatformByCode 根据平台编码获取平台信息
|
||||
func (c *datasourcePlatformController) GetPlatformByCode(ctx context.Context, req *dto.GetPlatformByCodeReq) (res *dto.GetPlatformByCodeRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
platform, err := service.DatasourcePlatform.GetByPlatformCode(ctx, req.PlatformCode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &dto.GetPlatformByCodeRes{
|
||||
DatasourcePlatform: platform,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdateDatasourcePlatform 更新数据源平台
|
||||
func (c *datasourcePlatformController) UpdateDatasourcePlatform(ctx context.Context, req *dto.UpdateDatasourcePlatformReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.DatasourcePlatform.Update(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateDatasourcePlatformStatus 更新数据源平台状态
|
||||
func (c *datasourcePlatformController) UpdateDatasourcePlatformStatus(ctx context.Context, req *dto.UpdateDatasourcePlatformStatusReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.DatasourcePlatform.UpdateStatus(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteDatasourcePlatform 删除数据源平台
|
||||
func (c *datasourcePlatformController) DeleteDatasourcePlatform(ctx context.Context, req *dto.DeleteDatasourcePlatformReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.DatasourcePlatform.Delete(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetPlatformStatistics 获取平台统计信息
|
||||
func (c *datasourcePlatformController) GetPlatformStatistics(ctx context.Context, req *dto.GetPlatformStatisticsReq) (res *dto.GetPlatformStatisticsRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.DatasourcePlatform.GetStatistics(ctx)
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/dict"
|
||||
service "cid/service/dict"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type fieldMappingConfigController struct{}
|
||||
|
||||
// FieldMappingConfig 字段映射配置控制器
|
||||
var FieldMappingConfig = new(fieldMappingConfigController)
|
||||
|
||||
// CreateFieldMappingConfig 创建字段映射配置
|
||||
func (c *fieldMappingConfigController) CreateFieldMappingConfig(ctx context.Context, req *dto.CreateFieldMappingConfigReq) (res *dto.CreateFieldMappingConfigRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.FieldMappingConfig.Create(ctx, req)
|
||||
}
|
||||
|
||||
// ListFieldMappingConfig 获取字段映射配置列表
|
||||
func (c *fieldMappingConfigController) ListFieldMappingConfig(ctx context.Context, req *dto.ListFieldMappingConfigReq) (res *dto.ListFieldMappingConfigRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.FieldMappingConfig.List(ctx, req)
|
||||
}
|
||||
|
||||
// GetFieldMappingConfig 获取字段映射配置详情
|
||||
func (c *fieldMappingConfigController) GetFieldMappingConfig(ctx context.Context, req *dto.GetFieldMappingConfigReq) (res *dto.GetFieldMappingConfigRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.FieldMappingConfig.GetOne(ctx, req)
|
||||
}
|
||||
|
||||
// UpdateFieldMappingConfig 更新字段映射配置
|
||||
func (c *fieldMappingConfigController) UpdateFieldMappingConfig(ctx context.Context, req *dto.UpdateFieldMappingConfigReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.FieldMappingConfig.Update(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateFieldMappingConfigStatus 更新字段映射配置状态
|
||||
func (c *fieldMappingConfigController) UpdateFieldMappingConfigStatus(ctx context.Context, req *dto.UpdateFieldMappingConfigStatusReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.FieldMappingConfig.UpdateStatus(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteFieldMappingConfig 删除字段映射配置
|
||||
func (c *fieldMappingConfigController) DeleteFieldMappingConfig(ctx context.Context, req *dto.DeleteFieldMappingConfigReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.FieldMappingConfig.Delete(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// QueryFieldMappingByVendorApi 根据厂商和接口查询字段映射
|
||||
func (c *fieldMappingConfigController) QueryFieldMappingByVendorApi(ctx context.Context, req *dto.QueryFieldMappingByVendorApiReq) (res *dto.QueryFieldMappingByVendorApiRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.FieldMappingConfig.QueryByVendorApi(ctx, req)
|
||||
}
|
||||
|
||||
// ValidateFieldMapping 验证字段映射配置
|
||||
func (c *fieldMappingConfigController) ValidateFieldMapping(ctx context.Context, req *dto.ValidateFieldMappingReq) (res *dto.ValidateFieldMappingRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.FieldMappingConfig.Validate(ctx, req)
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
dto "cid/model/dto/dict"
|
||||
service "cid/service/dict"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type apiInterfaceController struct{}
|
||||
|
||||
// ApiInterface 接口控制器
|
||||
var ApiInterface = new(apiInterfaceController)
|
||||
|
||||
// CreateApiInterface 创建接口
|
||||
func (c *apiInterfaceController) CreateApiInterface(ctx context.Context, req *dto.CreateApiInterfaceReq) (res *dto.CreateApiInterfaceRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.ApiInterface.Create(ctx, req)
|
||||
}
|
||||
|
||||
// ListApiInterface 获取接口列表
|
||||
func (c *apiInterfaceController) ListApiInterface(ctx context.Context, req *dto.ListApiInterfaceReq) (res *dto.ListApiInterfaceRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.ApiInterface.List(ctx, req)
|
||||
}
|
||||
|
||||
// GetApiInterface 获取接口详情
|
||||
func (c *apiInterfaceController) GetApiInterface(ctx context.Context, req *dto.GetApiInterfaceReq) (res *dto.GetApiInterfaceRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
return service.ApiInterface.GetOne(ctx, req)
|
||||
}
|
||||
|
||||
// UpdateApiInterface 更新接口
|
||||
func (c *apiInterfaceController) UpdateApiInterface(ctx context.Context, req *dto.UpdateApiInterfaceReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.ApiInterface.Update(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateApiInterfaceStatus 更新接口状态
|
||||
func (c *apiInterfaceController) UpdateApiInterfaceStatus(ctx context.Context, req *dto.UpdateApiInterfaceStatusReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.ApiInterface.UpdateStatus(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteApiInterface 删除接口
|
||||
func (c *apiInterfaceController) DeleteApiInterface(ctx context.Context, req *dto.DeleteApiInterfaceReq) (res *beans.ResponseEmpty, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
err = service.ApiInterface.Delete(ctx, req)
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var CidAccountReportDetail = new(cidAccountReportDetailDao)
|
||||
|
||||
type cidAccountReportDetailDao struct{}
|
||||
|
||||
// Insert 插入广告数据报表详情
|
||||
func (d *cidAccountReportDetailDao) Insert(ctx context.Context, req *dto.CidAccountReportDetailItem) (id int64, err error) {
|
||||
var entityData *entity.CidAccountReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.CidAccountReportDetailTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告数据报表详情
|
||||
func (d *cidAccountReportDetailDao) BatchInsert(ctx context.Context, reqs []*dto.CidAccountReportDetailItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批100条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.CidAccountReportDetail, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.CidAccountReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.CidAccountReportDetailTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var CidAccountReportSum = new(CidAccountReportSumDao)
|
||||
|
||||
type CidAccountReportSumDao struct{}
|
||||
|
||||
// Insert 插入广告数据报表详情
|
||||
func (d *CidAccountReportSumDao) Insert(ctx context.Context, req *dto.CidAccountReportSumItem) (id int64, err error) {
|
||||
var entityData *entity.CidAccountReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.CidAccountReportSumTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告数据报表详情
|
||||
func (d *CidAccountReportSumDao) BatchInsert(ctx context.Context, reqs []*dto.CidAccountReportSumItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批100条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.CidAccountReportSum, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.CidAccountReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.CidAccountReportSumTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var CreativeReportDetail = new(CreativeReportDetailDao)
|
||||
|
||||
type CreativeReportDetailDao struct{}
|
||||
|
||||
func (d *CreativeReportDetailDao) Insert(ctx context.Context, req *dto.CreativeReportDetailItem) (id int64, err error) {
|
||||
var entityData *entity.CreativeReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.CreativeReportDetailTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
func (d *CreativeReportDetailDao) BatchInsert(ctx context.Context, reqs []*dto.CreativeReportDetailItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.CreativeReportDetail, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.CreativeReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.CreativeReportDetailTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var CreativeReportSum = new(CreativeReportSumDao)
|
||||
|
||||
type CreativeReportSumDao struct{}
|
||||
|
||||
// Insert 插入广告效果指标表
|
||||
func (d *CreativeReportSumDao) Insert(ctx context.Context, req *dto.CreativeReportSumItem) (id int64, err error) {
|
||||
var entityData *entity.CreativeReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.CreativeReportSumTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告效果指标表
|
||||
func (d *CreativeReportSumDao) BatchInsert(ctx context.Context, reqs []*dto.CreativeReportSumItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批 100 条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.CreativeReportSum, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.CreativeReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.CreativeReportSumTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var MaterialReport = new(materialReportDao)
|
||||
|
||||
type materialReportDao struct{}
|
||||
|
||||
// Insert 插入素材报表数据
|
||||
func (d *materialReportDao) Insert(ctx context.Context, req *dto.MaterialReportItem) (id int64, err error) {
|
||||
var entityData *entity.MaterialReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.MaterialReportTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入素材报表数据
|
||||
func (d *materialReportDao) BatchInsert(ctx context.Context, reqs []*dto.MaterialReportItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.MaterialReport, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.MaterialReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.MaterialReportTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
|
||||
// List 查询素材报表数据列表
|
||||
func (d *materialReportDao) List(ctx context.Context, req *dto.ListMaterialReportReq) ([]*entity.MaterialReport, int, error) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.MaterialReportTable).Model
|
||||
|
||||
if req.ReportDateStr != "" {
|
||||
model = model.Where("report_date_str", req.ReportDateStr)
|
||||
}
|
||||
if req.PhotoId != "" {
|
||||
model = model.Where("photo_id", req.PhotoId)
|
||||
}
|
||||
if req.CampaignId != nil {
|
||||
model = model.Where("campaign_id", req.CampaignId)
|
||||
}
|
||||
if req.UnitId != nil {
|
||||
model = model.Where("unit_id", req.UnitId)
|
||||
}
|
||||
if req.CreativeId != nil {
|
||||
model = model.Where("creative_id", req.CreativeId)
|
||||
}
|
||||
if req.Keyword != "" {
|
||||
model = model.Where("(photo_name LIKE ? OR campaign_name LIKE ? OR unit_name LIKE ? OR creative_name LIKE ?)",
|
||||
"%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
model = model.OrderDesc("created_at")
|
||||
|
||||
total, err := model.Count()
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
var list []*entity.MaterialReport
|
||||
if req.Page != nil {
|
||||
err = model.Page(int(req.Page.PageNum), int(req.Page.PageSize)).Scan(&list)
|
||||
} else {
|
||||
err = model.Scan(&list)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return list, total, nil
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var PopulationReport = new(populationReportDao)
|
||||
|
||||
type populationReportDao struct{}
|
||||
|
||||
// Insert 插入人群报表数据
|
||||
func (d *populationReportDao) Insert(ctx context.Context, req *dto.PopulationReportItem) (id int64, err error) {
|
||||
var entityData *entity.PopulationReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.PopulationReportTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入人群报表数据
|
||||
func (d *populationReportDao) BatchInsert(ctx context.Context, reqs []*dto.PopulationReportItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批 100 条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.PopulationReport, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.PopulationReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.PopulationReportTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
|
||||
// List 查询人群报表数据列表
|
||||
func (d *populationReportDao) List(ctx context.Context, req *dto.ListPopulationReportReq) ([]*entity.PopulationReport, int, error) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.PopulationReportTable).Model
|
||||
|
||||
// 构建查询条件
|
||||
if req.ReportDateStr != "" {
|
||||
model = model.Where("report_date_str", req.ReportDateStr)
|
||||
}
|
||||
if req.PhotoId != "" {
|
||||
model = model.Where("photo_id", req.PhotoId)
|
||||
}
|
||||
if req.Keyword != "" {
|
||||
model = model.Where("photo_name LIKE ?", "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
// 设置排序
|
||||
model = model.OrderDesc("created_at")
|
||||
|
||||
// 分页查询并获取总数
|
||||
total, err := model.Count()
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
var list []*entity.PopulationReport
|
||||
if req.Page != nil {
|
||||
err = model.Page(int(req.Page.PageNum), int(req.Page.PageSize)).Scan(&list)
|
||||
} else {
|
||||
err = model.Scan(&list)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return list, total, nil
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var StorewideReportDetail = new(StorewideReportDetailDao)
|
||||
|
||||
type StorewideReportDetailDao struct{}
|
||||
|
||||
// Insert 插入广告效果指标表
|
||||
func (d *StorewideReportDetailDao) Insert(ctx context.Context, req *dto.StorewideReportDetailItem) (id int64, err error) {
|
||||
var entityData *entity.StorewideReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.StorewideReportDetailTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告效果指标表
|
||||
func (d *StorewideReportDetailDao) BatchInsert(ctx context.Context, reqs []*dto.StorewideReportDetailItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批 100 条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.StorewideReportDetail, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.StorewideReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.StorewideReportDetailTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var StorewideReportSum = new(StorewideReportSumDao)
|
||||
|
||||
type StorewideReportSumDao struct{}
|
||||
|
||||
// Insert 插入广告效果指标表
|
||||
func (d *StorewideReportSumDao) Insert(ctx context.Context, req *dto.StorewideReportSumItem) (id int64, err error) {
|
||||
var entityData *entity.StorewideReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.StorewideReportSumTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告效果指标表
|
||||
func (d *StorewideReportSumDao) BatchInsert(ctx context.Context, reqs []*dto.StorewideReportSumItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批 100 条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.StorewideReportSum, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.StorewideReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.StorewideReportSumTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var TaskReport = new(taskReportDao)
|
||||
|
||||
type taskReportDao struct{}
|
||||
|
||||
// Insert 插入调控任务数据
|
||||
func (d *taskReportDao) Insert(ctx context.Context, req *dto.TaskReportItem) (id int64, err error) {
|
||||
var entityData *entity.TaskReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.TaskReportTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入调控任务数据
|
||||
func (d *taskReportDao) BatchInsert(ctx context.Context, reqs []*dto.TaskReportItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
// 分批处理,每批 100 条
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.TaskReport, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.TaskReport
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// 执行批量插入
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.TaskReportTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
// 批量插入失败,尝试逐条插入
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
|
||||
// List 查询调控任务数据列表
|
||||
func (d *taskReportDao) List(ctx context.Context, req *dto.ListTaskReportReq) ([]*entity.TaskReport, int, error) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.TaskReportTable).Model
|
||||
|
||||
// 构建查询条件
|
||||
if req.ReportDateStr != "" {
|
||||
model = model.Where("report_date_str", req.ReportDateStr)
|
||||
}
|
||||
if req.PhotoId != "" {
|
||||
model = model.Where("photo_id", req.PhotoId)
|
||||
}
|
||||
if req.Keyword != "" {
|
||||
model = model.Where("photo_name LIKE ?", "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
// 设置排序
|
||||
model = model.OrderDesc("created_at")
|
||||
|
||||
// 分页查询并获取总数
|
||||
total, err := model.Count()
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
var list []*entity.TaskReport
|
||||
if req.Page != nil {
|
||||
err = model.Page(int(req.Page.PageNum), int(req.Page.PageSize)).Scan(&list)
|
||||
} else {
|
||||
err = model.Scan(&list)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return list, total, nil
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var UnitReportDetail = new(UnitReportDetailDao)
|
||||
|
||||
type UnitReportDetailDao struct{}
|
||||
|
||||
// Insert 插入广告效果指标详情
|
||||
func (d *UnitReportDetailDao) Insert(ctx context.Context, req *dto.UnitReportDetailItem) (id int64, err error) {
|
||||
var entityData *entity.UnitReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.UnitReportDetailTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告效果指标详情
|
||||
func (d *UnitReportDetailDao) BatchInsert(ctx context.Context, reqs []*dto.UnitReportDetailItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.UnitReportDetail, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.UnitReportDetail
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.UnitReportDetailTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var UnitReportSum = new(UnitReportSumDao)
|
||||
|
||||
type UnitReportSumDao struct{}
|
||||
|
||||
// Insert 插入广告效果指标
|
||||
func (d *UnitReportSumDao) Insert(ctx context.Context, req *dto.UnitReportSumItem) (id int64, err error) {
|
||||
var entityData *entity.UnitReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.UnitReportSumTable).Data(&entityData).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// BatchInsert 批量插入广告效果指标
|
||||
func (d *UnitReportSumDao) BatchInsert(ctx context.Context, reqs []*dto.UnitReportSumItem) (successCount int64, failCount int64, failedIndexes []int64, err error) {
|
||||
if len(reqs) == 0 {
|
||||
return 0, 0, nil, errors.New("批量插入数据不能为空")
|
||||
}
|
||||
|
||||
batchSize := 100
|
||||
successCount = 0
|
||||
failCount = 0
|
||||
failedIndexes = make([]int64, 0)
|
||||
|
||||
for i := 0; i < len(reqs); i += batchSize {
|
||||
end := i + batchSize
|
||||
if end > len(reqs) {
|
||||
end = len(reqs)
|
||||
}
|
||||
|
||||
batch := reqs[i:end]
|
||||
entityList := make([]*entity.UnitReportSum, len(batch))
|
||||
|
||||
for j, req := range batch {
|
||||
var entityData entity.UnitReportSum
|
||||
if err = gconv.Struct(req, &entityData); err != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+j))
|
||||
continue
|
||||
}
|
||||
entityList[j] = &entityData
|
||||
}
|
||||
|
||||
if len(entityList) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = gfdb.DB(ctx).Model(ctx, consts.UnitReportSumTable).Data(entityList).Insert()
|
||||
if err != nil {
|
||||
for k := range batch {
|
||||
_, singleErr := d.Insert(ctx, batch[k])
|
||||
if singleErr != nil {
|
||||
failCount++
|
||||
failedIndexes = append(failedIndexes, int64(i+k))
|
||||
} else {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
successCount += int64(len(entityList))
|
||||
}
|
||||
}
|
||||
|
||||
return successCount, failCount, failedIndexes, nil
|
||||
}
|
||||
@@ -0,0 +1,239 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts1 "cid/consts/api-feature"
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var DatasourcePlatform = new(datasourcePlatformDao)
|
||||
|
||||
type datasourcePlatformDao struct{}
|
||||
|
||||
// Insert 插入数据源平台
|
||||
func (d *datasourcePlatformDao) Insert(ctx context.Context, req *dto.CreateDatasourcePlatformReq) (ID int64, err error) {
|
||||
var res *entity.DatasourcePlatform
|
||||
if err = gconv.Struct(req, &res); err != nil {
|
||||
return
|
||||
}
|
||||
// 设置创建时间
|
||||
// 设置创建时间和更新时间
|
||||
now := time.Now()
|
||||
res.CreatedAt = &now
|
||||
res.UpdatedAt = &now
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).Data(&res).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// Update 更新数据源平台
|
||||
func (d *datasourcePlatformDao) Update(ctx context.Context, req *dto.UpdateDatasourcePlatformReq) (rows int64, err error) {
|
||||
// 设置更新时间
|
||||
data := gconv.Map(req)
|
||||
data[entity.DatasourcePlatformCols.UpdatedAt] = time.Now()
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Data(data).
|
||||
OmitEmpty().
|
||||
Where(entity.DatasourcePlatformCols.ID, req.Id).
|
||||
Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// Delete 删除数据源平台
|
||||
func (d *datasourcePlatformDao) Delete(ctx context.Context, req *dto.DeleteDatasourcePlatformReq) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.ID, req.Id).
|
||||
Delete()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetOne 获取单个数据源平台
|
||||
func (d *datasourcePlatformDao) GetOne(ctx context.Context, req *dto.GetDatasourcePlatformReq) (res *entity.DatasourcePlatform, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.ID, req.Id).
|
||||
One()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Struct(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// GetByPlatformCode 根据平台编码获取数据源平台
|
||||
func (d *datasourcePlatformDao) GetByPlatformCode(ctx context.Context, platformCode string) (res *entity.DatasourcePlatform, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.PlatformCode, platformCode).
|
||||
One()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Struct(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// Count 获取数据源平台数量
|
||||
func (d *datasourcePlatformDao) Count(ctx context.Context, req *dto.ListDatasourcePlatformReq) (count int, err error) {
|
||||
return d.buildListFilter(ctx, req).Count()
|
||||
}
|
||||
|
||||
// List 获取数据源平台列表
|
||||
func (d *datasourcePlatformDao) List(ctx context.Context, req *dto.ListDatasourcePlatformReq) (res []entity.DatasourcePlatform, total int, err error) {
|
||||
model := d.buildListFilter(ctx, req)
|
||||
model.OrderDesc(entity.DatasourcePlatformCols.CreatedAt)
|
||||
if req.Page != nil {
|
||||
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
|
||||
}
|
||||
r, total, err := model.AllAndCount(false)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// buildListFilter 构建列表查询的过滤条件
|
||||
func (d *datasourcePlatformDao) buildListFilter(ctx context.Context, req *dto.ListDatasourcePlatformReq) *gdb.Model {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).Model
|
||||
|
||||
// 关键字搜索(平台名称或编码)
|
||||
if !g.IsEmpty(req.Keyword) {
|
||||
model.WhereLike(entity.DatasourcePlatformCols.PlatformName, "%"+req.Keyword+"%")
|
||||
model.WhereOrLike(entity.DatasourcePlatformCols.PlatformCode, "%"+req.Keyword+"%")
|
||||
model.WhereOrLike(entity.DatasourcePlatformCols.Description, "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
// 精确匹配条件
|
||||
if !g.IsEmpty(req.PlatformCode) {
|
||||
model.Where(entity.DatasourcePlatformCols.PlatformCode, req.PlatformCode)
|
||||
}
|
||||
if !g.IsEmpty(req.PlatformName) {
|
||||
model.Where(entity.DatasourcePlatformCols.PlatformName, req.PlatformName)
|
||||
}
|
||||
if !g.IsEmpty(req.Status) {
|
||||
model.Where(entity.DatasourcePlatformCols.Status, req.Status)
|
||||
}
|
||||
if !g.IsEmpty(req.AuthType) {
|
||||
model.Where(entity.DatasourcePlatformCols.AuthType, req.AuthType)
|
||||
}
|
||||
|
||||
model.OmitEmptyWhere()
|
||||
return model
|
||||
}
|
||||
|
||||
// UpdateStatus 更新数据源平台状态
|
||||
func (d *datasourcePlatformDao) UpdateStatus(ctx context.Context, ID int64, status string, updatedBy string) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Data(map[string]interface{}{
|
||||
entity.DatasourcePlatformCols.Status: status,
|
||||
entity.DatasourcePlatformCols.UpdatedBy: updatedBy,
|
||||
entity.DatasourcePlatformCols.UpdatedAt: time.Now(),
|
||||
}).
|
||||
Where(entity.DatasourcePlatformCols.ID, ID).
|
||||
Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// ExistsByPlatformCode 检查平台编码是否存在
|
||||
func (d *datasourcePlatformDao) ExistsByPlatformCode(ctx context.Context, platformCode string, excludeId ...int64) (exists bool, err error) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.PlatformCode, platformCode)
|
||||
|
||||
if len(excludeId) > 0 && excludeId[0] > 0 {
|
||||
model.WhereNot(entity.DatasourcePlatformCols.ID, excludeId[0])
|
||||
}
|
||||
|
||||
count, err := model.Count()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
// ListActivePlatforms 获取所有启用的平台
|
||||
func (d *datasourcePlatformDao) ListActivePlatforms(ctx context.Context) (res []entity.DatasourcePlatform, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.Status, consts1.PlatformStatusActive).
|
||||
OrderAsc(entity.DatasourcePlatformCols.PlatformName).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// GetPlatformStatistics 获取平台统计信息
|
||||
func (d *datasourcePlatformDao) GetPlatformStatistics(ctx context.Context) (stats map[string]int64, err error) {
|
||||
stats = make(map[string]int64)
|
||||
|
||||
// 总平台数
|
||||
total, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).Count()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stats["totalPlatforms"] = int64(total)
|
||||
|
||||
// 启用平台数
|
||||
active, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.Status, consts1.MappingStatusActive).
|
||||
Count()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stats["activePlatforms"] = int64(active)
|
||||
|
||||
// 停用平台数
|
||||
stats["inactivePlatforms"] = int64(total - active)
|
||||
|
||||
// 按认证类型统计
|
||||
authTypes := []string{"TOKEN", "API_KEY", "OAUTH2", "BASIC"}
|
||||
for _, authType := range authTypes {
|
||||
count, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Where(entity.DatasourcePlatformCols.AuthType, authType).
|
||||
Count()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stats[authType+"AuthPlatforms"] = int64(count)
|
||||
}
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
// BatchUpdateStatus 批量更新平台状态
|
||||
func (d *datasourcePlatformDao) BatchUpdateStatus(ctx context.Context, ids []int64, status string, updatedBy string) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.DatasourcePlatformTable).
|
||||
Data(map[string]interface{}{
|
||||
entity.DatasourcePlatformCols.Status: status,
|
||||
entity.DatasourcePlatformCols.UpdatedBy: updatedBy,
|
||||
entity.DatasourcePlatformCols.UpdatedAt: strconv.FormatInt(time.Now().Unix(), 10),
|
||||
}).
|
||||
WhereIn(entity.DatasourcePlatformCols.ID, ids).
|
||||
Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var FieldMappingConfig = new(fieldMappingConfigDao)
|
||||
|
||||
type fieldMappingConfigDao struct{}
|
||||
|
||||
// Insert 插入字段映射配置
|
||||
func (d *fieldMappingConfigDao) Insert(ctx context.Context, req *dto.CreateFieldMappingConfigReq) (id int64, err error) {
|
||||
var config entity.FieldMappingConfig
|
||||
if err = gconv.Struct(req, &config); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
config.CreatedTime = now
|
||||
config.UpdatedTime = now
|
||||
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).Data(&config).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// Update 更新字段映射配置
|
||||
func (d *fieldMappingConfigDao) Update(ctx context.Context, req *dto.UpdateFieldMappingConfigReq) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).Data(&req).OmitEmpty().Where(entity.FieldMappingConfigCol.Id, req.Id).Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// Delete 删除字段映射配置
|
||||
func (d *fieldMappingConfigDao) Delete(ctx context.Context, req *dto.DeleteFieldMappingConfigReq) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.Id, req.Id).
|
||||
Delete()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetOne 获取单个字段映射配置
|
||||
func (d *fieldMappingConfigDao) GetOne(ctx context.Context, req *dto.GetFieldMappingConfigReq) (res *entity.FieldMappingConfig, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.Id, req.Id).
|
||||
One()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Struct(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// Count 获取字段映射配置数量
|
||||
func (d *fieldMappingConfigDao) Count(ctx context.Context, req *dto.ListFieldMappingConfigReq) (count int, err error) {
|
||||
return d.buildListFilter(ctx, req).Count()
|
||||
}
|
||||
|
||||
// List 获取字段映射配置列表
|
||||
func (d *fieldMappingConfigDao) List(ctx context.Context, req *dto.ListFieldMappingConfigReq) (res []entity.FieldMappingConfig, total int, err error) {
|
||||
model := d.buildListFilter(ctx, req)
|
||||
model.OrderDesc(entity.FieldMappingConfigCol.CreatedTime)
|
||||
|
||||
if req.Page != nil {
|
||||
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
|
||||
}
|
||||
|
||||
r, total, err := model.AllAndCount(false)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// buildListFilter 构建列表查询的过滤条件
|
||||
func (d *fieldMappingConfigDao) buildListFilter(ctx context.Context, req *dto.ListFieldMappingConfigReq) *gdb.Model {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).Model
|
||||
|
||||
if !g.IsEmpty(req.Keyword) {
|
||||
model.WhereLike(entity.FieldMappingConfigCol.ConfigName, "%"+req.Keyword+"%").
|
||||
WhereOrLike(entity.FieldMappingConfigCol.SourceFieldDesc, "%"+req.Keyword+"%").
|
||||
WhereOrLike(entity.FieldMappingConfigCol.TargetFieldDesc, "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
if !g.IsEmpty(req.ConfigName) {
|
||||
model.Where(entity.FieldMappingConfigCol.ConfigName, req.ConfigName)
|
||||
}
|
||||
if !g.IsEmpty(req.VendorName) {
|
||||
model.Where(entity.FieldMappingConfigCol.VendorName, req.VendorName)
|
||||
}
|
||||
if !g.IsEmpty(req.ApiName) {
|
||||
model.Where(entity.FieldMappingConfigCol.ApiName, req.ApiName)
|
||||
}
|
||||
if !g.IsEmpty(req.ApiVersion) {
|
||||
model.Where(entity.FieldMappingConfigCol.ApiVersion, req.ApiVersion)
|
||||
}
|
||||
if !g.IsEmpty(req.SourceField) {
|
||||
model.Where(entity.FieldMappingConfigCol.SourceField, req.SourceField)
|
||||
}
|
||||
if !g.IsEmpty(req.TargetField) {
|
||||
model.Where(entity.FieldMappingConfigCol.TargetField, req.TargetField)
|
||||
}
|
||||
if !g.IsEmpty(req.TransformType) {
|
||||
model.Where(entity.FieldMappingConfigCol.TransformType, req.TransformType)
|
||||
}
|
||||
if !g.IsEmpty(req.BusinessDomain) {
|
||||
model.Where(entity.FieldMappingConfigCol.BusinessDomain, req.BusinessDomain)
|
||||
}
|
||||
if !g.IsEmpty(req.FieldGroup) {
|
||||
model.Where(entity.FieldMappingConfigCol.FieldGroup, req.FieldGroup)
|
||||
}
|
||||
if req.IsActive != nil {
|
||||
model.Where(entity.FieldMappingConfigCol.IsActive, *req.IsActive)
|
||||
}
|
||||
|
||||
model.OmitEmptyWhere()
|
||||
return model
|
||||
}
|
||||
|
||||
// UpdateStatus 更新配置状态
|
||||
func (d *fieldMappingConfigDao) UpdateStatus(ctx context.Context, id int64, isActive bool) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Data(g.Map{
|
||||
"is_active": isActive,
|
||||
"updated_time": time.Now(),
|
||||
}).
|
||||
Where(entity.FieldMappingConfigCol.Id, id).
|
||||
Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetByIds 根据ID列表获取配置列表
|
||||
func (d *fieldMappingConfigDao) GetByIds(ctx context.Context, ids []int64) (res []entity.FieldMappingConfig, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
WhereIn(entity.FieldMappingConfigCol.Id, ids).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// GetByVendorAndApi 根据厂商和接口获取字段映射配置
|
||||
func (d *fieldMappingConfigDao) GetByVendorAndApi(ctx context.Context, vendorName, apiName, apiVersion string, isActive *bool) (res []*entity.FieldMappingConfig, err error) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.VendorName, vendorName).
|
||||
Where(entity.FieldMappingConfigCol.ApiName, apiName)
|
||||
|
||||
if !g.IsEmpty(apiVersion) {
|
||||
model.Where(entity.FieldMappingConfigCol.ApiVersion, apiVersion)
|
||||
}
|
||||
|
||||
if isActive != nil {
|
||||
model.Where(entity.FieldMappingConfigCol.IsActive, *isActive)
|
||||
}
|
||||
|
||||
model.OrderDesc(entity.FieldMappingConfigCol.Priority).
|
||||
OrderAsc(entity.FieldMappingConfigCol.Id)
|
||||
|
||||
r, err := model.All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// CheckDuplicate 检查重复配置
|
||||
func (d *fieldMappingConfigDao) CheckDuplicate(ctx context.Context, vendorName, apiName, sourceField, targetField string, excludeId int64) (exists bool, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.VendorName, vendorName).
|
||||
Where(entity.FieldMappingConfigCol.ApiName, apiName).
|
||||
Where(entity.FieldMappingConfigCol.SourceField, sourceField).
|
||||
Where(entity.FieldMappingConfigCol.TargetField, targetField)
|
||||
|
||||
if excludeId > 0 {
|
||||
model.WhereNot(entity.FieldMappingConfigCol.Id, excludeId)
|
||||
}
|
||||
|
||||
count, err := model.Count()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
exists = count > 0
|
||||
return
|
||||
}
|
||||
|
||||
// GetActiveConfigsByBusinessDomain 根据业务域获取启用的配置
|
||||
func (d *fieldMappingConfigDao) GetActiveConfigsByBusinessDomain(ctx context.Context, businessDomain string) (res []entity.FieldMappingConfig, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.BusinessDomain, businessDomain).
|
||||
Where(entity.FieldMappingConfigCol.IsActive, true).
|
||||
OrderDesc(entity.FieldMappingConfigCol.Priority).
|
||||
OrderAsc(entity.FieldMappingConfigCol.Id).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// GetFieldGroupsByVendorApi 获取指定厂商接口的字段分组
|
||||
func (d *fieldMappingConfigDao) GetFieldGroupsByVendorApi(ctx context.Context, vendorName, apiName string) (groups []string, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Fields(entity.FieldMappingConfigCol.FieldGroup).
|
||||
Where(entity.FieldMappingConfigCol.VendorName, vendorName).
|
||||
Where(entity.FieldMappingConfigCol.ApiName, apiName).
|
||||
Where(entity.FieldMappingConfigCol.IsActive, true).
|
||||
Group(entity.FieldMappingConfigCol.FieldGroup).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, record := range r {
|
||||
group := record.Map()[entity.FieldMappingConfigCol.FieldGroup]
|
||||
if groupStr, ok := group.(string); ok && groupStr != "" {
|
||||
groups = append(groups, groupStr)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteExpiredConfigs 删除已过期的配置
|
||||
func (d *fieldMappingConfigDao) DeleteExpiredConfigs(ctx context.Context) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where("expiry_date IS NOT NULL AND expiry_date < ?", time.Now()).
|
||||
Delete()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetConfigsEffectiveNow 获取当前生效的配置
|
||||
func (d *fieldMappingConfigDao) GetConfigsEffectiveNow(ctx context.Context) (res []entity.FieldMappingConfig, err error) {
|
||||
now := time.Now()
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FieldMappingConfigTable).
|
||||
Where(entity.FieldMappingConfigCol.IsActive, true).
|
||||
Where("(effective_date IS NULL OR effective_date <= ?)", now).
|
||||
Where("(expiry_date IS NULL OR expiry_date > ?)", now).
|
||||
OrderDesc(entity.FieldMappingConfigCol.Priority).
|
||||
OrderAsc(entity.FieldMappingConfigCol.Id).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts "cid/consts/public"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
|
||||
"gitea.com/red-future/common/db/gfdb"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
var ApiInterface = new(apiInterfaceDao)
|
||||
|
||||
type apiInterfaceDao struct{}
|
||||
|
||||
// Insert 插入接口
|
||||
func (d *apiInterfaceDao) Insert(ctx context.Context, req *dto.CreateApiInterfaceReq) (id int64, err error) {
|
||||
var res *entity.ApiInterface
|
||||
if err = gconv.Struct(req, &res); err != nil {
|
||||
return
|
||||
}
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).Data(&res).Insert()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
// Update 更新接口
|
||||
func (d *apiInterfaceDao) Update(ctx context.Context, req *dto.UpdateApiInterfaceReq) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).Data(&req).OmitEmpty().Where(entity.ApiInterfaceCols.Id, req.Id).Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// Delete 删除接口
|
||||
func (d *apiInterfaceDao) Delete(ctx context.Context, req *dto.DeleteApiInterfaceReq) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).Where(entity.ApiInterfaceCols.Id, req.Id).Delete()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetOne 获取单个接口
|
||||
func (d *apiInterfaceDao) GetOne(ctx context.Context, req *dto.GetApiInterfaceReq) (res *entity.ApiInterface, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).Where(entity.ApiInterfaceCols.Id, req.Id).One()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Struct(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// Count 获取接口数量
|
||||
func (d *apiInterfaceDao) Count(ctx context.Context, req *dto.ListApiInterfaceReq) (count int, err error) {
|
||||
return d.buildListFilter(ctx, req).Count()
|
||||
}
|
||||
|
||||
// List 获取接口列表
|
||||
func (d *apiInterfaceDao) List(ctx context.Context, req *dto.ListApiInterfaceReq) (res []entity.ApiInterface, total int, err error) {
|
||||
model := d.buildListFilter(ctx, req)
|
||||
model.OrderDesc(entity.ApiInterfaceCols.CreatedAt)
|
||||
if req.Page != nil {
|
||||
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
|
||||
}
|
||||
r, total, err := model.AllAndCount(false)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
|
||||
// buildListFilter 构建列表查询的过滤条件
|
||||
func (d *apiInterfaceDao) buildListFilter(ctx context.Context, req *dto.ListApiInterfaceReq) *gdb.Model {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).Model
|
||||
if !g.IsEmpty(req.Keyword) {
|
||||
model.WhereLike(entity.ApiInterfaceCols.Name, "%"+req.Keyword+"%")
|
||||
model.WhereOrLike(entity.ApiInterfaceCols.Code, "%"+req.Keyword+"%")
|
||||
}
|
||||
model.Where(entity.ApiInterfaceCols.PlatformId, req.PlatformId)
|
||||
model.Where(entity.ApiInterfaceCols.Name, req.Name)
|
||||
model.Where(entity.ApiInterfaceCols.Code, req.Code)
|
||||
model.Where(entity.ApiInterfaceCols.Method, req.Method)
|
||||
model.Where(entity.ApiInterfaceCols.Status, req.Status)
|
||||
model.OmitEmptyWhere()
|
||||
return model
|
||||
}
|
||||
|
||||
// UpdateStatus 更新接口状态
|
||||
func (d *apiInterfaceDao) UpdateStatus(ctx context.Context, id int64, status string) (rows int64, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).
|
||||
Data(map[string]interface{}{"status": status}).
|
||||
Where(entity.ApiInterfaceCols.Id, id).
|
||||
Update()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.RowsAffected()
|
||||
}
|
||||
|
||||
// GetByIds 根据ID列表获取接口列表
|
||||
func (d *apiInterfaceDao) GetByIds(ctx context.Context, ids []int64) (res []entity.ApiInterface, err error) {
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.ApiInterfaceTable).
|
||||
WhereIn(entity.ApiInterfaceCols.Id, ids).
|
||||
All()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = r.Structs(&res)
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package entities
|
||||
|
||||
// RequestParams 请求参数
|
||||
type RequestParams struct {
|
||||
AdvertiserID int64 `json:"advertiser_id"`
|
||||
StartTime int64 `json:"start_time"`
|
||||
EndTime int64 `json:"end_time"`
|
||||
SelectColumns []string `json:"select_columns"`
|
||||
GroupType int `json:"group_type"`
|
||||
QueryVersion int `json:"query_version"`
|
||||
SelectParam *SelectParam `json:"select_param"`
|
||||
PageInfo *PageInfo `json:"page_info"`
|
||||
}
|
||||
|
||||
// SelectParam 筛选参数
|
||||
type SelectParam struct {
|
||||
CampaignIDs []int64 `json:"campaign_ids,omitempty"`
|
||||
AuthorID int64 `json:"author_id,omitempty"`
|
||||
AdTypeStr string `json:"ad_type_str,omitempty"`
|
||||
MarketingObjective int `json:"marketing_objective,omitempty"`
|
||||
DeliveryScenario int `json:"delivery_scenario,omitempty"`
|
||||
DeliveryMethod int `json:"delivery_method,omitempty"`
|
||||
SupportType string `json:"support_type,omitempty"`
|
||||
OcpcActionType string `json:"ocpc_action_type,omitempty"`
|
||||
SpeedType string `json:"speed_type,omitempty"`
|
||||
ItemType string `json:"item_type,omitempty"`
|
||||
CreativeBuildType string `json:"creative_build_type,omitempty"`
|
||||
AdScene string `json:"ad_scene,omitempty"`
|
||||
IncrementExploreType []int `json:"increment_explore_type,omitempty"`
|
||||
}
|
||||
|
||||
// PageInfo 分页信息
|
||||
type PageInfo struct {
|
||||
CurrentPage int `json:"current_page"`
|
||||
PageSize int `json:"page_size"`
|
||||
TotalCount int `json:"total_count,omitempty"`
|
||||
}
|
||||
|
||||
// NewRequestParams 创建默认请求参数
|
||||
func NewRequestParams() *RequestParams {
|
||||
return &RequestParams{
|
||||
SelectColumns: []string{"impression", "click", "cost", "t0GMV"},
|
||||
GroupType: 1,
|
||||
QueryVersion: 1,
|
||||
SelectParam: &SelectParam{},
|
||||
PageInfo: &PageInfo{
|
||||
CurrentPage: 1,
|
||||
PageSize: 20,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// SetPage 设置页码
|
||||
func (p *RequestParams) SetPage(page int) *RequestParams {
|
||||
p.PageInfo.CurrentPage = page
|
||||
return p
|
||||
}
|
||||
|
||||
// SetPageSize 设置每页大小
|
||||
func (p *RequestParams) SetPageSize(pageSize int) *RequestParams {
|
||||
p.PageInfo.PageSize = pageSize
|
||||
return p
|
||||
}
|
||||
|
||||
// ResetPage 重置分页信息
|
||||
func (p *RequestParams) ResetPage() *RequestParams {
|
||||
p.PageInfo.CurrentPage = 1
|
||||
p.PageInfo.TotalCount = 0
|
||||
return p
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// APIResponse API响应
|
||||
type APIResponse struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data *ReportData `json:"data"`
|
||||
}
|
||||
|
||||
// ReportData 报表数据
|
||||
type ReportData struct {
|
||||
Sum *ReportSum `json:"sum"`
|
||||
Detail []*ReportDetail `json:"detail"`
|
||||
TotalCount int `json:"total_count"`
|
||||
}
|
||||
|
||||
// ReportSum 汇总数据
|
||||
type ReportSum struct {
|
||||
// 基础信息
|
||||
T0OrderPaymentAmt string `json:"t0_order_payment_amt"`
|
||||
CreativeMaterialType string `json:"creative_material_type"`
|
||||
LiveName string `json:"live_name"`
|
||||
AuthorID string `json:"author_id"`
|
||||
PicURL string `json:"pic_url"`
|
||||
PicName string `json:"pic_name"`
|
||||
PicID string `json:"pic_id"`
|
||||
CoverURL string `json:"cover_url"`
|
||||
CoverID int64 `json:"cover_id"`
|
||||
PhotoName string `json:"photo_name"`
|
||||
PhotoIDStr string `json:"photo_id_str"`
|
||||
PhotoID string `json:"photo_id"`
|
||||
ModPriceSegment string `json:"mod_price_segment"`
|
||||
AgeSegment string `json:"age_segment"`
|
||||
Province string `json:"province"`
|
||||
Gender string `json:"gender"`
|
||||
MerchantProductID string `json:"merchant_product_id"`
|
||||
ReportDateStr string `json:"report_date_str"`
|
||||
CampaignID int64 `json:"campaign_id"`
|
||||
CampaignName string `json:"campaign_name"`
|
||||
UnitID int64 `json:"unit_id"`
|
||||
UnitName string `json:"unit_name"`
|
||||
CreativeID int64 `json:"creative_id"`
|
||||
CreativeName string `json:"creative_name"`
|
||||
|
||||
// 核心指标
|
||||
Impression int64 `json:"impression"`
|
||||
Click int64 `json:"click"`
|
||||
CostTotal float64 `json:"cost_total"`
|
||||
GMV float64 `json:"gmv"`
|
||||
T0GMV float64 `json:"t0_gmv"`
|
||||
ROI float64 `json:"roi"`
|
||||
T0ROI float64 `json:"t0_roi"`
|
||||
T0OrderCnt int64 `json:"t0_order_cnt"`
|
||||
|
||||
// 其他指标(简化版)
|
||||
PhotoClick int64 `json:"photo_click"`
|
||||
ActionbarClick int64 `json:"actionbar_click"`
|
||||
AdItemClick int64 `json:"ad_item_click"`
|
||||
Share int64 `json:"share"`
|
||||
Comment int64 `json:"comment"`
|
||||
Likes int64 `json:"likes"`
|
||||
PhotoClickRatio float64 `json:"photo_click_ratio"`
|
||||
Play3sRatio float64 `json:"play3s_ratio"`
|
||||
Play5sRatio float64 `json:"play5s_ratio"`
|
||||
EffectivePlayRatio float64 `json:"effective_play_ratio"`
|
||||
|
||||
// 自定义字段
|
||||
T0OrderPaymentAmtFloat float64 `json:"-"`
|
||||
}
|
||||
|
||||
// ReportDetail 明细数据
|
||||
type ReportDetail struct {
|
||||
ReportSum
|
||||
}
|
||||
|
||||
// UnmarshalJSON 自定义JSON解析
|
||||
func (rs *ReportSum) UnmarshalJSON(data []byte) error {
|
||||
temp := make(map[string]interface{})
|
||||
if err := json.Unmarshal(data, &temp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 特殊处理t0_order_payment_amt字段
|
||||
if val, ok := temp["t0_order_payment_amt"]; ok {
|
||||
switch v := val.(type) {
|
||||
case string:
|
||||
rs.T0OrderPaymentAmt = v
|
||||
if v != "" && v != "0" {
|
||||
if f, err := stringToFloat64(v); err == nil {
|
||||
rs.T0OrderPaymentAmtFloat = f
|
||||
}
|
||||
}
|
||||
case float64:
|
||||
rs.T0OrderPaymentAmt = fmt.Sprintf("%.0f", v)
|
||||
rs.T0OrderPaymentAmtFloat = v
|
||||
case int64:
|
||||
rs.T0OrderPaymentAmt = fmt.Sprintf("%d", v)
|
||||
rs.T0OrderPaymentAmtFloat = float64(v)
|
||||
}
|
||||
delete(temp, "t0_order_payment_amt")
|
||||
}
|
||||
|
||||
jsonData, _ := json.Marshal(temp)
|
||||
type Alias ReportSum
|
||||
var alias Alias
|
||||
if err := json.Unmarshal(jsonData, &alias); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*rs = ReportSum(alias)
|
||||
return nil
|
||||
}
|
||||
|
||||
// stringToFloat64 字符串转浮点数
|
||||
func stringToFloat64(s string) (float64, error) {
|
||||
var f float64
|
||||
_, err := fmt.Sscanf(s, "%f", &f)
|
||||
return f, err
|
||||
}
|
||||
|
||||
// MergeData 合并多个响应数据
|
||||
func MergeData(responses []*APIResponse) *APIResponse {
|
||||
if len(responses) == 0 {
|
||||
return &APIResponse{
|
||||
Code: 0,
|
||||
Message: "无数据",
|
||||
Data: &ReportData{
|
||||
Detail: []*ReportDetail{},
|
||||
TotalCount: 0,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// 以第一个响应为基础
|
||||
merged := &APIResponse{
|
||||
Code: responses[0].Code,
|
||||
Message: responses[0].Message,
|
||||
Data: &ReportData{
|
||||
Sum: responses[0].Data.Sum, // 汇总数据通常只取第一页的
|
||||
Detail: []*ReportDetail{},
|
||||
TotalCount: responses[0].Data.TotalCount,
|
||||
},
|
||||
}
|
||||
|
||||
// 合并所有明细数据
|
||||
for _, resp := range responses {
|
||||
if resp != nil && resp.Data != nil && resp.Data.Detail != nil {
|
||||
merged.Data.Detail = append(merged.Data.Detail, resp.Data.Detail...)
|
||||
}
|
||||
}
|
||||
|
||||
return merged
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
module cid
|
||||
|
||||
go 1.25.5
|
||||
|
||||
require (
|
||||
gitea.com/red-future/common v0.0.4
|
||||
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.10.0
|
||||
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.5
|
||||
github.com/gogf/gf/v2 v2.10.0
|
||||
github.com/olekukonko/errors v1.1.0
|
||||
golang.org/x/net v0.47.0
|
||||
)
|
||||
|
||||
//replace gitea.com/red-future/common => ../common
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/toml v1.5.0 // indirect
|
||||
github.com/armon/go-metrics v0.4.1 // indirect
|
||||
github.com/bwmarrin/snowflake v0.3.0 // indirect
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/clbanning/mxj/v2 v2.7.0 // indirect
|
||||
github.com/dgraph-io/badger/v4 v4.2.0 // indirect
|
||||
github.com/dgraph-io/ristretto v0.1.1 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/emirpasic/gods/v2 v2.0.0-alpha // indirect
|
||||
github.com/fatih/color v1.18.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/gogf/gf/contrib/registry/consul/v2 v2.9.5 // indirect
|
||||
github.com/gogf/gf/contrib/trace/otlphttp/v2 v2.9.5 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
|
||||
github.com/golang/glog v1.2.5 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/golang/snappy v1.0.0 // indirect
|
||||
github.com/google/flatbuffers v1.12.1 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/grokify/html-strip-tags-go v0.1.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
|
||||
github.com/hashicorp/consul/api v1.26.1 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||
github.com/hashicorp/go-hclog v1.5.0 // indirect
|
||||
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
|
||||
github.com/hashicorp/golang-lru v1.0.2 // indirect
|
||||
github.com/hashicorp/serf v0.10.1 // indirect
|
||||
github.com/klauspost/compress v1.18.0 // indirect
|
||||
github.com/lib/pq v1.10.9 // indirect
|
||||
github.com/magiconair/properties v1.8.10 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/olekukonko/ll v0.0.9 // indirect
|
||||
github.com/olekukonko/tablewriter v1.1.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/redis/go-redis/v9 v9.12.1 // indirect
|
||||
github.com/rivo/uniseg v0.4.7 // indirect
|
||||
github.com/tiger1103/gfast-token v1.0.10 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
github.com/xdg-go/scram v1.1.2 // indirect
|
||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
||||
go.mongodb.org/mongo-driver/v2 v2.4.0 // indirect
|
||||
go.opencensus.io v0.23.0 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||
go.opentelemetry.io/otel v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.38.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
|
||||
golang.org/x/crypto v0.44.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20250128144449-3edf0e91c1ae // indirect
|
||||
golang.org/x/sync v0.18.0 // indirect
|
||||
golang.org/x/sys v0.38.0 // indirect
|
||||
golang.org/x/text v0.31.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect
|
||||
google.golang.org/grpc v1.75.0 // indirect
|
||||
google.golang.org/protobuf v1.36.8 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"cid/controller/copydata"
|
||||
"cid/controller/dict"
|
||||
|
||||
"gitea.com/red-future/common/http"
|
||||
"gitea.com/red-future/common/jaeger"
|
||||
_ "gitea.com/red-future/common/ragflow" // RAGFlow 客户端自动初始化
|
||||
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
||||
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
defer jaeger.ShutDown(ctx)
|
||||
|
||||
http.RouteRegister([]interface{}{
|
||||
// 接口管理
|
||||
dict.ApiInterface,
|
||||
dict.FieldMappingConfig,
|
||||
dict.DatasourcePlatform,
|
||||
copydata.AccountReportDetail,
|
||||
copydata.TaskReport,
|
||||
copydata.PopulationReport,
|
||||
copydata.MaterialReport,
|
||||
copydata.StorewideReport,
|
||||
copydata.CreativeReport,
|
||||
copydata.UnitReport,
|
||||
})
|
||||
select {}
|
||||
}
|
||||
@@ -0,0 +1,318 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateCidAccountReportDetailReq 创建广告数据报表详情请求
|
||||
type CreateCidAccountReportDetailReq struct {
|
||||
g.Meta `path:"/createCidAccountReportDetail" method:"post" tags:"广告数据报表" summary:"创建广告数据报表详情" dc:"创建新的广告数据报表详情"`
|
||||
*CidAccountReportDetailItem
|
||||
}
|
||||
|
||||
// CreateCidAccountReportDetailRes 创建广告数据报表详情响应
|
||||
type CreateCidAccountReportDetailRes struct {
|
||||
Id int64 `json:"id" dc:"广告数据ID"`
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportDetailReq 批量创建广告数据报表详情请求
|
||||
type BatchCreateCidAccountReportDetailReq struct {
|
||||
g.Meta `path:"/batchCreateCidAccountReportDetail" method:"post" tags:"广告数据报表" summary:"批量创建广告数据报表详情" dc:"批量创建广告数据报表详情"`
|
||||
Items []*CidAccountReportDetailItem `json:"items" v:"required" dc:"广告数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportDetailRes 批量创建广告数据报表详情响应
|
||||
type BatchCreateCidAccountReportDetailRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// CidAccountReportDetailItem 广告数据报表详情项
|
||||
type CidAccountReportDetailItem struct {
|
||||
// 基础信息字段
|
||||
DataType string `json:"dataType" v:"required" dc:"类型type"`
|
||||
|
||||
// 核心指标字段
|
||||
T0OrderPaymentAmt string `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面URL"`
|
||||
CoverId int64 `json:"coverId" dc:"封面Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频id"`
|
||||
PhotoId string `json:"photoId" dc:"视频id"`
|
||||
|
||||
// 受众属性字段
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间"`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品5秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品3秒播放率"`
|
||||
|
||||
// 订单相关字段
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
|
||||
// 商品信息字段
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
|
||||
// 封面相关字段
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
|
||||
// 点击相关字段
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
|
||||
// 直播时长字段
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
|
||||
// 播放数据字段
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品3秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品3秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品5秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品5秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
|
||||
// 互动数据字段
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动字段
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
|
||||
// 播放效果字段
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
|
||||
// 转化字段
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接GMV"`
|
||||
|
||||
// GMV时间序列字段
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计GMV"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3日累计GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7日累计GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15日累计GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30日累计GMV"`
|
||||
|
||||
// ROI时间序列字段
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计ROI"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3日累计ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7日累计ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15日累计ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30日累计ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30日累计订单数"`
|
||||
|
||||
// 粉丝相关字段
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30日涨粉留存率"`
|
||||
|
||||
// 直播预约字段
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
|
||||
// 直播观看字段
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
|
||||
// 商品点击字段
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30日累计店铺新客"`
|
||||
|
||||
// 间接订单字段
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额字段
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本字段
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
|
||||
// 智能优惠券字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝GMV字段
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉7日GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉15日GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉30日GMV"`
|
||||
|
||||
// 粉丝ROI字段
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉7日ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉15日ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉30日ROI"`
|
||||
|
||||
// 新客GMV字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后1日新客GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后3日新客GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后7日新客GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后15日新客GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后30日新客GMV"`
|
||||
|
||||
// 新客订单量字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后1日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后3日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后7日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后15日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后30日新客成交订单量"`
|
||||
|
||||
// 新客复购率字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后1日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后3日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后7日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后15日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后30日新客复购率"`
|
||||
|
||||
// 新客ROI字段
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后1日新客ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后3日新客ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后7日新客ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后15日新客ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后30日新客ROI"`
|
||||
|
||||
// 电话卡相关字段
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
|
||||
// 广告结构字段
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
|
||||
// 补贴相关字段
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
// ListCidAccountReportDetailReq 获取广告数据报表详情列表请求
|
||||
type ListCidAccountReportDetailReq struct {
|
||||
g.Meta `path:"/listCidAccountReportDetail" method:"get" tags:"广告数据报表" summary:"获取广告数据报表详情列表" dc:"分页查询广告数据报表详情列表"`
|
||||
*beans.Page
|
||||
DataType string `json:"dataType" dc:"类型type"`
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListCidAccountReportDetailRes 获取广告数据报表详情列表响应
|
||||
type ListCidAccountReportDetailRes struct {
|
||||
List []*CidAccountReportDetailItem `json:"list" dc:"广告数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,318 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateCidAccountReportSumReq 创建广告数据报表详情请求
|
||||
type CreateCidAccountReportSumReq struct {
|
||||
g.Meta `path:"/createCidAccountReportSum" method:"post" tags:"广告数据报表" summary:"创建广告数据报表详情" dc:"创建新的广告数据报表详情"`
|
||||
*CidAccountReportSumItem
|
||||
}
|
||||
|
||||
// CreateCidAccountReportSumRes 创建广告数据报表详情响应
|
||||
type CreateCidAccountReportSumRes struct {
|
||||
Id int64 `json:"id" dc:"广告数据ID"`
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportSumReq 批量创建广告数据报表详情请求
|
||||
type BatchCreateCidAccountReportSumReq struct {
|
||||
g.Meta `path:"/batchCreateCidAccountReportSum" method:"post" tags:"广告数据报表" summary:"批量创建广告数据报表详情" dc:"批量创建广告数据报表详情"`
|
||||
Items []*CidAccountReportSumItem `json:"items" v:"required" dc:"广告数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateCidAccountReportSumRes 批量创建广告数据报表详情响应
|
||||
type BatchCreateCidAccountReportSumRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// CidAccountReportSumItem 广告数据报表详情项
|
||||
type CidAccountReportSumItem struct {
|
||||
// 基础信息字段
|
||||
DataType string `json:"dataType" v:"required" dc:"类型type"`
|
||||
|
||||
// 核心指标字段
|
||||
T0OrderPaymentAmt string `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面URL"`
|
||||
CoverId int64 `json:"coverId" dc:"封面Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频id"`
|
||||
PhotoId string `json:"photoId" dc:"视频id"`
|
||||
|
||||
// 受众属性字段
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间"`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品5秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品3秒播放率"`
|
||||
|
||||
// 订单相关字段
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
|
||||
// 商品信息字段
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
|
||||
// 封面相关字段
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
|
||||
// 点击相关字段
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
|
||||
// 直播时长字段
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
|
||||
// 播放数据字段
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品3秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品3秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品5秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品5秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
|
||||
// 互动数据字段
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动字段
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
|
||||
// 播放效果字段
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
|
||||
// 转化字段
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接GMV"`
|
||||
|
||||
// GMV时间序列字段
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计GMV"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3日累计GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7日累计GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15日累计GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30日累计GMV"`
|
||||
|
||||
// ROI时间序列字段
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计ROI"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3日累计ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7日累计ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15日累计ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30日累计ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30日累计订单数"`
|
||||
|
||||
// 粉丝相关字段
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30日涨粉留存率"`
|
||||
|
||||
// 直播预约字段
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
|
||||
// 直播观看字段
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
|
||||
// 商品点击字段
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30日累计店铺新客"`
|
||||
|
||||
// 间接订单字段
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额字段
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本字段
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
|
||||
// 智能优惠券字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝GMV字段
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉7日GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉15日GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉30日GMV"`
|
||||
|
||||
// 粉丝ROI字段
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉7日ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉15日ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉30日ROI"`
|
||||
|
||||
// 新客GMV字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后1日新客GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后3日新客GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后7日新客GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后15日新客GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后30日新客GMV"`
|
||||
|
||||
// 新客订单量字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后1日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后3日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后7日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后15日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后30日新客成交订单量"`
|
||||
|
||||
// 新客复购率字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后1日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后3日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后7日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后15日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后30日新客复购率"`
|
||||
|
||||
// 新客ROI字段
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后1日新客ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后3日新客ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后7日新客ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后15日新客ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后30日新客ROI"`
|
||||
|
||||
// 电话卡相关字段
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
|
||||
// 广告结构字段
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
|
||||
// 补贴相关字段
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
// ListCidAccountReportSumReq 获取广告数据报表详情列表请求
|
||||
type ListCidAccountReportSumReq struct {
|
||||
g.Meta `path:"/listCidAccountReportSum" method:"get" tags:"广告数据报表" summary:"获取广告数据报表详情列表" dc:"分页查询广告数据报表详情列表"`
|
||||
*beans.Page
|
||||
DataType string `json:"dataType" dc:"类型type"`
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListCidAccountReportSumRes 获取广告数据报表详情列表响应
|
||||
type ListCidAccountReportSumRes struct {
|
||||
List []*CidAccountReportSumItem `json:"list" dc:"广告数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
type CreateCreativeReportDetailReq struct {
|
||||
g.Meta `path:"/createCreativeReportDetail" method:"post" tags:"广告效果明细报表" summary:"创建广告效果指标明细表" dc:"创建新的广告效果指标明细表"`
|
||||
*CreativeReportDetailItem
|
||||
}
|
||||
|
||||
type CreateCreativeReportDetailRes struct {
|
||||
Id int64 `json:"id" dc:"广告效果明细 ID"`
|
||||
}
|
||||
|
||||
type BatchCreateCreativeReportDetailReq struct {
|
||||
g.Meta `path:"/batchCreateCreativeReportDetail" method:"post" tags:"广告效果明细报表" summary:"批量创建广告效果指标明细表" dc:"批量创建广告效果指标明细表"`
|
||||
Items []*CreativeReportDetailItem `json:"items" v:"required" dc:"广告效果明细列表"`
|
||||
}
|
||||
|
||||
type BatchCreateCreativeReportDetailRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
type CreativeReportDetailItem struct {
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间"`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"性别"`
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接 ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接 GMV"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30 日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7 日累计 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15 日累计 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3 日累计订单数"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
type ListCreativeReportDetailReq struct {
|
||||
g.Meta `path:"/listCreativeReportDetail" method:"get" tags:"广告效果明细报表" summary:"获取广告效果指标明细表列表" dc:"分页查询广告效果指标明细表列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字"`
|
||||
}
|
||||
|
||||
type ListCreativeReportDetailRes struct {
|
||||
List []*CreativeReportDetailItem `json:"list" dc:"广告效果明细列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateCreativeReportSumReq 创建广告效果指标表请求
|
||||
type CreateCreativeReportSumReq struct {
|
||||
g.Meta `path:"/createCreativeReportSum" method:"post" tags:"广告效果报表" summary:"创建广告效果指标表" dc:"创建新的广告效果指标表"`
|
||||
*CreativeReportSumItem
|
||||
}
|
||||
|
||||
// CreateCreativeReportSumRes 创建广告效果指标表响应
|
||||
type CreateCreativeReportSumRes struct {
|
||||
Id int64 `json:"id" dc:"广告效果 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateCreativeReportSumReq 批量创建广告效果指标表请求
|
||||
type BatchCreateCreativeReportSumReq struct {
|
||||
g.Meta `path:"/batchCreateCreativeReportSum" method:"post" tags:"广告效果报表" summary:"批量创建广告效果指标表" dc:"批量创建广告效果指标表"`
|
||||
Items []*CreativeReportSumItem `json:"items" v:"required" dc:"广告效果列表"`
|
||||
}
|
||||
|
||||
// BatchCreateCreativeReportSumRes 批量创建广告效果指标表响应
|
||||
type BatchCreateCreativeReportSumRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// CreativeReportSumItem 广告效果指标表项
|
||||
type CreativeReportSumItem struct {
|
||||
// 订单金额相关字段
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
|
||||
// 素材类型字段
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
|
||||
// 直播相关字段
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
|
||||
// 图片相关字段
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
|
||||
// 封面相关字段
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
|
||||
// 成本相关字段
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
|
||||
// 净成交相关字段
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
|
||||
// 视频相关字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
|
||||
// 用户属性相关字段
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间"`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品 3 秒播放率"`
|
||||
|
||||
// 订单提交相关字段
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
|
||||
// 用户行为相关字段
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
|
||||
// 转化成本相关字段
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
|
||||
// 商品相关字段
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
|
||||
// 曝光相关字段
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
|
||||
// 行为相关字段
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
|
||||
// 直播时长相关字段
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
|
||||
// 作品播放相关字段
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
|
||||
// 作品互动相关字段
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动相关字段
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
|
||||
// 有效播放相关字段
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
|
||||
// 转化相关字段
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接 ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接 GMV"`
|
||||
|
||||
// 累计 GMV 相关字段
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30 日累计 GMV"`
|
||||
|
||||
// 累计 ROI 相关字段
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7 日累计 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15 日累计 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30 日累计 ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30 日累计订单数"`
|
||||
|
||||
// 涨粉相关字段
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30 日涨粉留存率"`
|
||||
|
||||
// 直播预约相关字段
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
|
||||
// 直播观看相关字段
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
|
||||
// 直播间商品相关字段
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30 日累计店铺新客"`
|
||||
|
||||
// 3 日累计相关字段
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3 日累计订单数"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3 日累计 ROI"`
|
||||
|
||||
// 7 日间接订单相关字段
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7 日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额相关字段
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30 日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本相关字段
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
|
||||
// 智能优惠券相关字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝 GMV 相关字段
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉 30 日 GMV"`
|
||||
|
||||
// 粉丝 ROI 相关字段
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉 30 日 ROI"`
|
||||
|
||||
// 新客 GMV 相关字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后 30 日新客 GMV"`
|
||||
|
||||
// 新客订单数相关字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后 30 日新客成交订单量"`
|
||||
|
||||
// 新客复购率相关字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后 30 日新客复购率"`
|
||||
|
||||
// 新客 ROI 相关字段
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后 30 日新客 ROI"`
|
||||
|
||||
// 制卡订单相关字段
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
|
||||
// 电话卡激活相关字段
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
|
||||
// 制卡订单率相关字段
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
|
||||
// 电话卡激活率相关字段
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 直播观看相关字段
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
|
||||
// 报告日期字段
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
|
||||
// 广告计划相关字段
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
|
||||
// 广告单元相关字段
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
|
||||
// 广告创意相关字段
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
|
||||
// 新增字段
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
// ListCreativeReportSumReq 获取广告效果指标表列表请求
|
||||
type ListCreativeReportSumReq struct {
|
||||
g.Meta `path:"/listCreativeReportSum" method:"get" tags:"广告效果报表" summary:"获取广告效果指标表列表" dc:"分页查询广告效果指标表列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListCreativeReportSumRes 获取广告效果指标表列表响应
|
||||
type ListCreativeReportSumRes struct {
|
||||
List []*CreativeReportSumItem `json:"list" dc:"广告效果列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateMaterialReportReq 创建素材报表数据请求
|
||||
type CreateMaterialReportReq struct {
|
||||
g.Meta `path:"/createMaterialReport" method:"post" tags:"素材报表" summary:"创建素材报表数据" dc:"创建新的素材报表数据"`
|
||||
*MaterialReportItem
|
||||
}
|
||||
|
||||
// CreateMaterialReportRes 创建素材报表数据响应
|
||||
type CreateMaterialReportRes struct {
|
||||
Id int64 `json:"id" dc:"素材报表数据 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateMaterialReportReq 批量创建素材报表数据请求
|
||||
type BatchCreateMaterialReportReq struct {
|
||||
g.Meta `path:"/batchCreateMaterialReport" method:"post" tags:"素材报表" summary:"批量创建素材报表数据" dc:"批量创建素材报表数据"`
|
||||
Items []*MaterialReportItem `json:"items" v:"required" dc:"素材报表数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateMaterialReportRes 批量创建素材报表数据响应
|
||||
type BatchCreateMaterialReportRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// MaterialReportItem 素材报表数据项
|
||||
type MaterialReportItem struct {
|
||||
CreatedBy *string `json:"createdBy" dc:"创建人"`
|
||||
UpdatedBy *string `json:"updatedBy" dc:"更新人"`
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日订单支付金额"`
|
||||
CreativeMaterialType *string `json:"creativeMaterialType" dc:"创意素材类型"`
|
||||
LiveName *string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId *string `json:"authorId" dc:"作者 ID"`
|
||||
PicUrl *string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName *string `json:"picName" dc:"图片名称"`
|
||||
PicId *string `json:"picId" dc:"图片 ID"`
|
||||
CoverUrl *string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 ID"`
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"商品订单转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"商品卡点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"商家涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"商家涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"当日净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"当日净成交 GMV"`
|
||||
PhotoName *string `json:"photoName" dc:"照片名称"`
|
||||
PhotoIdStr *string `json:"photoIdStr" dc:"照片 ID 字符串"`
|
||||
PhotoId *string `json:"photoId" dc:"照片 ID"`
|
||||
ModPriceSegment *string `json:"modPriceSegment" dc:"价格区间"`
|
||||
AgeSegment *string `json:"ageSegment" dc:"年龄段"`
|
||||
Province *string `json:"province" dc:"省份"`
|
||||
Gender *string `json:"gender" dc:"性别"`
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"广告照片播放 5 秒比率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"广告照片播放 3 秒比率"`
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"提交订单 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"提交订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"事件订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"事件订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"事件订单支付 ROI"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"事件 APP 调用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"事件加购数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化数量成本"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"广告有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"广告商品点击数"`
|
||||
MerchantProductId *string `json:"merchantProductId" dc:"商家商品 ID"`
|
||||
CostTotal *float64 `json:"costTotal" dc:"总花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"广告展示数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"千次展示成本"`
|
||||
Impression *int64 `json:"impression" dc:"曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"照片点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"照片点击率"`
|
||||
Click *int64 `json:"click" dc:"点击数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"操作栏点击数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"操作栏点击成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"ESP 点击率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"操作比率"`
|
||||
AdItemCount *int64 `json:"adItemCount" dc:"广告商品点击次数"`
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"ESP 直播播放秒数"`
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"播放 3 秒数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"播放 5 秒数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"播放结束数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"完播率"`
|
||||
Share *int64 `json:"share" dc:"分享数"`
|
||||
Comment *int64 `json:"comment" dc:"评论数"`
|
||||
Likes *int64 `json:"likes" dc:"点赞数"`
|
||||
Report *int64 `json:"report" dc:"举报数"`
|
||||
Block *int64 `json:"block" dc:"拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"商品负反馈数"`
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播分享数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播打赏数"`
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本 ESP"`
|
||||
Roi *float64 `json:"roi" dc:"ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"GMV"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7 日 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15 日 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30 日 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7 日 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15 日 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30 日 ROI"`
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"支付订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"订单比率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"当日订单比率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7 日订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15 日订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30 日订单数"`
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"商家推荐粉丝数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日留存率"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7 日留存率"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15 日留存率"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30 日留存率"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日留存比率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7 日留存比率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15 日留存比率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30 日留存比率"`
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"预约成本"`
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"标准直播开始数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"广告直播播放数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"广告直播播放成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观众成本"`
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播事件商品浏览数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接吸引平台新买家数"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30 日吸引平台总买家数"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接吸引商家新买家数"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30 日吸引商家总买家数"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3 日 GMV"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3 日订单数"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3 日 ROI"`
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"粉丝当日人均 GMV"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"粉丝 3 日人均 GMV"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"粉丝 7 日人均 GMV"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"粉丝 15 日人均 GMV"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"粉丝 30 日人均 GMV"`
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"推荐粉丝成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"白盒直接订单支付金额"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"白盒直接订单数"`
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"粉丝当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"粉丝次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"粉丝 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"粉丝 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"粉丝 30 日 GMV"`
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"粉丝当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"粉丝次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"粉丝 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"粉丝 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"粉丝 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日店铺新客订单支付金额"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"次日店铺新客订单支付金额"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"3 日店铺新客订单支付金额"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"7 日店铺新客订单支付金额"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"15 日店铺新客订单支付金额"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"30 日店铺新客订单支付金额"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日店铺新客订单数"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"次日店铺新客订单数"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"3 日店铺新客订单数"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"7 日店铺新客订单数"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"15 日店铺新客订单数"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"30 日店铺新客订单数"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"次日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"当日店铺新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"次日店铺新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"3 日店铺新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"7 日店铺新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"15 日店铺新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"30 日店铺新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"创建卡片订单数"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"转发 TS 创建卡片订单数"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"创建卡片订单成本"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"转发 TS 创建卡片订单成本"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"激活卡片订单数"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"转发 TS 激活卡片订单数"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"激活卡片订单成本"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"转发 TS 激活卡片订单成本"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"创建卡片订单比率"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"转发 TS 创建卡片订单比率"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"激活卡片订单比率"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"转发 TS 激活卡片订单比率"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"直播播放数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"商品入口点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"展示数"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"报告日期(格式:YYYY-MM-DD)"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName *string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName *string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName *string `json:"creativeName" dc:"创意名称"`
|
||||
}
|
||||
|
||||
// ListMaterialReportReq 获取素材报表数据列表请求
|
||||
type ListMaterialReportReq struct {
|
||||
g.Meta `path:"/listMaterialReport" method:"get" tags:"素材报表" summary:"获取素材报表数据列表" dc:"分页查询素材报表数据列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"报告日期"`
|
||||
PhotoId string `json:"photoId" dc:"照片 ID"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索照片名称、计划名称等)"`
|
||||
}
|
||||
|
||||
// ListMaterialReportRes 获取素材报表数据列表响应
|
||||
type ListMaterialReportRes struct {
|
||||
List []*MaterialReportItem `json:"list" dc:"素材报表数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,210 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// PopulationReportItem 调控任务数据项
|
||||
type PopulationReportItem struct {
|
||||
PhotoName string `json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `json:"photoId" description:"视频 id"`
|
||||
ModPriceSegment string `json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `json:"ageSegment" description:"年龄段"`
|
||||
Province string `json:"province" description:"省份名称"`
|
||||
Gender string `json:"gender" description:"性别"`
|
||||
MerchantProductId string `json:"merchantProductId" description:"商品 ID"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" description:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" description:"单元 ID"`
|
||||
UnitName string `json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" description:"创意名称"`
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" description:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" description:"行为数"`
|
||||
CostTotal *float64 `json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
Impression *int64 `json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" description:"封面点击率"`
|
||||
Click *int64 `json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" description:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" description:"作品完播率"`
|
||||
Share *int64 `json:"share" description:"作品分享数"`
|
||||
Comment *int64 `json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `json:"report" description:"作品举报数"`
|
||||
Block *int64 `json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" description:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" description:"有效播放率"`
|
||||
ConversionNum *int64 `json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `json:"gmv" description:"直接 GMV"`
|
||||
T0Gmv *float64 `json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T3Gmv *float64 `json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" description:"次日累计 ROI"`
|
||||
T3Roi *float64 `json:"t3Roi" description:"3 日累计 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" description:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" description:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" description:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `json:"recoFansCost" description:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" description:"全站曝光"`
|
||||
}
|
||||
|
||||
// CreatePopulationReportReq 创建调控任务数据请求参数
|
||||
type CreatePopulationReportReq struct {
|
||||
g.Meta `path:"/createPopulationReport" method:"post"`
|
||||
*PopulationReportItem
|
||||
}
|
||||
|
||||
// CreatePopulationReportRes 创建调控任务数据响应参数
|
||||
type CreatePopulationReportRes struct {
|
||||
Id int64 `json:"id"`
|
||||
}
|
||||
|
||||
// BatchCreatePopulationReportReq 批量创建调控任务数据请求参数
|
||||
type BatchCreatePopulationReportReq struct {
|
||||
g.Meta `path:"/batchCreatePopulationReport" method:"post"`
|
||||
Items []*PopulationReportItem `json:"items" v:"required"`
|
||||
}
|
||||
|
||||
// BatchCreatePopulationReportRes 批量创建调控任务数据响应参数
|
||||
type BatchCreatePopulationReportRes struct {
|
||||
SuccessCount int64 `json:"successCount"`
|
||||
FailCount int64 `json:"failCount"`
|
||||
FailedItems []int64 `json:"failedItems"`
|
||||
}
|
||||
|
||||
// ListPopulationReportReq 查询调控任务数据列表请求参数
|
||||
type ListPopulationReportReq struct {
|
||||
g.Meta `path:"/listPopulationReport" method:"post"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" description:"时间"`
|
||||
PhotoId string `json:"photoId" description:"视频 id"`
|
||||
Keyword string `json:"keyword" description:"关键词"`
|
||||
}
|
||||
|
||||
// ListPopulationReportRes 查询调控任务数据列表响应参数
|
||||
type ListPopulationReportRes struct {
|
||||
List []*PopulationReportItem `json:"list"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateStorewideReportDetailReq 创建广告效果指标表请求
|
||||
type CreateStorewideReportDetailReq struct {
|
||||
g.Meta `path:"/createStorewideReportDetail" method:"post" tags:"广告效果指标" summary:"创建广告效果指标表" dc:"创建新的广告效果指标表"`
|
||||
*StorewideReportDetailItem
|
||||
}
|
||||
|
||||
// CreateStorewideReportDetailRes 创建广告效果指标表响应
|
||||
type CreateStorewideReportDetailRes struct {
|
||||
Id int64 `json:"id" dc:"广告效果指标 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReportDetailReq 批量创建广告效果指标表请求
|
||||
type BatchCreateStorewideReportDetailReq struct {
|
||||
g.Meta `path:"/batchCreateStorewideReportDetail" method:"post" tags:"广告效果指标" summary:"批量创建广告效果指标表" dc:"批量创建广告效果指标表"`
|
||||
Items []*StorewideReportDetailItem `json:"items" v:"required" dc:"广告效果指标列表"`
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReportDetailRes 批量创建广告效果指标表响应
|
||||
type BatchCreateStorewideReportDetailRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// StorewideReportDetailItem 广告效果指标表项
|
||||
type StorewideReportDetailItem struct {
|
||||
// 订单金额相关字段
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
|
||||
// 素材类型字段
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
|
||||
// 直播相关字段
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
|
||||
// 图片相关字段
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
|
||||
// 封面相关字段
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
|
||||
// 商品卡点击相关字段
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
|
||||
// 净成交相关字段
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
|
||||
// 视频相关字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
|
||||
// 行为相关字段
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
|
||||
// 商品相关字段
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
|
||||
// 行为率字段
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
|
||||
// 当日 GMV 相关字段
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
|
||||
// 当日订单相关字段
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
|
||||
// 智能优惠券相关字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
|
||||
// 直播观看相关字段
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
|
||||
// 商品入口点击相关字段
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
|
||||
// 曝光相关字段
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
|
||||
// 报告日期字段
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
|
||||
// 广告计划相关字段
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
|
||||
// 广告单元相关字段
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
|
||||
// 广告创意相关字段
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
}
|
||||
|
||||
// ListStorewideReportDetailReq 获取广告效果指标表列表请求
|
||||
type ListStorewideReportDetailReq struct {
|
||||
g.Meta `path:"/listStorewideReportDetail" method:"get" tags:"广告效果指标" summary:"获取广告效果指标表列表" dc:"分页查询广告效果指标表列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListStorewideReportDetailRes 获取广告效果指标表列表响应
|
||||
type ListStorewideReportDetailRes struct {
|
||||
List []*StorewideReportDetailItem `json:"list" dc:"广告效果指标列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateStorewideReportSumReq 创建广告效果指标表请求
|
||||
type CreateStorewideReportSumReq struct {
|
||||
g.Meta `path:"/createStorewideReportSum" method:"post" tags:"广告效果指标" summary:"创建广告效果指标表" dc:"创建新的广告效果指标表"`
|
||||
*StorewideReportSumItem
|
||||
}
|
||||
|
||||
// CreateStorewideReportSumRes 创建广告效果指标表响应
|
||||
type CreateStorewideReportSumRes struct {
|
||||
Id int64 `json:"id" dc:"广告效果指标 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReportSumReq 批量创建广告效果指标表请求
|
||||
type BatchCreateStorewideReportSumReq struct {
|
||||
g.Meta `path:"/batchCreateStorewideReportSum" method:"post" tags:"广告效果指标" summary:"批量创建广告效果指标表" dc:"批量创建广告效果指标表"`
|
||||
Items []*StorewideReportSumItem `json:"items" v:"required" dc:"广告效果指标列表"`
|
||||
}
|
||||
|
||||
// BatchCreateStorewideReportSumRes 批量创建广告效果指标表响应
|
||||
type BatchCreateStorewideReportSumRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// StorewideReportSumItem 广告效果指标表项
|
||||
type StorewideReportSumItem struct {
|
||||
// 新增字段
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
|
||||
// 原有字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
}
|
||||
|
||||
// ListStorewideReportSumReq 获取广告效果指标表列表请求
|
||||
type ListStorewideReportSumReq struct {
|
||||
g.Meta `path:"/listStorewideReportSum" method:"get" tags:"广告效果指标" summary:"获取广告效果指标表列表" dc:"分页查询广告效果指标表列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListStorewideReportSumRes 获取广告效果指标表列表响应
|
||||
type ListStorewideReportSumRes struct {
|
||||
List []*StorewideReportSumItem `json:"list" dc:"广告效果指标列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateTaskReportReq 创建调控任务数据请求
|
||||
type CreateTaskReportReq struct {
|
||||
g.Meta `path:"/createTaskReport" method:"post" tags:"调控任务" summary:"创建调控任务数据" dc:"创建新的调控任务数据"`
|
||||
*TaskReportItem
|
||||
}
|
||||
|
||||
// CreateTaskReportRes 创建调控任务数据响应
|
||||
type CreateTaskReportRes struct {
|
||||
Id int64 `json:"id" dc:"调控任务数据 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateTaskReportReq 批量创建调控任务数据请求
|
||||
type BatchCreateTaskReportReq struct {
|
||||
g.Meta `path:"/batchCreateTaskReport" method:"post" tags:"调控任务" summary:"批量创建调控任务数据" dc:"批量创建调控任务数据"`
|
||||
Items []*TaskReportItem `json:"items" v:"required" dc:"调控任务数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateTaskReportRes 批量创建调控任务数据响应
|
||||
type BatchCreateTaskReportRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// TaskReportItem 调控任务数据项
|
||||
type TaskReportItem struct {
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
|
||||
// 核心指标字段
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
|
||||
// 粉丝 GMV 字段
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉 30 日 GMV"`
|
||||
|
||||
// 粉丝 ROI 字段
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉 30 日 ROI"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间(格式:YYYY-MM-DD)"`
|
||||
}
|
||||
|
||||
// ListTaskReportReq 获取调控任务数据列表请求
|
||||
type ListTaskReportReq struct {
|
||||
g.Meta `path:"/listTaskReport" method:"get" tags:"调控任务" summary:"获取调控任务数据列表" dc:"分页查询调控任务数据列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索视频名称等)"`
|
||||
}
|
||||
|
||||
// ListTaskReportRes 获取调控任务数据列表响应
|
||||
type ListTaskReportRes struct {
|
||||
List []*TaskReportItem `json:"list" dc:"调控任务数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateUnitReportDetailReq 创建广告效果指标详情请求
|
||||
type CreateUnitReportDetailReq struct {
|
||||
g.Meta `path:"/createUnitReportDetail" method:"post" tags:"广告效果指标详情" summary:"创建广告效果指标详情" dc:"创建新的广告效果指标详情"`
|
||||
*UnitReportDetailItem
|
||||
}
|
||||
|
||||
// CreateUnitReportDetailRes 创建广告效果指标详情响应
|
||||
type CreateUnitReportDetailRes struct {
|
||||
Id int64 `json:"id" dc:"广告数据 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateUnitReportDetailReq 批量创建广告效果指标详情请求
|
||||
type BatchCreateUnitReportDetailReq struct {
|
||||
g.Meta `path:"/batchCreateUnitReportDetail" method:"post" tags:"广告效果指标详情" summary:"批量创建广告效果指标详情" dc:"批量创建广告效果指标详情"`
|
||||
Items []*UnitReportDetailItem `json:"items" v:"required" dc:"广告数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateUnitReportDetailRes 批量创建广告效果指标详情响应
|
||||
type BatchCreateUnitReportDetailRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// UnitReportDetailItem 广告效果指标详情项
|
||||
type UnitReportDetailItem struct {
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间,"0-500", "501-1000", "1001-1500", "1501-2000", "2001-2500", "2501-3000", "3001-3500", "3501-4000", "4001-4500", "4501-5000", "5001-5500", "5501+", "未知""`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"0-17", "18-23", "24-30", "31-40", "41-49", "50+","未知""`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"男,女,未知三种类型"`
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接 ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接 GMV"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30 日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7 日累计 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15 日累计 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3 日累计订单数"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
// ListUnitReportDetailReq 获取广告效果指标详情列表请求
|
||||
type ListUnitReportDetailReq struct {
|
||||
g.Meta `path:"/listUnitReportDetail" method:"get" tags:"广告效果指标详情" summary:"获取广告效果指标详情列表" dc:"分页查询广告效果指标详情列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListUnitReportDetailRes 获取广告效果指标详情列表响应
|
||||
type ListUnitReportDetailRes struct {
|
||||
List []*UnitReportDetailItem `json:"list" dc:"广告数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateUnitReportSumReq 创建广告效果指标请求
|
||||
type CreateUnitReportSumReq struct {
|
||||
g.Meta `path:"/createUnitReportSum" method:"post" tags:"广告效果指标" summary:"创建广告效果指标" dc:"创建新的广告效果指标"`
|
||||
*UnitReportSumItem
|
||||
}
|
||||
|
||||
// CreateUnitReportSumRes 创建广告效果指标响应
|
||||
type CreateUnitReportSumRes struct {
|
||||
Id int64 `json:"id" dc:"广告数据 ID"`
|
||||
}
|
||||
|
||||
// BatchCreateUnitReportSumReq 批量创建广告效果指标请求
|
||||
type BatchCreateUnitReportSumReq struct {
|
||||
g.Meta `path:"/batchCreateUnitReportSum" method:"post" tags:"广告效果指标" summary:"批量创建广告效果指标" dc:"批量创建广告效果指标"`
|
||||
Items []*UnitReportSumItem `json:"items" v:"required" dc:"广告数据列表"`
|
||||
}
|
||||
|
||||
// BatchCreateUnitReportSumRes 批量创建广告效果指标响应
|
||||
type BatchCreateUnitReportSumRes struct {
|
||||
SuccessCount int64 `json:"successCount" dc:"成功数量"`
|
||||
FailCount int64 `json:"failCount" dc:"失败数量"`
|
||||
FailedItems []int64 `json:"failedItems" dc:"失败项索引"`
|
||||
}
|
||||
|
||||
// UnitReportSumItem 广告效果指标项
|
||||
type UnitReportSumItem struct {
|
||||
T0OrderPaymentAmt *float64 `json:"t0OrderPaymentAmt" dc:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `json:"creativeMaterialType" dc:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
LiveName string `json:"liveName" dc:"直播间名称"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
PicUrl string `json:"picUrl" dc:"图片 URL"`
|
||||
PicName string `json:"picName" dc:"图片名称"`
|
||||
PicId string `json:"picId" dc:"图片 Id"`
|
||||
CoverUrl string `json:"coverUrl" dc:"封面 URL"`
|
||||
CoverId *int64 `json:"coverId" dc:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `json:"itemOrderConversionRatio" dc:"转化率"`
|
||||
ItemCardClickRatio *float64 `json:"itemCardClickRatio" dc:"点击率"`
|
||||
ItemCardClkCnt *int64 `json:"itemCardClkCnt" dc:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `json:"livePlayCntCost" dc:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `json:"adMerchantFollowCost" dc:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `json:"adMerchantFollow" dc:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `json:"netT0OrderCnt" dc:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `json:"netT0Roi" dc:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `json:"netT0Gmv" dc:"净成交 GMV"`
|
||||
PhotoName string `json:"photoName" dc:"视频名称"`
|
||||
PhotoIdStr string `json:"photoIdStr" dc:"视频 id"`
|
||||
PhotoId string `json:"photoId" dc:"视频 id"`
|
||||
ModPriceSegment string `json:"modPriceSegment" dc:"设备价格区间,"0-500", "501-1000", "1001-1500", "1501-2000", "2001-2500", "2501-3000", "3001-3500", "3501-4000", "4001-4500", "4501-5000", "5001-5500", "5501+", "未知""`
|
||||
AgeSegment string `json:"ageSegment" dc:"年龄段"0-17", "18-23", "24-30", "31-40", "41-49", "50+","未知""`
|
||||
Province string `json:"province" dc:"省份名称"`
|
||||
Gender string `json:"gender" dc:"男,女,未知三种类型"`
|
||||
AdPhotoPlayedFiveRatio *float64 `json:"adPhotoPlayedFiveRatio" dc:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `json:"adPhotoPlayedThreeRatio" dc:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `json:"orderSubmitRoi" dc:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `json:"orderSubmitAmt" dc:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `json:"eventOrderSubmitCost" dc:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `json:"eventOrderSubmit" dc:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `json:"eventOrderPaidRoi" dc:"订单支付率"`
|
||||
EventAppInvoked *int64 `json:"eventAppInvoked" dc:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `json:"eventAddShoppingCart" dc:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `json:"conversionNumCost" dc:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `json:"adEffectivePlayNum" dc:"有效播放数"`
|
||||
AdItemClick *int64 `json:"adItemClick" dc:"行为数"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
CostTotal *float64 `json:"costTotal" dc:"花费"`
|
||||
AdShow *int64 `json:"adShow" dc:"曝光数"`
|
||||
AdShow1kCost *float64 `json:"adShow1kCost" dc:"平均千次广告曝光花费"`
|
||||
Impression *int64 `json:"impression" dc:"封面曝光数"`
|
||||
PhotoClick *int64 `json:"photoClick" dc:"封面点击数"`
|
||||
PhotoClickRatio *float64 `json:"photoClickRatio" dc:"封面点击率"`
|
||||
Click *int64 `json:"click" dc:"素材曝光数"`
|
||||
ActionbarClick *int64 `json:"actionbarClick" dc:"行为数"`
|
||||
ActionbarClickCost *float64 `json:"actionbarClickCost" dc:"行为成本"`
|
||||
EspClickRatio *float64 `json:"espClickRatio" dc:"行为率"`
|
||||
ActionRatio *float64 `json:"actionRatio" dc:"素材点击率"`
|
||||
AdItemClickCount *int64 `json:"adItemClickCount" dc:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `json:"espLivePlayedSeconds" dc:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `json:"playedThreeSeconds" dc:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `json:"play3sRatio" dc:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `json:"playedFiveSeconds" dc:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `json:"play5sRatio" dc:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `json:"playedEnd" dc:"作品完播数"`
|
||||
PlayEndRatio *float64 `json:"playEndRatio" dc:"作品完播率"`
|
||||
Share *int64 `json:"share" dc:"作品分享数"`
|
||||
Comment *int64 `json:"comment" dc:"作品评论数"`
|
||||
Likes *int64 `json:"likes" dc:"作品点赞数"`
|
||||
Report *int64 `json:"report" dc:"作品举报数"`
|
||||
Block *int64 `json:"block" dc:"作品拉黑数"`
|
||||
ItemNegative *int64 `json:"itemNegative" dc:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `json:"liveShare" dc:"直播送礼数"`
|
||||
LiveComment *int64 `json:"liveComment" dc:"直播评论数"`
|
||||
LiveReward *int64 `json:"liveReward" dc:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `json:"effectivePlayCount" dc:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `json:"effectivePlayRatio" dc:"有效播放率"`
|
||||
ConversionNum *int64 `json:"conversionNum" dc:"转化数"`
|
||||
ConversionCostEsp *float64 `json:"conversionCostEsp" dc:"转化成本"`
|
||||
Roi *float64 `json:"roi" dc:"直接 ROI"`
|
||||
Gmv *float64 `json:"gmv" dc:"直接 GMV"`
|
||||
T0Gmv *float64 `json:"t0Gmv" dc:"当日累计 GMV"`
|
||||
T1Gmv *float64 `json:"t1Gmv" dc:"次日累计 GMV"`
|
||||
T7Gmv *float64 `json:"t7Gmv" dc:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `json:"t15Gmv" dc:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `json:"t30Gmv" dc:"30 日累计 GMV"`
|
||||
T0Roi *float64 `json:"t0Roi" dc:"当日累计 ROI"`
|
||||
T1Roi *float64 `json:"t1Roi" dc:"次日累计 ROI"`
|
||||
T7Roi *float64 `json:"t7Roi" dc:"7 日累计 ROI"`
|
||||
T15Roi *float64 `json:"t15Roi" dc:"15 日累计 ROI"`
|
||||
T30Roi *float64 `json:"t30Roi" dc:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `json:"paiedOrder" dc:"直接订单数"`
|
||||
OrderRatio *float64 `json:"orderRatio" dc:"直接下单率"`
|
||||
T0OrderCnt *int64 `json:"t0OrderCnt" dc:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `json:"t0OrderCntCost" dc:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `json:"t0OrderCntRatio" dc:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `json:"t1OrderCnt" dc:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `json:"t7OrderCnt" dc:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `json:"t15OrderCnt" dc:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `json:"t30OrderCnt" dc:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `json:"merchantRecoFans" dc:"涨粉数"`
|
||||
T1Retention *float64 `json:"t1Retention" dc:"次日涨粉留存数"`
|
||||
T7Retention *float64 `json:"t7Retention" dc:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `json:"t15Retention" dc:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `json:"t30Retention" dc:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `json:"t1RetentionRatio" dc:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `json:"t7RetentionRatio" dc:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `json:"t15RetentionRatio" dc:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `json:"t30RetentionRatio" dc:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `json:"reservationSuccess" dc:"直播预约成功数"`
|
||||
ReservationCost *float64 `json:"reservationCost" dc:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `json:"standardLivePlayedStarted" dc:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `json:"adLivePlayCnt" dc:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `json:"adLivePlayCntCost" dc:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `json:"liveAudienceCost" dc:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `json:"liveEventGoodsView" dc:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `json:"goodsClickRatio" dc:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `json:"directAttrPlatNewBuyerCnt" dc:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `json:"t30AttrPlatTotalBuyerCnt" dc:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `json:"directAttrSellerNewBuyerCnt" dc:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `json:"t30AttrSellerTotalBuyerCnt" dc:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `json:"t3Gmv" dc:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `json:"t3OrderCnt" dc:"3 日累计订单数"`
|
||||
T3Roi *float64 `json:"t3Roi" dc:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `json:"t7IndirectOrderAmt" dc:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `json:"t7IndirectOrderCnt" dc:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `json:"fansT0GmvPerFans" dc:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `json:"fansT3GmvPerFans" dc:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `json:"fansT7GmvPerFans" dc:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `json:"fansT15GmvPerFans" dc:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `json:"fansT30GmvPerFans" dc:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `json:"recoFansCost" dc:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpxWhiteboxDirectOrderPaymentAmt" dc:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpxWhiteboxDirectOrderCnt" dc:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `json:"fansT0Gmv" dc:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `json:"fansT1Gmv" dc:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `json:"fansT7Gmv" dc:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `json:"fansT15Gmv" dc:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `json:"fansT30Gmv" dc:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `json:"fansT0Roi" dc:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `json:"fansT1Roi" dc:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `json:"fansT7Roi" dc:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `json:"fansT15Roi" dc:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `json:"fansT30Roi" dc:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0ShopNewBuyerOrderPaymentAmt" dc:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1ShopNewBuyerOrderPaymentAmt" dc:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3ShopNewBuyerOrderPaymentAmt" dc:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7ShopNewBuyerOrderPaymentAmt" dc:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15ShopNewBuyerOrderPaymentAmt" dc:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30ShopNewBuyerOrderPaymentAmt" dc:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `json:"t0ShopNewBuyerOrderCnt" dc:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `json:"t1ShopNewBuyerOrderCnt" dc:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `json:"t3ShopNewBuyerOrderCnt" dc:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `json:"t7ShopNewBuyerOrderCnt" dc:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `json:"t15ShopNewBuyerOrderCnt" dc:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `json:"t30ShopNewBuyerOrderCnt" dc:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `json:"t1NewBuyerRepurchaseRatio" dc:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `json:"t3NewBuyerRepurchaseRatio" dc:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `json:"t7NewBuyerRepurchaseRatio" dc:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `json:"t15NewBuyerRepurchaseRatio" dc:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `json:"t30NewBuyerRepurchaseRatio" dc:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `json:"t0ShopNewBuyerRoi" dc:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `json:"t1ShopNewBuyerRoi" dc:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `json:"t3ShopNewBuyerRoi" dc:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `json:"t7ShopNewBuyerRoi" dc:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `json:"t15ShopNewBuyerRoi" dc:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `json:"t30ShopNewBuyerRoi" dc:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `json:"createCardOrderCnt" dc:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `json:"forwardTsCreateCardOrderCnt" dc:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `json:"createCardOrderCost" dc:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `json:"forwardTsCreateCardOrderCost" dc:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `json:"activateCardOrderCnt" dc:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `json:"forwardTsActivateCardOrderCnt" dc:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `json:"activateCardOrderCost" dc:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `json:"forwardTsActivateCardOrderCost" dc:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `json:"createCardOrderRatio" dc:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `json:"forwardTsCreateCardOrderRatio" dc:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `json:"activateCardOrderCntRatio" dc:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `json:"forwardTsActivateCardOrderRatio" dc:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `json:"livePlayCnt" dc:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `json:"itemEntranceClkCnt" dc:"小黄车点击数"`
|
||||
ShowCnt *int64 `json:"showCnt" dc:"全站曝光"`
|
||||
ReportDateStr string `json:"reportDateStr" v:"required" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
CampaignName string `json:"campaignName" dc:"计划名称"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
UnitName string `json:"unitName" dc:"单元名称"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
CreativeName string `json:"creativeName" dc:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `json:"cidActualRoiAfterSubsidy" dc:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `json:"cidCouponAmount" dc:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `json:"cidCouponCallbackPaidRefundAmount" dc:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `json:"cidVoucherCost" dc:"券成本"`
|
||||
}
|
||||
|
||||
// ListUnitReportSumReq 获取广告效果指标列表请求
|
||||
type ListUnitReportSumReq struct {
|
||||
g.Meta `path:"/listUnitReportSum" method:"get" tags:"广告效果指标" summary:"获取广告效果指标列表" dc:"分页查询广告效果指标列表"`
|
||||
*beans.Page
|
||||
ReportDateStr string `json:"reportDateStr" dc:"时间"`
|
||||
CampaignId *int64 `json:"campaignId" dc:"计划 ID"`
|
||||
UnitId *int64 `json:"unitId" dc:"单元 ID"`
|
||||
CreativeId *int64 `json:"creativeId" dc:"创意 ID"`
|
||||
AuthorId string `json:"authorId" dc:"直播用户快手 Id"`
|
||||
MerchantProductId string `json:"merchantProductId" dc:"商品 ID"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索直播间名称、视频名称等)"`
|
||||
}
|
||||
|
||||
// ListUnitReportSumRes 获取广告效果指标列表响应
|
||||
type ListUnitReportSumRes struct {
|
||||
List []*UnitReportSumItem `json:"list" dc:"广告数据列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
package api_feature
|
||||
|
||||
import (
|
||||
"cid/consts/api-feature"
|
||||
entity "cid/model/entity/dict"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateDatasourcePlatformReq 创建数据源平台请求
|
||||
type CreateDatasourcePlatformReq struct {
|
||||
g.Meta `path:"/createDatasourcePlatform" method:"post" tags:"数据源平台管理" summary:"创建数据源平台" dc:"创建新的数据源平台配置"`
|
||||
PlatformCode string `json:"platformCode" v:"required" dc:"平台编码(唯一标识)"`
|
||||
PlatformName string `json:"platformName" v:"required" dc:"平台名称"`
|
||||
Description string `json:"description" dc:"平台描述"`
|
||||
Status api_feature.PlatformStatus `json:"status" dc:"平台状态" d:"ACTIVE"`
|
||||
ApiBaseUrl string `json:"apiBaseUrl" dc:"API基础地址"`
|
||||
AuthType string `json:"authType" v:"required|in:TOKEN,API_KEY,OAUTH2,BASIC" dc:"认证类型: TOKEN/API_KEY/OAUTH2/BASIC"`
|
||||
Token string `json:"token" dc:"认证token/密钥"`
|
||||
ApiKey string `json:"apiKey" dc:"API Key"`
|
||||
ClientId string `json:"clientId" dc:"OAuth2 Client ID"`
|
||||
ClientSecret string `json:"clientSecret" dc:"OAuth2 Client Secret"`
|
||||
RateLimitPerMinute int `json:"rateLimitPerMinute" dc:"每分钟请求限制" d:"60"`
|
||||
RateLimitPerHour int `json:"rateLimitPerHour" dc:"每小时请求限制" d:"1000"`
|
||||
ConcurrencyLimit int `json:"concurrencyLimit" dc:"并发连接限制" d:"10"`
|
||||
RequestTimeoutMs int `json:"requestTimeoutMs" dc:"请求超时时间(毫秒)" d:"30000"`
|
||||
MaxRetries int `json:"maxRetries" dc:"最大重试次数" d:"3"`
|
||||
RetryDelayMs int `json:"retryDelayMs" dc:"重试延迟(毫秒)" d:"1000"`
|
||||
CreatedBy string `json:"createdBy" v:"required" dc:"创建人"`
|
||||
CreatedAt string `json:"createdAt" v:"required" dc:"创建时间"`
|
||||
UpdatedBy string `json:"updatedBy" v:"required" dc:"修改人"`
|
||||
UpdatedAt string `json:"updatedAt" v:"required" dc:"修改人"`
|
||||
}
|
||||
|
||||
// CreateDatasourcePlatformRes 创建数据源平台响应
|
||||
type CreateDatasourcePlatformRes struct {
|
||||
Id int64 `json:"id" dc:"平台ID"`
|
||||
}
|
||||
|
||||
// ListDatasourcePlatformReq 获取数据源平台列表请求
|
||||
type ListDatasourcePlatformReq struct {
|
||||
g.Meta `path:"/listDatasourcePlatforms" method:"get" tags:"数据源平台管理" summary:"获取数据源平台列表" dc:"分页查询数据源平台列表"`
|
||||
*beans.Page
|
||||
PlatformCode string `json:"platformCode" dc:"平台编码"`
|
||||
PlatformName string `json:"platformName" dc:"平台名称"`
|
||||
Status api_feature.PlatformStatus `json:"status" dc:"平台状态"`
|
||||
AuthType string `json:"authType" dc:"认证类型"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索平台名称或编码)"`
|
||||
}
|
||||
|
||||
// ListDatasourcePlatformRes 获取数据源平台列表响应
|
||||
type ListDatasourcePlatformRes struct {
|
||||
List []DatasourcePlatformItem `json:"list" dc:"平台列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
|
||||
type DatasourcePlatformItem struct {
|
||||
Id int64 `json:"id,string"`
|
||||
PlatformCode string `json:"platformCode"`
|
||||
PlatformName string `json:"platformName"`
|
||||
Description string `json:"description"`
|
||||
Status api_feature.PlatformStatus `json:"status"`
|
||||
StatusName string `json:"statusName"`
|
||||
ApiBaseUrl string `json:"apiBaseUrl"`
|
||||
AuthType string `json:"authType"`
|
||||
AuthTypeName string `json:"authTypeName"`
|
||||
RateLimitPerMinute int `json:"rateLimitPerMinute"`
|
||||
RateLimitPerHour int `json:"rateLimitPerHour"`
|
||||
ConcurrencyLimit int `json:"concurrencyLimit"`
|
||||
RequestTimeoutMs int `json:"requestTimeoutMs"`
|
||||
MaxRetries int `json:"maxRetries"`
|
||||
RetryDelayMs int `json:"retryDelayMs"`
|
||||
CreatedBy string `json:"createdBy"`
|
||||
CreatedAt int64 `json:"createdAt"`
|
||||
UpdatedBy string `json:"updatedBy"`
|
||||
UpdatedAt int64 `json:"updatedAt"`
|
||||
}
|
||||
|
||||
// GetDatasourcePlatformReq 获取数据源平台详情请求
|
||||
type GetDatasourcePlatformReq struct {
|
||||
g.Meta `path:"/getDatasourcePlatform" method:"get" tags:"数据源平台管理" summary:"获取数据源平台详情" dc:"获取数据源平台详情"`
|
||||
Id int64 `json:"id" v:"required" dc:"平台ID"`
|
||||
}
|
||||
|
||||
// GetDatasourcePlatformRes 获取数据源平台详情响应
|
||||
type GetDatasourcePlatformRes struct {
|
||||
*entity.DatasourcePlatform
|
||||
}
|
||||
|
||||
// UpdateDatasourcePlatformReq 更新数据源平台请求
|
||||
type UpdateDatasourcePlatformReq struct {
|
||||
g.Meta `path:"/updateDatasourcePlatform" method:"put" tags:"数据源平台管理" summary:"更新数据源平台" dc:"更新数据源平台配置"`
|
||||
Id int64 `json:"id" v:"required" dc:"平台ID"`
|
||||
PlatformCode string `json:"platformCode" dc:"平台编码"`
|
||||
PlatformName string `json:"platformName" dc:"平台名称"`
|
||||
Description string `json:"description" dc:"平台描述"`
|
||||
Status api_feature.PlatformStatus `json:"status,omitempty" dc:"平台状态"`
|
||||
ApiBaseUrl string `json:"apiBaseUrl" dc:"API基础地址"`
|
||||
AuthType string `json:"authType" dc:"认证类型"`
|
||||
Token string `json:"token" dc:"认证token/密钥"`
|
||||
ApiKey string `json:"apiKey" dc:"API Key"`
|
||||
ClientId string `json:"clientId" dc:"OAuth2 Client ID"`
|
||||
ClientSecret string `json:"clientSecret" dc:"OAuth2 Client Secret"`
|
||||
RateLimitPerMinute int `json:"rateLimitPerMinute" dc:"每分钟请求限制"`
|
||||
RateLimitPerHour int `json:"rateLimitPerHour" dc:"每小时请求限制"`
|
||||
ConcurrencyLimit int `json:"concurrencyLimit" dc:"并发连接限制"`
|
||||
RequestTimeoutMs int `json:"requestTimeoutMs" dc:"请求超时时间(毫秒)"`
|
||||
MaxRetries int `json:"maxRetries" dc:"最大重试次数"`
|
||||
RetryDelayMs int `json:"retryDelayMs" dc:"重试延迟(毫秒)"`
|
||||
UpdatedBy string `json:"updatedBy" v:"required" dc:"更新人"`
|
||||
UpdatedAt string `json:"updatedAt" v:"required" dc:"更新时间"`
|
||||
Version string `json:"version" v:"required" dc:"版本"`
|
||||
}
|
||||
|
||||
// DeleteDatasourcePlatformReq 删除数据源平台请求
|
||||
type DeleteDatasourcePlatformReq struct {
|
||||
g.Meta `path:"/deleteDatasourcePlatform" method:"delete" tags:"数据源平台管理" summary:"删除数据源平台" dc:"删除数据源平台"`
|
||||
Id int64 `json:"id" v:"required" dc:"平台ID"`
|
||||
}
|
||||
|
||||
// UpdateDatasourcePlatformStatusReq 更新数据源平台状态请求
|
||||
type UpdateDatasourcePlatformStatusReq struct {
|
||||
g.Meta `path:"/updateDatasourcePlatformStatus" method:"put" tags:"数据源平台管理" summary:"更新数据源平台状态" dc:"更新数据源平台状态"`
|
||||
Id int64 `json:"id" v:"required" dc:"平台ID"`
|
||||
Status api_feature.PlatformStatus `json:"status" v:"required|in:ACTIVE,INACTIVE" dc:"状态:ACTIVE启用/INACTIVE停用"`
|
||||
UpdatedBy string `json:"updatedBy" v:"required" dc:"更新人"`
|
||||
}
|
||||
|
||||
// 以下是几个额外的实用API接口
|
||||
|
||||
// GetPlatformByCodeReq 根据平台编码获取平台信息请求
|
||||
type GetPlatformByCodeReq struct {
|
||||
g.Meta `path:"/getPlatformByCode" method:"get" tags:"数据源平台管理" summary:"根据编码获取平台信息" dc:"根据平台编码获取平台配置信息"`
|
||||
PlatformCode string `json:"platformCode" v:"required" dc:"平台编码"`
|
||||
}
|
||||
|
||||
// GetPlatformByCodeRes 根据平台编码获取平台信息响应
|
||||
type GetPlatformByCodeRes struct {
|
||||
*entity.DatasourcePlatform
|
||||
}
|
||||
|
||||
// TestPlatformConnectionReq 测试平台连接请求
|
||||
type TestPlatformConnectionReq struct {
|
||||
g.Meta `path:"/testPlatformConnection" method:"post" tags:"数据源平台管理" summary:"测试平台连接" dc:"测试数据源平台连接配置"`
|
||||
Id int64 `json:"id" v:"required" dc:"平台ID"`
|
||||
}
|
||||
|
||||
// TestPlatformConnectionRes 测试平台连接响应
|
||||
type TestPlatformConnectionRes struct {
|
||||
Success bool `json:"success" dc:"连接是否成功"`
|
||||
Message string `json:"message" dc:"连接结果消息"`
|
||||
LatencyMs int `json:"latencyMs" dc:"连接延迟(毫秒)"`
|
||||
}
|
||||
|
||||
// GetPlatformStatisticsReq 获取平台统计信息请求
|
||||
type GetPlatformStatisticsReq struct {
|
||||
g.Meta `path:"/getPlatformStatistics" method:"get" tags:"数据源平台管理" summary:"获取平台统计信息" dc:"获取数据源平台统计信息"`
|
||||
}
|
||||
|
||||
// GetPlatformStatisticsRes 获取平台统计信息响应
|
||||
type GetPlatformStatisticsRes struct {
|
||||
TotalPlatforms int `json:"totalPlatforms" dc:"总平台数"`
|
||||
ActivePlatforms int `json:"activePlatforms" dc:"启用平台数"`
|
||||
InactivePlatforms int `json:"inactivePlatforms" dc:"停用平台数"`
|
||||
TokenAuthPlatforms int `json:"tokenAuthPlatforms" dc:"TOKEN认证平台数"`
|
||||
ApiKeyAuthPlatforms int `json:"apiKeyAuthPlatforms" dc:"API_KEY认证平台数"`
|
||||
OAuth2AuthPlatforms int `json:"oauth2AuthPlatforms" dc:"OAUTH2认证平台数"`
|
||||
BasicAuthPlatforms int `json:"basicAuthPlatforms" dc:"BASIC认证平台数"`
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
package api_feature
|
||||
|
||||
import (
|
||||
entity "cid/model/entity/dict"
|
||||
"time"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateFieldMappingConfigReq 创建字段映射配置请求
|
||||
type CreateFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs" method:"post" tags:"字段映射配置" summary:"创建字段映射配置" dc:"创建新的字段映射配置"`
|
||||
ConfigName string `json:"configName" v:"required#配置名称不能为空" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" v:"required#厂商名称不能为空" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" v:"required#接口名称不能为空" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" v:"required#源字段不能为空" dc:"源字段名"`
|
||||
SourceFieldType string `json:"sourceFieldType" dc:"源字段数据类型"`
|
||||
SourceFieldDesc string `json:"sourceFieldDesc" dc:"源字段描述"`
|
||||
TargetField string `json:"targetField" v:"required#目标字段不能为空" dc:"目标字段名"`
|
||||
TargetFieldType string `json:"targetFieldType" v:"required#目标字段类型不能为空" dc:"目标数据类型"`
|
||||
TargetFieldDesc string `json:"targetFieldDesc" dc:"字段描述"`
|
||||
TransformType string `json:"transformType" dc:"转换类型" d:"direct"`
|
||||
TransformParams map[string]interface{} `json:"transformParams" dc:"转换参数"`
|
||||
ValidationRules map[string]interface{} `json:"validationRules" dc:"验证规则"`
|
||||
DefaultValue string `json:"defaultValue" dc:"默认值"`
|
||||
IsRequired bool `json:"isRequired" dc:"是否必填" d:"false"`
|
||||
IsActive bool `json:"isActive" dc:"是否启用" d:"true"`
|
||||
Priority int `json:"priority" dc:"优先级" d:"0"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
ConfigVersion int `json:"configVersion" dc:"配置版本号" d:"1"`
|
||||
EffectiveDate *time.Time `json:"effectiveDate" dc:"生效时间"`
|
||||
ExpiryDate *time.Time `json:"expiryDate" dc:"失效时间"`
|
||||
CreatedBy string `json:"createdBy" dc:"创建人"`
|
||||
}
|
||||
|
||||
// CreateFieldMappingConfigRes 创建字段映射配置响应
|
||||
type CreateFieldMappingConfigRes struct {
|
||||
Id int64 `json:"id" dc:"配置ID"`
|
||||
}
|
||||
|
||||
// ListFieldMappingConfigReq 获取字段映射配置列表请求
|
||||
type ListFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs" method:"get" tags:"字段映射配置" summary:"获取字段映射配置列表" dc:"分页查询字段映射配置列表"`
|
||||
*beans.Page
|
||||
ConfigName string `json:"configName" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" dc:"源字段名"`
|
||||
TargetField string `json:"targetField" dc:"目标字段名"`
|
||||
TransformType string `json:"transformType" dc:"转换类型"`
|
||||
IsActive *bool `json:"isActive" dc:"是否启用"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
Keyword string `json:"keyword" dc:"关键字搜索"`
|
||||
}
|
||||
|
||||
// ListFieldMappingConfigRes 获取字段映射配置列表响应
|
||||
type ListFieldMappingConfigRes struct {
|
||||
List []FieldMappingConfigItem `json:"list" dc:"配置列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
|
||||
// FieldMappingConfigItem 字段映射配置列表项
|
||||
type FieldMappingConfigItem struct {
|
||||
Id int64 `json:"id,string" dc:"配置ID"`
|
||||
ConfigName string `json:"configName" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" dc:"源字段名"`
|
||||
TargetField string `json:"targetField" dc:"目标字段名"`
|
||||
TargetFieldType string `json:"targetFieldType" dc:"目标数据类型"`
|
||||
TransformType string `json:"transformType" dc:"转换类型"`
|
||||
TransformTypeName string `json:"transformTypeName" dc:"转换类型名称"`
|
||||
IsActive bool `json:"isActive" dc:"是否启用"`
|
||||
Priority int `json:"priority" dc:"优先级"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
BusinessDomainName string `json:"businessDomainName" dc:"业务域名称"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
ConfigVersion int `json:"configVersion" dc:"配置版本号"`
|
||||
CreatedBy string `json:"createdBy" dc:"创建人"`
|
||||
CreatedTime time.Time `json:"createdTime" dc:"创建时间"`
|
||||
UpdatedBy string `json:"updatedBy" dc:"更新人"`
|
||||
UpdatedTime time.Time `json:"updatedTime" dc:"更新时间"`
|
||||
}
|
||||
|
||||
// GetFieldMappingConfigReq 获取字段映射配置详情请求
|
||||
type GetFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/{id}" method:"get" tags:"字段映射配置" summary:"获取字段映射配置详情" dc:"获取字段映射配置详情"`
|
||||
Id int64 `json:"id" v:"required#配置ID不能为空" dc:"配置ID"`
|
||||
}
|
||||
|
||||
// GetFieldMappingConfigRes 获取字段映射配置详情响应
|
||||
type GetFieldMappingConfigRes struct {
|
||||
*entity.FieldMappingConfig
|
||||
TransformTypeName string `json:"transformTypeName,omitempty" dc:"转换类型名称"`
|
||||
BusinessDomainName string `json:"businessDomainName,omitempty" dc:"业务域名称"`
|
||||
}
|
||||
|
||||
// UpdateFieldMappingConfigReq 更新字段映射配置请求
|
||||
type UpdateFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/{id}" method:"put" tags:"字段映射配置" summary:"更新字段映射配置" dc:"更新字段映射配置信息"`
|
||||
Id int64 `json:"id" v:"required#配置ID不能为空" dc:"配置ID"`
|
||||
ConfigName string `json:"configName" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" dc:"源字段名"`
|
||||
SourceFieldType string `json:"sourceFieldType" dc:"源字段数据类型"`
|
||||
SourceFieldDesc string `json:"sourceFieldDesc" dc:"源字段描述"`
|
||||
TargetField string `json:"targetField" dc:"目标字段名"`
|
||||
TargetFieldType string `json:"targetFieldType" dc:"目标数据类型"`
|
||||
TargetFieldDesc string `json:"targetFieldDesc" dc:"字段描述"`
|
||||
TransformType string `json:"transformType" dc:"转换类型"`
|
||||
TransformParams map[string]interface{} `json:"transformParams" dc:"转换参数"`
|
||||
ValidationRules map[string]interface{} `json:"validationRules" dc:"验证规则"`
|
||||
DefaultValue string `json:"defaultValue" dc:"默认值"`
|
||||
IsRequired bool `json:"isRequired" dc:"是否必填"`
|
||||
IsActive bool `json:"isActive" dc:"是否启用"`
|
||||
Priority int `json:"priority" dc:"优先级"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
ConfigVersion int `json:"configVersion" dc:"配置版本号"`
|
||||
EffectiveDate *time.Time `json:"effectiveDate" dc:"生效时间"`
|
||||
ExpiryDate *time.Time `json:"expiryDate" dc:"失效时间"`
|
||||
UpdatedBy string `json:"updatedBy" dc:"更新人"`
|
||||
}
|
||||
|
||||
// DeleteFieldMappingConfigReq 删除字段映射配置请求
|
||||
type DeleteFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/{id}" method:"delete" tags:"字段映射配置" summary:"删除字段映射配置" dc:"删除字段映射配置"`
|
||||
Id int64 `json:"id" v:"required#配置ID不能为空" dc:"配置ID"`
|
||||
}
|
||||
|
||||
// UpdateFieldMappingConfigStatusReq 更新字段映射配置状态请求
|
||||
type UpdateFieldMappingConfigStatusReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/{id}/status" method:"put" tags:"字段映射配置" summary:"更新字段映射配置状态" dc:"更新字段映射配置状态"`
|
||||
Id int64 `json:"id" v:"required#配置ID不能为空" dc:"配置ID"`
|
||||
IsActive bool `json:"isActive" v:"required#状态不能为空" dc:"是否启用:true启用/false停用"`
|
||||
}
|
||||
|
||||
// BatchCreateFieldMappingConfigReq 批量创建字段映射配置请求
|
||||
type BatchCreateFieldMappingConfigReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/batch" method:"post" tags:"字段映射配置" summary:"批量创建字段映射配置" dc:"批量创建字段映射配置"`
|
||||
Configs []BatchFieldMappingConfigItem `json:"configs" v:"required#配置列表不能为空" dc:"配置列表"`
|
||||
}
|
||||
|
||||
// BatchFieldMappingConfigItem 批量创建配置项
|
||||
type BatchFieldMappingConfigItem struct {
|
||||
ConfigName string `json:"configName" v:"required#配置名称不能为空" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" v:"required#厂商名称不能为空" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" v:"required#接口名称不能为空" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" v:"required#源字段不能为空" dc:"源字段名"`
|
||||
SourceFieldType string `json:"sourceFieldType" dc:"源字段数据类型"`
|
||||
SourceFieldDesc string `json:"sourceFieldDesc" dc:"源字段描述"`
|
||||
TargetField string `json:"targetField" v:"required#目标字段不能为空" dc:"目标字段名"`
|
||||
TargetFieldType string `json:"targetFieldType" v:"required#目标字段类型不能为空" dc:"目标数据类型"`
|
||||
TargetFieldDesc string `json:"targetFieldDesc" dc:"字段描述"`
|
||||
TransformType string `json:"transformType" dc:"转换类型" d:"direct"`
|
||||
TransformParams map[string]interface{} `json:"transformParams" dc:"转换参数"`
|
||||
ValidationRules map[string]interface{} `json:"validationRules" dc:"验证规则"`
|
||||
DefaultValue string `json:"defaultValue" dc:"默认值"`
|
||||
IsRequired bool `json:"isRequired" dc:"是否必填" d:"false"`
|
||||
IsActive bool `json:"isActive" dc:"是否启用" d:"true"`
|
||||
Priority int `json:"priority" dc:"优先级" d:"0"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
ConfigVersion int `json:"configVersion" dc:"配置版本号" d:"1"`
|
||||
}
|
||||
|
||||
// BatchCreateFieldMappingConfigRes 批量创建字段映射配置响应
|
||||
type BatchCreateFieldMappingConfigRes struct {
|
||||
SuccessCount int `json:"successCount" dc:"成功数量"`
|
||||
FailedCount int `json:"failedCount" dc:"失败数量"`
|
||||
FailedItems []BatchCreateFailedItem `json:"failedItems" dc:"失败项列表"`
|
||||
}
|
||||
|
||||
// BatchCreateFailedItem 批量创建失败项
|
||||
type BatchCreateFailedItem struct {
|
||||
Index int `json:"index" dc:"项索引"`
|
||||
ConfigName string `json:"configName" dc:"配置名称"`
|
||||
Error string `json:"error" dc:"错误信息"`
|
||||
}
|
||||
|
||||
// QueryFieldMappingByVendorApiReq 根据厂商和接口查询字段映射请求
|
||||
type QueryFieldMappingByVendorApiReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/query" method:"get" tags:"字段映射配置" summary:"根据厂商和接口查询字段映射" dc:"根据厂商和接口查询字段映射配置"`
|
||||
VendorName string `json:"vendorName" v:"required#厂商名称不能为空" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" v:"required#接口名称不能为空" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
IsActive *bool `json:"isActive" dc:"是否启用" d:"true"`
|
||||
}
|
||||
|
||||
// QueryFieldMappingByVendorApiRes 根据厂商和接口查询字段映射响应
|
||||
type QueryFieldMappingByVendorApiRes struct {
|
||||
List []*entity.FieldMappingConfig `json:"list" dc:"字段映射配置列表"`
|
||||
}
|
||||
|
||||
// ValidateFieldMappingReq 验证字段映射配置请求
|
||||
type ValidateFieldMappingReq struct {
|
||||
g.Meta `path:"/field-mapping-configs/validate" method:"post" tags:"字段映射配置" summary:"验证字段映射配置" dc:"验证字段映射配置的有效性"`
|
||||
ConfigName string `json:"configName" v:"required#配置名称不能为空" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" v:"required#厂商名称不能为空" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" v:"required#接口名称不能为空" dc:"接口名称"`
|
||||
SourceField string `json:"sourceField" v:"required#源字段不能为空" dc:"源字段名"`
|
||||
TargetField string `json:"targetField" v:"required#目标字段不能为空" dc:"目标字段名"`
|
||||
TestValue interface{} `json:"testValue" dc:"测试值"`
|
||||
}
|
||||
|
||||
// ValidateFieldMappingRes 验证字段映射配置响应
|
||||
type ValidateFieldMappingRes struct {
|
||||
IsValid bool `json:"isValid" dc:"是否有效"`
|
||||
TransformedValue interface{} `json:"transformedValue" dc:"转换后的值"`
|
||||
Error string `json:"error" dc:"错误信息"`
|
||||
Warnings []string `json:"warnings" dc:"警告信息"`
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package api_feature
|
||||
|
||||
import (
|
||||
"cid/consts/api-feature"
|
||||
entity "cid/model/entity/dict"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// CreateApiInterfaceReq 创建接口请求
|
||||
type CreateApiInterfaceReq struct {
|
||||
g.Meta `path:"/createApiInterface" method:"post" tags:"接口管理" summary:"创建接口" dc:"创建新的数据接口"`
|
||||
PlatformId int64 `json:"platformId" v:"required" dc:"所属平台ID"`
|
||||
Name string `json:"name" v:"required" dc:"接口名称"`
|
||||
Code string `json:"code" v:"required" dc:"接口编码"`
|
||||
Url string `json:"url" v:"required" dc:"接口地址"`
|
||||
Method api_feature.ApiMethod `json:"method" v:"required" dc:"请求方法"`
|
||||
Status api_feature.PlatformStatus `json:"status" dc:"接口状态" d:"active"`
|
||||
AuthType string `json:"authType" dc:"认证类型"`
|
||||
RequestConfig map[string]interface{} `json:"requestConfig" dc:"请求配置"`
|
||||
ResponseConfig map[string]interface{} `json:"responseConfig" dc:"响应配置"`
|
||||
LimitConfig map[string]interface{} `json:"limitConfig" dc:"接口独立限流配置"`
|
||||
}
|
||||
|
||||
// CreateApiInterfaceRes 创建接口响应
|
||||
type CreateApiInterfaceRes struct {
|
||||
Id int64 `json:"id" dc:"接口ID"`
|
||||
}
|
||||
|
||||
// ListApiInterfaceReq 获取接口列表请求
|
||||
type ListApiInterfaceReq struct {
|
||||
g.Meta `path:"/listApiInterfaces" method:"get" tags:"接口管理" summary:"获取接口列表" dc:"分页查询接口列表"`
|
||||
*beans.Page
|
||||
PlatformId int64 `json:"platformId" dc:"平台ID"`
|
||||
Name string `json:"name" dc:"接口名称"`
|
||||
Code string `json:"code" dc:"接口编码"`
|
||||
Method api_feature.ApiMethod `json:"method" dc:"请求方法"`
|
||||
Status api_feature.PlatformStatus `json:"status" dc:"接口状态"`
|
||||
Keyword string `json:"keyword" dc:"关键字(搜索名称或编码)"`
|
||||
}
|
||||
|
||||
// ListApiInterfaceRes 获取接口列表响应
|
||||
type ListApiInterfaceRes struct {
|
||||
List []ApiInterfaceItem `json:"list" dc:"接口列表"`
|
||||
Total int `json:"total" dc:"总数"`
|
||||
}
|
||||
|
||||
type ApiInterfaceItem struct {
|
||||
Id int64 `json:"id,string"`
|
||||
PlatformId int64 `json:"platformId"`
|
||||
PlatformName string `json:"platformName"`
|
||||
Name string `json:"name"`
|
||||
Code string `json:"code"`
|
||||
Url string `json:"url"`
|
||||
Method api_feature.ApiMethod `json:"method"`
|
||||
Status api_feature.PlatformStatus `json:"status"`
|
||||
StatusName string `json:"statusName"`
|
||||
CreatedAt int64 `json:"createdAt"`
|
||||
UpdatedAt int64 `json:"updatedAt"`
|
||||
}
|
||||
|
||||
// GetApiInterfaceReq 获取接口详情请求
|
||||
type GetApiInterfaceReq struct {
|
||||
g.Meta `path:"/getApiInterface" method:"get" tags:"接口管理" summary:"获取接口详情" dc:"获取接口详情"`
|
||||
Id int64 `json:"id" v:"required" dc:"接口ID"`
|
||||
}
|
||||
|
||||
// GetApiInterfaceRes 获取接口详情响应
|
||||
type GetApiInterfaceRes struct {
|
||||
*entity.ApiInterface
|
||||
PlatformName string `json:"platformName,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateApiInterfaceReq 更新接口请求
|
||||
type UpdateApiInterfaceReq struct {
|
||||
g.Meta `path:"/updateApiInterface" method:"put" tags:"接口管理" summary:"更新接口" dc:"更新接口信息"`
|
||||
Id int64 `json:"id" v:"required" dc:"接口ID"`
|
||||
PlatformId int64 `json:"platformId" dc:"所属平台ID"`
|
||||
Name string `json:"name" dc:"接口名称"`
|
||||
Code string `json:"code" dc:"接口编码"`
|
||||
Url string `json:"url" dc:"接口地址"`
|
||||
Method api_feature.ApiMethod `json:"method" dc:"请求方法"`
|
||||
Status api_feature.PlatformStatus `json:"status,omitempty" dc:"接口状态"`
|
||||
AuthType string `json:"authType" dc:"认证类型"`
|
||||
RequestConfig map[string]interface{} `json:"requestConfig" dc:"请求配置"`
|
||||
ResponseConfig map[string]interface{} `json:"responseConfig" dc:"响应配置"`
|
||||
LimitConfig map[string]interface{} `json:"limitConfig" dc:"接口独立限流配置"`
|
||||
}
|
||||
|
||||
// DeleteApiInterfaceReq 删除接口请求
|
||||
type DeleteApiInterfaceReq struct {
|
||||
g.Meta `path:"/deleteApiInterface" method:"delete" tags:"接口管理" summary:"删除接口" dc:"删除接口"`
|
||||
Id int64 `json:"id" v:"required" dc:"接口ID"`
|
||||
}
|
||||
|
||||
// UpdateApiInterfaceStatusReq 更新接口状态请求
|
||||
type UpdateApiInterfaceStatusReq struct {
|
||||
g.Meta `path:"/updateApiInterfaceStatus" method:"put" tags:"接口管理" summary:"更新接口状态" dc:"更新接口状态"`
|
||||
Id int64 `json:"id" v:"required" dc:"接口ID"`
|
||||
Status api_feature.PlatformStatus `json:"status" v:"required|in:active,inactive" dc:"状态:active启用/inactive停用"`
|
||||
}
|
||||
@@ -0,0 +1,664 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// CidAccountReportDetail 广告数据报表详情实体
|
||||
type CidAccountReportDetail struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 基础信息字段
|
||||
DataType string `orm:"data_type" json:"dataType" description:"类型type"`
|
||||
|
||||
// 核心指标字段
|
||||
T0OrderPaymentAmt string `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面URL"`
|
||||
CoverId int64 `orm:"cover_id" json:"coverId" description:"封面Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频id"`
|
||||
|
||||
// 受众属性字段
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品5秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品3秒播放率"`
|
||||
|
||||
// 订单相关字段
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
|
||||
// 商品信息字段
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
|
||||
// 封面相关字段
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
|
||||
// 点击相关字段
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
|
||||
// 直播时长字段
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
|
||||
// 播放数据字段
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品3秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品3秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品5秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品5秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
|
||||
// 互动数据字段
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动字段
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
|
||||
// 播放效果字段
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
|
||||
// 转化字段
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接GMV"`
|
||||
|
||||
// GMV时间序列字段
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计GMV"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3日累计GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7日累计GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15日累计GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30日累计GMV"`
|
||||
|
||||
// ROI时间序列字段
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计ROI"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3日累计ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7日累计ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15日累计ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30日累计ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30日累计订单数"`
|
||||
|
||||
// 粉丝相关字段
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30日涨粉留存率"`
|
||||
|
||||
// 直播预约字段
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
|
||||
// 直播观看字段
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
|
||||
// 商品点击字段
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30日累计店铺新客"`
|
||||
|
||||
// 间接订单字段
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额字段
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本字段
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
|
||||
// 智能优惠券字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝GMV字段
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉7日GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉15日GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉30日GMV"`
|
||||
|
||||
// 粉丝ROI字段
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉7日ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉15日ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉30日ROI"`
|
||||
|
||||
// 新客GMV字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后1日新客GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后3日新客GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后7日新客GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后15日新客GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后30日新客GMV"`
|
||||
|
||||
// 新客订单量字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后1日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后3日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后7日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后15日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后30日新客成交订单量"`
|
||||
|
||||
// 新客复购率字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后1日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后3日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后7日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后15日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后30日新客复购率"`
|
||||
|
||||
// 新客ROI字段
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后1日新客ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后3日新客ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后7日新客ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后15日新客ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后30日新客ROI"`
|
||||
|
||||
// 电话卡相关字段
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
|
||||
// 广告结构字段
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
|
||||
// 补贴相关字段
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// CidAccountReportDetailCol 广告数据报表详情表字段定义
|
||||
type CidAccountReportDetailCol struct {
|
||||
beans.SQLBaseCol
|
||||
DataType string
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemClickCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T3Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T3Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T3OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
CidActualRoiAfterSubsidy string
|
||||
CidCouponAmount string
|
||||
CidCouponCallbackPaidRefundAmount string
|
||||
CidVoucherCost string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *CidAccountReportDetail) TableName() string {
|
||||
return "cid_account_report_detail"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *CidAccountReportDetail) GetCols() *CidAccountReportDetailCol {
|
||||
return &CidAccountReportDetailCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
DataType: "data_type",
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemClickCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T3Gmv: "t3_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T3Roi: "t3_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T3OrderCnt: "t3_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
CidActualRoiAfterSubsidy: "cid_actual_roi_after_subsidy",
|
||||
CidCouponAmount: "cid_coupon_amount",
|
||||
CidCouponCallbackPaidRefundAmount: "cid_coupon_callback_paid_refund_amount",
|
||||
CidVoucherCost: "cid_voucher_cost",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,665 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// CidAccountReportSum 广告数据报表详情实体
|
||||
type CidAccountReportSum struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 基础信息字段
|
||||
DataType string `orm:"data_type" json:"dataType" description:"类型type"`
|
||||
|
||||
// 核心指标字段
|
||||
T0OrderPaymentAmt string `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面URL"`
|
||||
CoverId int64 `orm:"cover_id" json:"coverId" description:"封面Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频id"`
|
||||
|
||||
// 受众属性字段
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品5秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品3秒播放率"`
|
||||
|
||||
// 订单相关字段
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
|
||||
// 商品信息字段
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
|
||||
// 封面相关字段
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
|
||||
// 点击相关字段
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
|
||||
// 直播时长字段
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
|
||||
// 播放数据字段
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品3秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品3秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品5秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品5秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
|
||||
// 互动数据字段
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动字段
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
|
||||
// 播放效果字段
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
|
||||
// 转化字段
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接GMV"`
|
||||
|
||||
// GMV时间序列字段
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计GMV"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3日累计GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7日累计GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15日累计GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30日累计GMV"`
|
||||
|
||||
// ROI时间序列字段
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计ROI"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3日累计ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7日累计ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15日累计ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30日累计ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30日累计订单数"`
|
||||
|
||||
// 粉丝相关字段
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30日涨粉留存率"`
|
||||
|
||||
// 直播预约字段
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
|
||||
// 直播观看字段
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
|
||||
// 商品点击字段
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30日累计店铺新客"`
|
||||
|
||||
// 间接订单字段
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额字段
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本字段
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
|
||||
// 智能优惠券字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝GMV字段
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉7日GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉15日GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉30日GMV"`
|
||||
|
||||
// 粉丝ROI字段
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉7日ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉15日ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉30日ROI"`
|
||||
|
||||
// 新客GMV字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后1日新客GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后3日新客GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后7日新客GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后15日新客GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后30日新客GMV"`
|
||||
|
||||
// 新客订单量字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后1日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后3日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后7日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后15日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后30日新客成交订单量"`
|
||||
|
||||
// 新客复购率字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后1日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后3日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后7日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后15日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后30日新客复购率"`
|
||||
|
||||
// 新客ROI字段
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后1日新客ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后3日新客ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后7日新客ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后15日新客ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后30日新客ROI"`
|
||||
|
||||
// 电话卡相关字段
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
|
||||
// 广告结构字段
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
|
||||
// 补贴相关字段
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// CidAccountReportSumCol 广告数据报表详情表字段定义
|
||||
type CidAccountReportSumCol struct {
|
||||
beans.SQLBaseCol
|
||||
DataType string
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemClickCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T3Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T3Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T3OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
// model/entity/cid_account_report_detail.go (续)
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
CidActualRoiAfterSubsidy string
|
||||
CidCouponAmount string
|
||||
CidCouponCallbackPaidRefundAmount string
|
||||
CidVoucherCost string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *CidAccountReportSum) TableName() string {
|
||||
return "cid_account_report_detail"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *CidAccountReportSum) GetCols() *CidAccountReportSumCol {
|
||||
return &CidAccountReportSumCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
DataType: "data_type",
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemClickCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T3Gmv: "t3_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T3Roi: "t3_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T3OrderCnt: "t3_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
CidActualRoiAfterSubsidy: "cid_actual_roi_after_subsidy",
|
||||
CidCouponAmount: "cid_coupon_amount",
|
||||
CidCouponCallbackPaidRefundAmount: "cid_coupon_callback_paid_refund_amount",
|
||||
CidVoucherCost: "cid_voucher_cost",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,582 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// CreativeReportDetail 广告效果指标明细表实体
|
||||
type CreativeReportDetail struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"性别"`
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接 GMV"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3 日累计订单数"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// CreativeReportDetailCol 广告效果指标明细表字段定义
|
||||
type CreativeReportDetailCol struct {
|
||||
beans.SQLBaseCol
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemClickCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T3Gmv string
|
||||
T3OrderCnt string
|
||||
T3Roi string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
CidActualRoiAfterSubsidy string
|
||||
CidCouponAmount string
|
||||
CidCouponCallbackPaidRefundAmount string
|
||||
CidVoucherCost string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *CreativeReportDetail) TableName() string {
|
||||
return "creative_report_detail"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *CreativeReportDetail) GetCols() *CreativeReportDetailCol {
|
||||
return &CreativeReportDetailCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemClickCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T3Gmv: "t3_gmv",
|
||||
T3OrderCnt: "t3_order_cnt",
|
||||
T3Roi: "t3_roi",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
CidActualRoiAfterSubsidy: "cid_actual_roi_after_subsidy",
|
||||
CidCouponAmount: "cid_coupon_amount",
|
||||
CidCouponCallbackPaidRefundAmount: "cid_coupon_callback_paid_refund_amount",
|
||||
CidVoucherCost: "cid_voucher_cost",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,687 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// CreativeReportSum 广告效果指标表实体
|
||||
type CreativeReportSum struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 订单金额相关字段
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
|
||||
// 素材类型字段
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
|
||||
// 直播相关字段
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
|
||||
// 图片相关字段
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
|
||||
// 封面相关字段
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
|
||||
// 成本相关字段
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
|
||||
// 净成交相关字段
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
|
||||
// 视频相关字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
|
||||
// 用户属性相关字段
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"性别"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
|
||||
// 订单提交相关字段
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
|
||||
// 用户行为相关字段
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
|
||||
// 转化成本相关字段
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
|
||||
// 商品相关字段
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
|
||||
// 曝光相关字段
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
|
||||
// 行为相关字段
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
|
||||
// 直播时长相关字段
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
|
||||
// 作品播放相关字段
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
|
||||
// 作品互动相关字段
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动相关字段
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
|
||||
// 有效播放相关字段
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
|
||||
// 转化相关字段
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接 GMV"`
|
||||
|
||||
// 累计 GMV 相关字段
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
|
||||
// 累计 ROI 相关字段
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日累计 ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
|
||||
// 涨粉相关字段
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
|
||||
// 直播预约相关字段
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
|
||||
// 直播观看相关字段
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
|
||||
// 直播间商品相关字段
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
|
||||
// 3 日累计相关字段
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3 日累计订单数"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日累计 ROI"`
|
||||
|
||||
// 7 日间接订单相关字段
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额相关字段
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本相关字段
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
|
||||
// 智能优惠券相关字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝 GMV 相关字段
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
|
||||
// 粉丝 ROI 相关字段
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
|
||||
// 新客 GMV 相关字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
|
||||
// 新客订单数相关字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
|
||||
// 新客复购率相关字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
|
||||
// 新客 ROI 相关字段
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
|
||||
// 制卡订单相关字段
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
|
||||
// 电话卡激活相关字段
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
|
||||
// 制卡订单率相关字段
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
|
||||
// 电话卡激活率相关字段
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 直播观看相关字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
|
||||
// 报告日期字段
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
|
||||
// 广告计划相关字段
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
|
||||
// 广告单元相关字段
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
|
||||
// 广告创意相关字段
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
|
||||
// 新增字段
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// CreativeReportSumCol 广告效果指标表字段定义
|
||||
type CreativeReportSumCol struct {
|
||||
beans.SQLBaseCol
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemClickCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T3Gmv string
|
||||
T3OrderCnt string
|
||||
T3Roi string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
CidActualRoiAfterSubsidy string
|
||||
CidCouponAmount string
|
||||
CidCouponCallbackPaidRefundAmount string
|
||||
CidVoucherCost string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *CreativeReportSum) TableName() string {
|
||||
return "creative_report_sum"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *CreativeReportSum) GetCols() *CreativeReportSumCol {
|
||||
return &CreativeReportSumCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemClickCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T3Gmv: "t3_gmv",
|
||||
T3OrderCnt: "t3_order_cnt",
|
||||
T3Roi: "t3_roi",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
CidActualRoiAfterSubsidy: "cid_actual_roi_after_subsidy",
|
||||
CidCouponAmount: "cid_coupon_amount",
|
||||
CidCouponCallbackPaidRefundAmount: "cid_coupon_callback_paid_refund_amount",
|
||||
CidVoucherCost: "cid_voucher_cost",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,576 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// MaterialReport 素材报表数据实体
|
||||
type MaterialReport struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
CreatedBy *string `orm:"created_by" json:"createdBy" description:"创建人"`
|
||||
UpdatedBy *string `orm:"updated_by" json:"updatedBy" description:"更新人"`
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日订单支付金额"`
|
||||
CreativeMaterialType *string `orm:"creative_material_type" json:"creativeMaterialType" description:"创意素材类型"`
|
||||
LiveName *string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId *string `orm:"author_id" json:"authorId" description:"作者 ID"`
|
||||
PicUrl *string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName *string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId *string `orm:"pic_id" json:"picId" description:"图片 ID"`
|
||||
CoverUrl *string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 ID"`
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"商品订单转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"商品卡点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"商家涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"商家涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"当日净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"当日净成交 GMV"`
|
||||
PhotoName *string `orm:"photo_name" json:"photoName" description:"照片名称"`
|
||||
PhotoIdStr *string `orm:"photo_id_str" json:"photoIdStr" description:"照片 ID 字符串"`
|
||||
PhotoId *string `orm:"photo_id" json:"photoId" description:"照片 ID"`
|
||||
ModPriceSegment *string `orm:"mod_price_segment" json:"modPriceSegment" description:"价格区间"`
|
||||
AgeSegment *string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province *string `orm:"province" json:"province" description:"省份"`
|
||||
Gender *string `orm:"gender" json:"gender" description:"性别"`
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"广告照片播放 5 秒比率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"广告照片播放 3 秒比率"`
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"提交订单 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"提交订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"事件订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"事件订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"事件订单支付 ROI"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"事件 APP 调用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"事件加购数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化数量成本"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"广告有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"广告商品点击数"`
|
||||
MerchantProductId *string `orm:"merchant_product_id" json:"merchantProductId" description:"商家商品 ID"`
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"总花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"广告展示数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"千次展示成本"`
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"照片点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"照片点击率"`
|
||||
Click *int64 `orm:"click" json:"click" description:"点击数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"操作栏点击数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"操作栏点击成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"ESP 点击率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"操作比率"`
|
||||
AdItemCount *int64 `orm:"ad_item_click_count" json:"adItemCount" description:"广告商品点击次数"`
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"ESP 直播播放秒数"`
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"播放 3 秒数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"播放 5 秒数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"播放结束数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"完播率"`
|
||||
Share *int64 `orm:"share" json:"share" description:"分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"商品负反馈数"`
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播分享数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播打赏数"`
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本 ESP"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"GMV"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日 ROI"`
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"支付订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"订单比率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"当日订单比率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日订单数"`
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"商家推荐粉丝数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日留存率"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日留存率"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日留存率"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日留存率"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日留存比率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日留存比率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日留存比率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日留存比率"`
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"预约成本"`
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"标准直播开始数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"广告直播播放数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"广告直播播放成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观众成本"`
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播事件商品浏览数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接吸引平台新买家数"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日吸引平台总买家数"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接吸引商家新买家数"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日吸引商家总买家数"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日 GMV"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3 日订单数"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日 ROI"`
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"粉丝当日人均 GMV"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"粉丝 3 日人均 GMV"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"粉丝 7 日人均 GMV"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"粉丝 15 日人均 GMV"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"粉丝 30 日人均 GMV"`
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"推荐粉丝成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"白盒直接订单支付金额"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"白盒直接订单数"`
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"粉丝当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"粉丝次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"粉丝 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"粉丝 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"粉丝 30 日 GMV"`
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"粉丝当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"粉丝次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"粉丝 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"粉丝 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"粉丝 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日店铺新客订单支付金额"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"次日店铺新客订单支付金额"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"3 日店铺新客订单支付金额"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"7 日店铺新客订单支付金额"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"15 日店铺新客订单支付金额"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"30 日店铺新客订单支付金额"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日店铺新客订单数"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"次日店铺新客订单数"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"3 日店铺新客订单数"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"7 日店铺新客订单数"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"15 日店铺新客订单数"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"30 日店铺新客订单数"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"次日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"当日店铺新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"次日店铺新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"3 日店铺新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"7 日店铺新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"15 日店铺新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"30 日店铺新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"创建卡片订单数"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"转发 TS 创建卡片订单数"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"创建卡片订单成本"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"转发 TS 创建卡片订单成本"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"激活卡片订单数"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"转发 TS 激活卡片订单数"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"激活卡片订单成本"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"转发 TS 激活卡片订单成本"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"创建卡片订单比率"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"转发 TS 创建卡片订单比率"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"激活卡片订单比率"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"转发 TS 激活卡片订单比率"`
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"直播播放数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"商品入口点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"展示数"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"报告日期(格式:YYYY-MM-DD)"`
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName *string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName *string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName *string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
}
|
||||
|
||||
// MaterialReportCol 素材报表数据表字段定义
|
||||
type MaterialReportCol struct {
|
||||
beans.SQLBaseCol
|
||||
CreatedBy string
|
||||
UpdatedBy string
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T3Gmv string
|
||||
T3OrderCnt string
|
||||
T3Roi string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *MaterialReport) TableName() string {
|
||||
return "material_report"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *MaterialReport) GetCols() *MaterialReportCol {
|
||||
return &MaterialReportCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
CreatedBy: "created_by",
|
||||
UpdatedBy: "updated_by",
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T3Gmv: "t3_gmv",
|
||||
T3OrderCnt: "t3_order_cnt",
|
||||
T3Roi: "t3_roi",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,578 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// PopulationReport 人群报表实体
|
||||
type PopulationReport struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 基础信息字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间"`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"性别"`
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
|
||||
// 广告结构字段
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
|
||||
// 播放率相关字段
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
|
||||
// 订单相关字段
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
|
||||
// 封面相关字段
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
|
||||
// 点击相关字段
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
|
||||
// 直播时长字段
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
|
||||
// 播放数据字段
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
|
||||
// 互动数据字段
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
|
||||
// 直播互动字段
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
|
||||
// 播放效果字段
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
|
||||
// 转化字段
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接 GMV"`
|
||||
|
||||
// GMV 时间序列字段
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
|
||||
// ROI 时间序列字段
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计 ROI"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日累计 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日累计 ROI"`
|
||||
|
||||
// 订单相关字段
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
|
||||
// 粉丝相关字段
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
|
||||
// 直播预约字段
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
|
||||
// 直播观看字段
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
|
||||
// 商品点击字段
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
|
||||
// 新客相关字段
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
|
||||
// 间接订单字段
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
|
||||
// 粉丝人均销售额字段
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
|
||||
// 涨粉成本字段
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
|
||||
// 智能优惠券字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
|
||||
// 粉丝 GMV 字段
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
|
||||
// 粉丝 ROI 字段
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
|
||||
// 新客 GMV 字段
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
|
||||
// 新客订单量字段
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
|
||||
// 新客复购率字段
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
|
||||
// 新客 ROI 字段
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
|
||||
// 电话卡相关字段
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
}
|
||||
|
||||
// PopulationReportCol 人群报表字段定义
|
||||
type PopulationReportCol struct {
|
||||
beans.SQLBaseCol
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
ModPriceSegment string
|
||||
AgeSegment string
|
||||
Province string
|
||||
Gender string
|
||||
MerchantProductId string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
AdPhotoPlayedFiveRatio string
|
||||
AdPhotoPlayedThreeRatio string
|
||||
OrderSubmitRoi string
|
||||
OrderSubmitAmt string
|
||||
EventOrderSubmitCost string
|
||||
EventOrderSubmit string
|
||||
EventOrderPaidRoi string
|
||||
EventAppInvoked string
|
||||
EventAddShoppingCart string
|
||||
ConversionNumCost string
|
||||
AdEffectivePlayNum string
|
||||
AdItemClick string
|
||||
CostTotal string
|
||||
AdShow string
|
||||
AdShow1kCost string
|
||||
Impression string
|
||||
PhotoClick string
|
||||
PhotoClickRatio string
|
||||
Click string
|
||||
ActionbarClick string
|
||||
ActionbarClickCost string
|
||||
EspClickRatio string
|
||||
ActionRatio string
|
||||
AdItemClickCount string
|
||||
EspLivePlayedSeconds string
|
||||
PlayedThreeSeconds string
|
||||
Play3sRatio string
|
||||
PlayedFiveSeconds string
|
||||
Play5sRatio string
|
||||
PlayedEnd string
|
||||
PlayEndRatio string
|
||||
Share string
|
||||
Comment string
|
||||
Likes string
|
||||
Report string
|
||||
Block string
|
||||
ItemNegative string
|
||||
LiveShare string
|
||||
LiveComment string
|
||||
LiveReward string
|
||||
EffectivePlayCount string
|
||||
EffectivePlayRatio string
|
||||
ConversionNum string
|
||||
ConversionCostEsp string
|
||||
Roi string
|
||||
Gmv string
|
||||
T0Gmv string
|
||||
T1Gmv string
|
||||
T3Gmv string
|
||||
T7Gmv string
|
||||
T15Gmv string
|
||||
T30Gmv string
|
||||
T0Roi string
|
||||
T1Roi string
|
||||
T3Roi string
|
||||
T7Roi string
|
||||
T15Roi string
|
||||
T30Roi string
|
||||
PaiedOrder string
|
||||
OrderRatio string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
T0OrderCntRatio string
|
||||
T1OrderCnt string
|
||||
T7OrderCnt string
|
||||
T15OrderCnt string
|
||||
T30OrderCnt string
|
||||
MerchantRecoFans string
|
||||
T1Retention string
|
||||
T7Retention string
|
||||
T15Retention string
|
||||
T30Retention string
|
||||
T1RetentionRatio string
|
||||
T7RetentionRatio string
|
||||
T15RetentionRatio string
|
||||
T30RetentionRatio string
|
||||
ReservationSuccess string
|
||||
ReservationCost string
|
||||
StandardLivePlayedStarted string
|
||||
AdLivePlayCnt string
|
||||
AdLivePlayCntCost string
|
||||
LiveAudienceCost string
|
||||
LiveEventGoodsView string
|
||||
GoodsClickRatio string
|
||||
DirectAttrPlatNewBuyerCnt string
|
||||
T30AttrPlatTotalBuyerCnt string
|
||||
DirectAttrSellerNewBuyerCnt string
|
||||
T30AttrSellerTotalBuyerCnt string
|
||||
T7IndirectOrderAmt string
|
||||
T7IndirectOrderCnt string
|
||||
FansT0GmvPerFans string
|
||||
FansT3GmvPerFans string
|
||||
FansT7GmvPerFans string
|
||||
FansT15GmvPerFans string
|
||||
FansT30GmvPerFans string
|
||||
RecoFansCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
T0ShopNewBuyerOrderPaymentAmt string
|
||||
T1ShopNewBuyerOrderPaymentAmt string
|
||||
T3ShopNewBuyerOrderPaymentAmt string
|
||||
T7ShopNewBuyerOrderPaymentAmt string
|
||||
T15ShopNewBuyerOrderPaymentAmt string
|
||||
T30ShopNewBuyerOrderPaymentAmt string
|
||||
T0ShopNewBuyerOrderCnt string
|
||||
T1ShopNewBuyerOrderCnt string
|
||||
T3ShopNewBuyerOrderCnt string
|
||||
T7ShopNewBuyerOrderCnt string
|
||||
T15ShopNewBuyerOrderCnt string
|
||||
T30ShopNewBuyerOrderCnt string
|
||||
T1NewBuyerRepurchaseRatio string
|
||||
T3NewBuyerRepurchaseRatio string
|
||||
T7NewBuyerRepurchaseRatio string
|
||||
T15NewBuyerRepurchaseRatio string
|
||||
T30NewBuyerRepurchaseRatio string
|
||||
T0ShopNewBuyerRoi string
|
||||
T1ShopNewBuyerRoi string
|
||||
T3ShopNewBuyerRoi string
|
||||
T7ShopNewBuyerRoi string
|
||||
T15ShopNewBuyerRoi string
|
||||
T30ShopNewBuyerRoi string
|
||||
CreateCardOrderCnt string
|
||||
ForwardTsCreateCardOrderCnt string
|
||||
CreateCardOrderCost string
|
||||
ForwardTsCreateCardOrderCost string
|
||||
ActivateCardOrderCnt string
|
||||
ForwardTsActivateCardOrderCnt string
|
||||
ActivateCardOrderCost string
|
||||
ForwardTsActivateCardOrderCost string
|
||||
CreateCardOrderRatio string
|
||||
ForwardTsCreateCardOrderRatio string
|
||||
ActivateCardOrderCntRatio string
|
||||
ForwardTsActivateCardOrderRatio string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *PopulationReport) TableName() string {
|
||||
return "population_report"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *PopulationReport) GetCols() *PopulationReportCol {
|
||||
return &PopulationReportCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
ModPriceSegment: "mod_price_segment",
|
||||
AgeSegment: "age_segment",
|
||||
Province: "province",
|
||||
Gender: "gender",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
AdPhotoPlayedFiveRatio: "ad_photo_played_five_ratio",
|
||||
AdPhotoPlayedThreeRatio: "ad_photo_played_three_ratio",
|
||||
OrderSubmitRoi: "order_submit_roi",
|
||||
OrderSubmitAmt: "order_submit_amt",
|
||||
EventOrderSubmitCost: "event_order_submit_cost",
|
||||
EventOrderSubmit: "event_order_submit",
|
||||
EventOrderPaidRoi: "event_order_paid_roi",
|
||||
EventAppInvoked: "event_app_invoked",
|
||||
EventAddShoppingCart: "event_add_shopping_cart",
|
||||
ConversionNumCost: "conversion_num_cost",
|
||||
AdEffectivePlayNum: "ad_effective_play_num",
|
||||
AdItemClick: "ad_item_click",
|
||||
CostTotal: "cost_total",
|
||||
AdShow: "ad_show",
|
||||
AdShow1kCost: "ad_show1k_cost",
|
||||
Impression: "impression",
|
||||
PhotoClick: "photo_click",
|
||||
PhotoClickRatio: "photo_click_ratio",
|
||||
Click: "click",
|
||||
ActionbarClick: "actionbar_click",
|
||||
ActionbarClickCost: "actionbar_click_cost",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
ActionRatio: "action_ratio",
|
||||
AdItemClickCount: "ad_item_click_count",
|
||||
EspLivePlayedSeconds: "esp_live_played_seconds",
|
||||
PlayedThreeSeconds: "played_three_seconds",
|
||||
Play3sRatio: "play3s_ratio",
|
||||
PlayedFiveSeconds: "played_five_seconds",
|
||||
Play5sRatio: "play5s_ratio",
|
||||
PlayedEnd: "played_end",
|
||||
PlayEndRatio: "play_end_ratio",
|
||||
Share: "share",
|
||||
Comment: "comment",
|
||||
Likes: "likes",
|
||||
Report: "report",
|
||||
Block: "block",
|
||||
ItemNegative: "item_negative",
|
||||
LiveShare: "live_share",
|
||||
LiveComment: "live_comment",
|
||||
LiveReward: "live_reward",
|
||||
EffectivePlayCount: "effective_play_count",
|
||||
EffectivePlayRatio: "effective_play_ratio",
|
||||
ConversionNum: "conversion_num",
|
||||
ConversionCostEsp: "conversion_cost_esp",
|
||||
Roi: "roi",
|
||||
Gmv: "gmv",
|
||||
T0Gmv: "t0_gmv",
|
||||
T1Gmv: "t1_gmv",
|
||||
T3Gmv: "t3_gmv",
|
||||
T7Gmv: "t7_gmv",
|
||||
T15Gmv: "t15_gmv",
|
||||
T30Gmv: "t30_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T1Roi: "t1_roi",
|
||||
T3Roi: "t3_roi",
|
||||
T7Roi: "t7_roi",
|
||||
T15Roi: "t15_roi",
|
||||
T30Roi: "t30_roi",
|
||||
PaiedOrder: "paied_order",
|
||||
OrderRatio: "order_ratio",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
T0OrderCntRatio: "t0_order_cnt_ratio",
|
||||
T1OrderCnt: "t1_order_cnt",
|
||||
T7OrderCnt: "t7_order_cnt",
|
||||
T15OrderCnt: "t15_order_cnt",
|
||||
T30OrderCnt: "t30_order_cnt",
|
||||
MerchantRecoFans: "merchant_reco_fans",
|
||||
T1Retention: "t1_retention",
|
||||
T7Retention: "t7_retention",
|
||||
T15Retention: "t15_retention",
|
||||
T30Retention: "t30_retention",
|
||||
T1RetentionRatio: "t1_retention_ratio",
|
||||
T7RetentionRatio: "t7_retention_ratio",
|
||||
T15RetentionRatio: "t15_retention_ratio",
|
||||
T30RetentionRatio: "t30_retention_ratio",
|
||||
ReservationSuccess: "reservation_success",
|
||||
ReservationCost: "reservation_cost",
|
||||
StandardLivePlayedStarted: "standard_live_played_started",
|
||||
AdLivePlayCnt: "ad_live_play_cnt",
|
||||
AdLivePlayCntCost: "ad_live_play_cnt_cost",
|
||||
LiveAudienceCost: "live_audience_cost",
|
||||
LiveEventGoodsView: "live_event_goods_view",
|
||||
GoodsClickRatio: "goods_click_ratio",
|
||||
DirectAttrPlatNewBuyerCnt: "direct_attr_plat_new_buyer_cnt",
|
||||
T30AttrPlatTotalBuyerCnt: "t30_attr_plat_total_buyer_cnt",
|
||||
DirectAttrSellerNewBuyerCnt: "direct_attr_seller_new_buyer_cnt",
|
||||
T30AttrSellerTotalBuyerCnt: "t30_attr_seller_total_buyer_cnt",
|
||||
T7IndirectOrderAmt: "t7_indirect_order_amt",
|
||||
T7IndirectOrderCnt: "t7_indirect_order_cnt",
|
||||
FansT0GmvPerFans: "fans_t0_gmv_per_fans",
|
||||
FansT3GmvPerFans: "fans_t3_gmv_per_fans",
|
||||
FansT7GmvPerFans: "fans_t7_gmv_per_fans",
|
||||
FansT15GmvPerFans: "fans_t15_gmv_per_fans",
|
||||
FansT30GmvPerFans: "fans_t30_gmv_per_fans",
|
||||
RecoFansCost: "reco_fans_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
T0ShopNewBuyerOrderPaymentAmt: "t0_shop_new_buyer_order_payment_amt",
|
||||
T1ShopNewBuyerOrderPaymentAmt: "t1_shop_new_buyer_order_payment_amt",
|
||||
T3ShopNewBuyerOrderPaymentAmt: "t3_shop_new_buyer_order_payment_amt",
|
||||
T7ShopNewBuyerOrderPaymentAmt: "t7_shop_new_buyer_order_payment_amt",
|
||||
T15ShopNewBuyerOrderPaymentAmt: "t15_shop_new_buyer_order_payment_amt",
|
||||
T30ShopNewBuyerOrderPaymentAmt: "t30_shop_new_buyer_order_payment_amt",
|
||||
T0ShopNewBuyerOrderCnt: "t0_shop_new_buyer_order_cnt",
|
||||
T1ShopNewBuyerOrderCnt: "t1_shop_new_buyer_order_cnt",
|
||||
T3ShopNewBuyerOrderCnt: "t3_shop_new_buyer_order_cnt",
|
||||
T7ShopNewBuyerOrderCnt: "t7_shop_new_buyer_order_cnt",
|
||||
T15ShopNewBuyerOrderCnt: "t15_shop_new_buyer_order_cnt",
|
||||
T30ShopNewBuyerOrderCnt: "t30_shop_new_buyer_order_cnt",
|
||||
T1NewBuyerRepurchaseRatio: "t1_new_buyer_repurchase_ratio",
|
||||
T3NewBuyerRepurchaseRatio: "t3_new_buyer_repurchase_ratio",
|
||||
T7NewBuyerRepurchaseRatio: "t7_new_buyer_repurchase_ratio",
|
||||
T15NewBuyerRepurchaseRatio: "t15_new_buyer_repurchase_ratio",
|
||||
T30NewBuyerRepurchaseRatio: "t30_new_buyer_repurchase_ratio",
|
||||
T0ShopNewBuyerRoi: "t0_shop_new_buyer_roi",
|
||||
T1ShopNewBuyerRoi: "t1_shop_new_buyer_roi",
|
||||
T3ShopNewBuyerRoi: "t3_shop_new_buyer_roi",
|
||||
T7ShopNewBuyerRoi: "t7_shop_new_buyer_roi",
|
||||
T15ShopNewBuyerRoi: "t15_shop_new_buyer_roi",
|
||||
T30ShopNewBuyerRoi: "t30_shop_new_buyer_roi",
|
||||
CreateCardOrderCnt: "create_card_order_cnt",
|
||||
ForwardTsCreateCardOrderCnt: "forward_ts_create_card_order_cnt",
|
||||
CreateCardOrderCost: "create_card_order_cost",
|
||||
ForwardTsCreateCardOrderCost: "forward_ts_create_card_order_cost",
|
||||
ActivateCardOrderCnt: "activate_card_order_cnt",
|
||||
ForwardTsActivateCardOrderCnt: "forward_ts_activate_card_order_cnt",
|
||||
ActivateCardOrderCost: "activate_card_order_cost",
|
||||
ForwardTsActivateCardOrderCost: "forward_ts_activate_card_order_cost",
|
||||
CreateCardOrderRatio: "create_card_order_ratio",
|
||||
ForwardTsCreateCardOrderRatio: "forward_ts_create_card_order_ratio",
|
||||
ActivateCardOrderCntRatio: "activate_card_order_cnt_ratio",
|
||||
ForwardTsActivateCardOrderRatio: "forward_ts_activate_card_order_ratio",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// StorewideReportDetail 广告效果指标表实体
|
||||
type StorewideReportDetail struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 订单金额相关字段
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
|
||||
// 素材类型字段
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
|
||||
// 直播相关字段
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
|
||||
// 图片相关字段
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
|
||||
// 封面相关字段
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
|
||||
// 商品卡点击相关字段
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
|
||||
// 净成交相关字段
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
|
||||
// 视频相关字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
|
||||
// 行为相关字段
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
|
||||
// 商品相关字段
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
|
||||
// 花费相关字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
|
||||
// 行为率字段
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
|
||||
// 当日 GMV 相关字段
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
|
||||
// 当日订单相关字段
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
|
||||
// 智能优惠券相关字段
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
|
||||
// 直播观看相关字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
|
||||
// 商品入口点击相关字段
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
|
||||
// 曝光相关字段
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
|
||||
// 报告日期字段
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
|
||||
// 广告计划相关字段
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
|
||||
// 广告单元相关字段
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
|
||||
// 广告创意相关字段
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
}
|
||||
|
||||
// StorewideReportDetailCol 广告效果指标表表字段定义
|
||||
type StorewideReportDetailCol struct {
|
||||
beans.SQLBaseCol
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemCardClkCnt string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
EspClickRatio string
|
||||
T0Gmv string
|
||||
T0Roi string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *StorewideReportDetail) TableName() string {
|
||||
return "storewide_report_detail"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *StorewideReportDetail) GetCols() *StorewideReportDetailCol {
|
||||
return &StorewideReportDetailCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
T0Gmv: "t0_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// StorewideReportSum 广告效果指标表实体
|
||||
type StorewideReportSum struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 新增字段
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
|
||||
// 原有字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
}
|
||||
|
||||
// StorewideReportSumCol 广告效果指标表表字段定义
|
||||
type StorewideReportSumCol struct {
|
||||
beans.SQLBaseCol
|
||||
T0OrderPaymentAmt string
|
||||
CreativeMaterialType string
|
||||
LiveName string
|
||||
AuthorId string
|
||||
PicUrl string
|
||||
PicName string
|
||||
PicId string
|
||||
CoverUrl string
|
||||
CoverId string
|
||||
ItemCardClkCnt string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoIdStr string
|
||||
PhotoId string
|
||||
AdItemClick string
|
||||
MerchantProductId string
|
||||
CostTotal string
|
||||
EspClickRatio string
|
||||
T0Gmv string
|
||||
T0Roi string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
QcpxWhiteboxDirectOrderPaymentAmt string
|
||||
QcpxWhiteboxDirectOrderCnt string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
CampaignId string
|
||||
CampaignName string
|
||||
UnitId string
|
||||
UnitName string
|
||||
CreativeId string
|
||||
CreativeName string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *StorewideReportSum) TableName() string {
|
||||
return "storewide_report_sum"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *StorewideReportSum) GetCols() *StorewideReportSumCol {
|
||||
return &StorewideReportSumCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
T0OrderPaymentAmt: "t0_order_payment_amt",
|
||||
CreativeMaterialType: "creative_material_type",
|
||||
LiveName: "live_name",
|
||||
AuthorId: "author_id",
|
||||
PicUrl: "pic_url",
|
||||
PicName: "pic_name",
|
||||
PicId: "pic_id",
|
||||
CoverUrl: "cover_url",
|
||||
CoverId: "cover_id",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoIdStr: "photo_id_str",
|
||||
PhotoId: "photo_id",
|
||||
AdItemClick: "ad_item_click",
|
||||
MerchantProductId: "merchant_product_id",
|
||||
CostTotal: "cost_total",
|
||||
EspClickRatio: "esp_click_ratio",
|
||||
T0Gmv: "t0_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: "qcpx_whitebox_direct_order_payment_amt",
|
||||
QcpxWhiteboxDirectOrderCnt: "qcpx_whitebox_direct_order_cnt",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
CampaignId: "campaign_id",
|
||||
CampaignName: "campaign_name",
|
||||
UnitId: "unit_id",
|
||||
UnitName: "unit_name",
|
||||
CreativeId: "creative_id",
|
||||
CreativeName: "creative_name",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// TaskReport 调控任务数据实体
|
||||
type TaskReport struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 转化率相关字段
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
|
||||
// 视频信息字段
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
|
||||
// 核心指标字段
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
|
||||
// 粉丝 GMV 字段
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
|
||||
// 粉丝 ROI 字段
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
|
||||
// 全站数据字段
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
|
||||
// 时间字段
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间(格式:YYYY-MM-DD)"`
|
||||
}
|
||||
|
||||
// TaskReportCol 调控任务数据表字段定义
|
||||
type TaskReportCol struct {
|
||||
beans.SQLBaseCol
|
||||
ItemOrderConversionRatio string
|
||||
ItemCardClickRatio string
|
||||
ItemCardClkCnt string
|
||||
LivePlayCntCost string
|
||||
AdMerchantFollowCost string
|
||||
AdMerchantFollow string
|
||||
NetT0OrderCnt string
|
||||
NetT0Roi string
|
||||
NetT0Gmv string
|
||||
PhotoName string
|
||||
PhotoId string
|
||||
CostTotal string
|
||||
T0Gmv string
|
||||
T0Roi string
|
||||
T0OrderCnt string
|
||||
T0OrderCntCost string
|
||||
FansT0Gmv string
|
||||
FansT1Gmv string
|
||||
FansT7Gmv string
|
||||
FansT15Gmv string
|
||||
FansT30Gmv string
|
||||
FansT0Roi string
|
||||
FansT1Roi string
|
||||
FansT7Roi string
|
||||
FansT15Roi string
|
||||
FansT30Roi string
|
||||
LivePlayCnt string
|
||||
ItemEntranceClkCnt string
|
||||
ShowCnt string
|
||||
ReportDateStr string
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *TaskReport) TableName() string {
|
||||
return "task_report"
|
||||
}
|
||||
|
||||
// GetCols 获取所有字段名
|
||||
func (e *TaskReport) GetCols() *TaskReportCol {
|
||||
return &TaskReportCol{
|
||||
SQLBaseCol: beans.SQLBaseCol{
|
||||
Id: "id",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedAt: "updated_at",
|
||||
},
|
||||
ItemOrderConversionRatio: "item_order_conversion_ratio",
|
||||
ItemCardClickRatio: "item_card_click_ratio",
|
||||
ItemCardClkCnt: "item_card_clk_cnt",
|
||||
LivePlayCntCost: "live_play_cnt_cost",
|
||||
AdMerchantFollowCost: "ad_merchant_follow_cost",
|
||||
AdMerchantFollow: "ad_merchant_follow",
|
||||
NetT0OrderCnt: "net_t0_order_cnt",
|
||||
NetT0Roi: "net_t0_roi",
|
||||
NetT0Gmv: "net_t0_gmv",
|
||||
PhotoName: "photo_name",
|
||||
PhotoId: "photo_id",
|
||||
CostTotal: "cost_total",
|
||||
T0Gmv: "t0_gmv",
|
||||
T0Roi: "t0_roi",
|
||||
T0OrderCnt: "t0_order_cnt",
|
||||
T0OrderCntCost: "t0_order_cnt_cost",
|
||||
FansT0Gmv: "fans_t0_gmv",
|
||||
FansT1Gmv: "fans_t1_gmv",
|
||||
FansT7Gmv: "fans_t7_gmv",
|
||||
FansT15Gmv: "fans_t15_gmv",
|
||||
FansT30Gmv: "fans_t30_gmv",
|
||||
FansT0Roi: "fans_t0_roi",
|
||||
FansT1Roi: "fans_t1_roi",
|
||||
FansT7Roi: "fans_t7_roi",
|
||||
FansT15Roi: "fans_t15_roi",
|
||||
FansT30Roi: "fans_t30_roi",
|
||||
LivePlayCnt: "live_play_cnt",
|
||||
ItemEntranceClkCnt: "item_entrance_clk_cnt",
|
||||
ShowCnt: "show_cnt",
|
||||
ReportDateStr: "report_date_str",
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,198 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// UnitReportDetail 广告效果指标详情表实体
|
||||
type UnitReportDetail struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间,"0-500", "501-1000", "1001-1500", "1501-2000", "2001-2500", "2501-3000", "3001-3500", "3501-4000", "4001-4500", "4501-5000", "5001-5500", "5501+", "未知""`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"0-17", "18-23", "24-30", "31-40", "41-49", "50+","未知""`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"男,女,未知三种类型"`
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接 GMV"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3 日累计订单数"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *UnitReportDetail) TableName() string {
|
||||
return "unit_report_detail"
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
package copydata
|
||||
|
||||
import "gitea.com/red-future/common/beans"
|
||||
|
||||
// UnitReportSum 广告效果指标表实体
|
||||
type UnitReportSum struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
|
||||
// 基础字段
|
||||
T0OrderPaymentAmt *float64 `orm:"t0_order_payment_amt" json:"t0OrderPaymentAmt" description:"当日总成交订单金额"`
|
||||
CreativeMaterialType string `orm:"creative_material_type" json:"creativeMaterialType" description:"视频素材类型(视频:HORIZONTAL_SCREEN, VERTICAL_SCREEN, UNKNOWN_TYPE;图集:ATLAS;长图:ATLAS_VERTICAL)"`
|
||||
LiveName string `orm:"live_name" json:"liveName" description:"直播间名称"`
|
||||
AuthorId string `orm:"author_id" json:"authorId" description:"直播用户快手 Id"`
|
||||
PicUrl string `orm:"pic_url" json:"picUrl" description:"图片 URL"`
|
||||
PicName string `orm:"pic_name" json:"picName" description:"图片名称"`
|
||||
PicId string `orm:"pic_id" json:"picId" description:"图片 Id"`
|
||||
CoverUrl string `orm:"cover_url" json:"coverUrl" description:"封面 URL"`
|
||||
CoverId *int64 `orm:"cover_id" json:"coverId" description:"封面 Id"`
|
||||
ItemOrderConversionRatio *float64 `orm:"item_order_conversion_ratio" json:"itemOrderConversionRatio" description:"转化率"`
|
||||
ItemCardClickRatio *float64 `orm:"item_card_click_ratio" json:"itemCardClickRatio" description:"点击率"`
|
||||
ItemCardClkCnt *int64 `orm:"item_card_clk_cnt" json:"itemCardClkCnt" description:"商品卡点击数"`
|
||||
LivePlayCntCost *float64 `orm:"live_play_cnt_cost" json:"livePlayCntCost" description:"直播间观看成本"`
|
||||
AdMerchantFollowCost *float64 `orm:"ad_merchant_follow_cost" json:"adMerchantFollowCost" description:"涨粉成本"`
|
||||
AdMerchantFollow *int64 `orm:"ad_merchant_follow" json:"adMerchantFollow" description:"涨粉数"`
|
||||
NetT0OrderCnt *int64 `orm:"net_t0_order_cnt" json:"netT0OrderCnt" description:"当日累计净成交订单数"`
|
||||
NetT0Roi *float64 `orm:"net_t0_roi" json:"netT0Roi" description:"净成交 ROI"`
|
||||
NetT0Gmv *float64 `orm:"net_t0_gmv" json:"netT0Gmv" description:"净成交 GMV"`
|
||||
PhotoName string `orm:"photo_name" json:"photoName" description:"视频名称"`
|
||||
PhotoIdStr string `orm:"photo_id_str" json:"photoIdStr" description:"视频 id"`
|
||||
PhotoId string `orm:"photo_id" json:"photoId" description:"视频 id"`
|
||||
ModPriceSegment string `orm:"mod_price_segment" json:"modPriceSegment" description:"设备价格区间,"0-500", "501-1000", "1001-1500", "1501-2000", "2001-2500", "2501-3000", "3001-3500", "3501-4000", "4001-4500", "4501-5000", "5001-5500", "5501+", "未知""`
|
||||
AgeSegment string `orm:"age_segment" json:"ageSegment" description:"年龄段"0-17", "18-23", "24-30", "31-40", "41-49", "50+","未知""`
|
||||
Province string `orm:"province" json:"province" description:"省份名称"`
|
||||
Gender string `orm:"gender" json:"gender" description:"男,女,未知三种类型"`
|
||||
AdPhotoPlayedFiveRatio *float64 `orm:"ad_photo_played_five_ratio" json:"adPhotoPlayedFiveRatio" description:"作品 5 秒播放率"`
|
||||
AdPhotoPlayedThreeRatio *float64 `orm:"ad_photo_played_three_ratio" json:"adPhotoPlayedThreeRatio" description:"作品 3 秒播放率"`
|
||||
OrderSubmitRoi *float64 `orm:"order_submit_roi" json:"orderSubmitRoi" description:"订单提交 ROI"`
|
||||
OrderSubmitAmt *int64 `orm:"order_submit_amt" json:"orderSubmitAmt" description:"外部订单金额"`
|
||||
EventOrderSubmitCost *float64 `orm:"event_order_submit_cost" json:"eventOrderSubmitCost" description:"订单提交成本"`
|
||||
EventOrderSubmit *int64 `orm:"event_order_submit" json:"eventOrderSubmit" description:"订单提交数"`
|
||||
EventOrderPaidRoi *float64 `orm:"event_order_paid_roi" json:"eventOrderPaidRoi" description:"订单支付率"`
|
||||
EventAppInvoked *int64 `orm:"event_app_invoked" json:"eventAppInvoked" description:"唤起应用数"`
|
||||
EventAddShoppingCart *int64 `orm:"event_add_shopping_cart" json:"eventAddShoppingCart" description:"添加购物车次数"`
|
||||
ConversionNumCost *float64 `orm:"conversion_num_cost" json:"conversionNumCost" description:"转化成本(回传时间)"`
|
||||
AdEffectivePlayNum *int64 `orm:"ad_effective_play_num" json:"adEffectivePlayNum" description:"有效播放数"`
|
||||
AdItemClick *int64 `orm:"ad_item_click" json:"adItemClick" description:"行为数"`
|
||||
MerchantProductId string `orm:"merchant_product_id" json:"merchantProductId" description:"商品 ID"`
|
||||
CostTotal *float64 `orm:"cost_total" json:"costTotal" description:"花费"`
|
||||
AdShow *int64 `orm:"ad_show" json:"adShow" description:"曝光数"`
|
||||
AdShow1kCost *float64 `orm:"ad_show1k_cost" json:"adShow1kCost" description:"平均千次广告曝光花费"`
|
||||
Impression *int64 `orm:"impression" json:"impression" description:"封面曝光数"`
|
||||
PhotoClick *int64 `orm:"photo_click" json:"photoClick" description:"封面点击数"`
|
||||
PhotoClickRatio *float64 `orm:"photo_click_ratio" json:"photoClickRatio" description:"封面点击率"`
|
||||
Click *int64 `orm:"click" json:"click" description:"素材曝光数"`
|
||||
ActionbarClick *int64 `orm:"actionbar_click" json:"actionbarClick" description:"行为数"`
|
||||
ActionbarClickCost *float64 `orm:"actionbar_click_cost" json:"actionbarClickCost" description:"行为成本"`
|
||||
EspClickRatio *float64 `orm:"esp_click_ratio" json:"espClickRatio" description:"行为率"`
|
||||
ActionRatio *float64 `orm:"action_ratio" json:"actionRatio" description:"素材点击率"`
|
||||
AdItemClickCount *int64 `orm:"ad_item_click_count" json:"adItemClickCount" description:"预约组件点击数"`
|
||||
EspLivePlayedSeconds *int64 `orm:"esp_live_played_seconds" json:"espLivePlayedSeconds" description:"直播平均观看时长"`
|
||||
PlayedThreeSeconds *int64 `orm:"played_three_seconds" json:"playedThreeSeconds" description:"作品 3 秒播放数"`
|
||||
Play3sRatio *float64 `orm:"play3s_ratio" json:"play3sRatio" description:"作品 3 秒播放率"`
|
||||
PlayedFiveSeconds *int64 `orm:"played_five_seconds" json:"playedFiveSeconds" description:"作品 5 秒播放数"`
|
||||
Play5sRatio *float64 `orm:"play5s_ratio" json:"play5sRatio" description:"作品 5 秒播放率"`
|
||||
PlayedEnd *int64 `orm:"played_end" json:"playedEnd" description:"作品完播数"`
|
||||
PlayEndRatio *float64 `orm:"play_end_ratio" json:"playEndRatio" description:"作品完播率"`
|
||||
Share *int64 `orm:"share" json:"share" description:"作品分享数"`
|
||||
Comment *int64 `orm:"comment" json:"comment" description:"作品评论数"`
|
||||
Likes *int64 `orm:"likes" json:"likes" description:"作品点赞数"`
|
||||
Report *int64 `orm:"report" json:"report" description:"作品举报数"`
|
||||
Block *int64 `orm:"block" json:"block" description:"作品拉黑数"`
|
||||
ItemNegative *int64 `orm:"item_negative" json:"itemNegative" description:"详情页减少此类作品数"`
|
||||
LiveShare *int64 `orm:"live_share" json:"liveShare" description:"直播送礼数"`
|
||||
LiveComment *int64 `orm:"live_comment" json:"liveComment" description:"直播评论数"`
|
||||
LiveReward *int64 `orm:"live_reward" json:"liveReward" description:"直播送礼数"`
|
||||
EffectivePlayCount *int64 `orm:"effective_play_count" json:"effectivePlayCount" description:"有效播放数"`
|
||||
EffectivePlayRatio *float64 `orm:"effective_play_ratio" json:"effectivePlayRatio" description:"有效播放率"`
|
||||
ConversionNum *int64 `orm:"conversion_num" json:"conversionNum" description:"转化数"`
|
||||
ConversionCostEsp *float64 `orm:"conversion_cost_esp" json:"conversionCostEsp" description:"转化成本"`
|
||||
Roi *float64 `orm:"roi" json:"roi" description:"直接 ROI"`
|
||||
Gmv *float64 `orm:"gmv" json:"gmv" description:"直接 GMV"`
|
||||
T0Gmv *float64 `orm:"t0_gmv" json:"t0Gmv" description:"当日累计 GMV"`
|
||||
T1Gmv *float64 `orm:"t1_gmv" json:"t1Gmv" description:"次日累计 GMV"`
|
||||
T7Gmv *float64 `orm:"t7_gmv" json:"t7Gmv" description:"7 日累计 GMV"`
|
||||
T15Gmv *float64 `orm:"t15_gmv" json:"t15Gmv" description:"15 日累计 GMV"`
|
||||
T30Gmv *float64 `orm:"t30_gmv" json:"t30Gmv" description:"30 日累计 GMV"`
|
||||
T0Roi *float64 `orm:"t0_roi" json:"t0Roi" description:"当日累计 ROI"`
|
||||
T1Roi *float64 `orm:"t1_roi" json:"t1Roi" description:"次日累计 ROI"`
|
||||
T7Roi *float64 `orm:"t7_roi" json:"t7Roi" description:"7 日累计 ROI"`
|
||||
T15Roi *float64 `orm:"t15_roi" json:"t15Roi" description:"15 日累计 ROI"`
|
||||
T30Roi *float64 `orm:"t30_roi" json:"t30Roi" description:"30 日累计 ROI"`
|
||||
PaiedOrder *int64 `orm:"paied_order" json:"paiedOrder" description:"直接订单数"`
|
||||
OrderRatio *float64 `orm:"order_ratio" json:"orderRatio" description:"直接下单率"`
|
||||
T0OrderCnt *int64 `orm:"t0_order_cnt" json:"t0OrderCnt" description:"当日累计订单数"`
|
||||
T0OrderCntCost *float64 `orm:"t0_order_cnt_cost" json:"t0OrderCntCost" description:"当日累计订单成本"`
|
||||
T0OrderCntRatio *float64 `orm:"t0_order_cnt_ratio" json:"t0OrderCntRatio" description:"累计订单下单率"`
|
||||
T1OrderCnt *int64 `orm:"t1_order_cnt" json:"t1OrderCnt" description:"次日累计订单数"`
|
||||
T7OrderCnt *int64 `orm:"t7_order_cnt" json:"t7OrderCnt" description:"7 日累计订单数"`
|
||||
T15OrderCnt *int64 `orm:"t15_order_cnt" json:"t15OrderCnt" description:"15 日累计订单数"`
|
||||
T30OrderCnt *int64 `orm:"t30_order_cnt" json:"t30OrderCnt" description:"30 日累计订单数"`
|
||||
MerchantRecoFans *int64 `orm:"merchant_reco_fans" json:"merchantRecoFans" description:"涨粉数"`
|
||||
T1Retention *float64 `orm:"t1_retention" json:"t1Retention" description:"次日涨粉留存数"`
|
||||
T7Retention *float64 `orm:"t7_retention" json:"t7Retention" description:"7 日涨粉留存数"`
|
||||
T15Retention *float64 `orm:"t15_retention" json:"t15Retention" description:"15 日涨粉留存数"`
|
||||
T30Retention *float64 `orm:"t30_retention" json:"t30Retention" description:"30 日涨粉留存数"`
|
||||
T1RetentionRatio *float64 `orm:"t1_retention_ratio" json:"t1RetentionRatio" description:"次日涨粉留存率"`
|
||||
T7RetentionRatio *float64 `orm:"t7_retention_ratio" json:"t7RetentionRatio" description:"7 日涨粉留存率"`
|
||||
T15RetentionRatio *float64 `orm:"t15_retention_ratio" json:"t15RetentionRatio" description:"15 日涨粉留存率"`
|
||||
T30RetentionRatio *float64 `orm:"t30_retention_ratio" json:"t30RetentionRatio" description:"30 日涨粉留存率"`
|
||||
ReservationSuccess *int64 `orm:"reservation_success" json:"reservationSuccess" description:"直播预约成功数"`
|
||||
ReservationCost *float64 `orm:"reservation_cost" json:"reservationCost" description:"直播预约成功成本"`
|
||||
StandardLivePlayedStarted *int64 `orm:"standard_live_played_started" json:"standardLivePlayedStarted" description:"直播观看数"`
|
||||
AdLivePlayCnt *int64 `orm:"ad_live_play_cnt" json:"adLivePlayCnt" description:"直播间人气数"`
|
||||
AdLivePlayCntCost *float64 `orm:"ad_live_play_cnt_cost" json:"adLivePlayCntCost" description:"直播间人气成本"`
|
||||
LiveAudienceCost *float64 `orm:"live_audience_cost" json:"liveAudienceCost" description:"直播观看成本"`
|
||||
LiveEventGoodsView *int64 `orm:"live_event_goods_view" json:"liveEventGoodsView" description:"直播间商品点击数"`
|
||||
GoodsClickRatio *float64 `orm:"goods_click_ratio" json:"goodsClickRatio" description:"直播间商品点击率"`
|
||||
DirectAttrPlatNewBuyerCnt *int64 `orm:"direct_attr_plat_new_buyer_cnt" json:"directAttrPlatNewBuyerCnt" description:"直接平台新客"`
|
||||
T30AttrPlatTotalBuyerCnt *int64 `orm:"t30_attr_plat_total_buyer_cnt" json:"t30AttrPlatTotalBuyerCnt" description:"30 日累计平台新客"`
|
||||
DirectAttrSellerNewBuyerCnt *int64 `orm:"direct_attr_seller_new_buyer_cnt" json:"directAttrSellerNewBuyerCnt" description:"直接店铺新客"`
|
||||
T30AttrSellerTotalBuyerCnt *int64 `orm:"t30_attr_seller_total_buyer_cnt" json:"t30AttrSellerTotalBuyerCnt" description:"30 日累计店铺新客"`
|
||||
T3Gmv *float64 `orm:"t3_gmv" json:"t3Gmv" description:"3 日累计 GMV"`
|
||||
T3OrderCnt *int64 `orm:"t3_order_cnt" json:"t3OrderCnt" description:"3 日累计订单数"`
|
||||
T3Roi *float64 `orm:"t3_roi" json:"t3Roi" description:"3 日累计 ROI"`
|
||||
T7IndirectOrderAmt *float64 `orm:"t7_indirect_order_amt" json:"t7IndirectOrderAmt" description:"7 日间接订单金额"`
|
||||
T7IndirectOrderCnt *int64 `orm:"t7_indirect_order_cnt" json:"t7IndirectOrderCnt" description:"7 日间接订单数"`
|
||||
FansT0GmvPerFans *float64 `orm:"fans_t0_gmv_per_fans" json:"fansT0GmvPerFans" description:"新增粉丝人均销售额"`
|
||||
FansT3GmvPerFans *float64 `orm:"fans_t3_gmv_per_fans" json:"fansT3GmvPerFans" description:"3 日新增粉丝人均销售额"`
|
||||
FansT7GmvPerFans *float64 `orm:"fans_t7_gmv_per_fans" json:"fansT7GmvPerFans" description:"7 日新增粉丝人均销售额"`
|
||||
FansT15GmvPerFans *float64 `orm:"fans_t15_gmv_per_fans" json:"fansT15GmvPerFans" description:"15 日新增粉丝人均销售额"`
|
||||
FansT30GmvPerFans *float64 `orm:"fans_t30_gmv_per_fans" json:"fansT30GmvPerFans" description:"30 日新增粉丝人均销售额"`
|
||||
RecoFansCost *float64 `orm:"reco_fans_cost" json:"recoFansCost" description:"涨粉成本"`
|
||||
QcpxWhiteboxDirectOrderPaymentAmt *float64 `orm:"qcpx_whitebox_direct_order_payment_amt" json:"qcpxWhiteboxDirectOrderPaymentAmt" description:"智能优惠券订单 GMV"`
|
||||
QcpxWhiteboxDirectOrderCnt *int64 `orm:"qcpx_whitebox_direct_order_cnt" json:"qcpxWhiteboxDirectOrderCnt" description:"智能优惠券订单数"`
|
||||
FansT0Gmv *float64 `orm:"fans_t0_gmv" json:"fansT0Gmv" description:"涨粉当日 GMV"`
|
||||
FansT1Gmv *float64 `orm:"fans_t1_gmv" json:"fansT1Gmv" description:"涨粉次日 GMV"`
|
||||
FansT7Gmv *float64 `orm:"fans_t7_gmv" json:"fansT7Gmv" description:"涨粉 7 日 GMV"`
|
||||
FansT15Gmv *float64 `orm:"fans_t15_gmv" json:"fansT15Gmv" description:"涨粉 15 日 GMV"`
|
||||
FansT30Gmv *float64 `orm:"fans_t30_gmv" json:"fansT30Gmv" description:"涨粉 30 日 GMV"`
|
||||
FansT0Roi *float64 `orm:"fans_t0_roi" json:"fansT0Roi" description:"涨粉当日 ROI"`
|
||||
FansT1Roi *float64 `orm:"fans_t1_roi" json:"fansT1Roi" description:"涨粉次日 ROI"`
|
||||
FansT7Roi *float64 `orm:"fans_t7_roi" json:"fansT7Roi" description:"涨粉 7 日 ROI"`
|
||||
FansT15Roi *float64 `orm:"fans_t15_roi" json:"fansT15Roi" description:"涨粉 15 日 ROI"`
|
||||
FansT30Roi *float64 `orm:"fans_t30_roi" json:"fansT30Roi" description:"涨粉 30 日 ROI"`
|
||||
T0ShopNewBuyerOrderPaymentAmt *float64 `orm:"t0_shop_new_buyer_order_payment_amt" json:"t0ShopNewBuyerOrderPaymentAmt" description:"当日新客 GMV"`
|
||||
T1ShopNewBuyerOrderPaymentAmt *float64 `orm:"t1_shop_new_buyer_order_payment_amt" json:"t1ShopNewBuyerOrderPaymentAmt" description:"投后 1 日新客 GMV"`
|
||||
T3ShopNewBuyerOrderPaymentAmt *float64 `orm:"t3_shop_new_buyer_order_payment_amt" json:"t3ShopNewBuyerOrderPaymentAmt" description:"投后 3 日新客 GMV"`
|
||||
T7ShopNewBuyerOrderPaymentAmt *float64 `orm:"t7_shop_new_buyer_order_payment_amt" json:"t7ShopNewBuyerOrderPaymentAmt" description:"投后 7 日新客 GMV"`
|
||||
T15ShopNewBuyerOrderPaymentAmt *float64 `orm:"t15_shop_new_buyer_order_payment_amt" json:"t15ShopNewBuyerOrderPaymentAmt" description:"投后 15 日新客 GMV"`
|
||||
T30ShopNewBuyerOrderPaymentAmt *float64 `orm:"t30_shop_new_buyer_order_payment_amt" json:"t30ShopNewBuyerOrderPaymentAmt" description:"投后 30 日新客 GMV"`
|
||||
T0ShopNewBuyerOrderCnt *int64 `orm:"t0_shop_new_buyer_order_cnt" json:"t0ShopNewBuyerOrderCnt" description:"当日新客成交订单量"`
|
||||
T1ShopNewBuyerOrderCnt *int64 `orm:"t1_shop_new_buyer_order_cnt" json:"t1ShopNewBuyerOrderCnt" description:"投后 1 日新客成交订单量"`
|
||||
T3ShopNewBuyerOrderCnt *int64 `orm:"t3_shop_new_buyer_order_cnt" json:"t3ShopNewBuyerOrderCnt" description:"投后 3 日新客成交订单量"`
|
||||
T7ShopNewBuyerOrderCnt *int64 `orm:"t7_shop_new_buyer_order_cnt" json:"t7ShopNewBuyerOrderCnt" description:"投后 7 日新客成交订单量"`
|
||||
T15ShopNewBuyerOrderCnt *int64 `orm:"t15_shop_new_buyer_order_cnt" json:"t15ShopNewBuyerOrderCnt" description:"投后 15 日新客成交订单量"`
|
||||
T30ShopNewBuyerOrderCnt *int64 `orm:"t30_shop_new_buyer_order_cnt" json:"t30ShopNewBuyerOrderCnt" description:"投后 30 日新客成交订单量"`
|
||||
T1NewBuyerRepurchaseRatio *float64 `orm:"t1_new_buyer_repurchase_ratio" json:"t1NewBuyerRepurchaseRatio" description:"投后 1 日新客复购率"`
|
||||
T3NewBuyerRepurchaseRatio *float64 `orm:"t3_new_buyer_repurchase_ratio" json:"t3NewBuyerRepurchaseRatio" description:"投后 3 日新客复购率"`
|
||||
T7NewBuyerRepurchaseRatio *float64 `orm:"t7_new_buyer_repurchase_ratio" json:"t7NewBuyerRepurchaseRatio" description:"投后 7 日新客复购率"`
|
||||
T15NewBuyerRepurchaseRatio *float64 `orm:"t15_new_buyer_repurchase_ratio" json:"t15NewBuyerRepurchaseRatio" description:"投后 15 日新客复购率"`
|
||||
T30NewBuyerRepurchaseRatio *float64 `orm:"t30_new_buyer_repurchase_ratio" json:"t30NewBuyerRepurchaseRatio" description:"投后 30 日新客复购率"`
|
||||
T0ShopNewBuyerRoi *float64 `orm:"t0_shop_new_buyer_roi" json:"t0ShopNewBuyerRoi" description:"投后当日新客 ROI"`
|
||||
T1ShopNewBuyerRoi *float64 `orm:"t1_shop_new_buyer_roi" json:"t1ShopNewBuyerRoi" description:"投后 1 日新客 ROI"`
|
||||
T3ShopNewBuyerRoi *float64 `orm:"t3_shop_new_buyer_roi" json:"t3ShopNewBuyerRoi" description:"投后 3 日新客 ROI"`
|
||||
T7ShopNewBuyerRoi *float64 `orm:"t7_shop_new_buyer_roi" json:"t7ShopNewBuyerRoi" description:"投后 7 日新客 ROI"`
|
||||
T15ShopNewBuyerRoi *float64 `orm:"t15_shop_new_buyer_roi" json:"t15ShopNewBuyerRoi" description:"投后 15 日新客 ROI"`
|
||||
T30ShopNewBuyerRoi *float64 `orm:"t30_shop_new_buyer_roi" json:"t30ShopNewBuyerRoi" description:"投后 30 日新客 ROI"`
|
||||
CreateCardOrderCnt *int64 `orm:"create_card_order_cnt" json:"createCardOrderCnt" description:"有效制卡订单数(回传时间)"`
|
||||
ForwardTsCreateCardOrderCnt *int64 `orm:"forward_ts_create_card_order_cnt" json:"forwardTsCreateCardOrderCnt" description:"有效制卡订单数(计费时间)"`
|
||||
CreateCardOrderCost *float64 `orm:"create_card_order_cost" json:"createCardOrderCost" description:"有效制卡订单成本(回传时间)"`
|
||||
ForwardTsCreateCardOrderCost *float64 `orm:"forward_ts_create_card_order_cost" json:"forwardTsCreateCardOrderCost" description:"有效制卡订单成本(计费时间)"`
|
||||
ActivateCardOrderCnt *int64 `orm:"activate_card_order_cnt" json:"activateCardOrderCnt" description:"电话卡激活订单数(回传时间)"`
|
||||
ForwardTsActivateCardOrderCnt *int64 `orm:"forward_ts_activate_card_order_cnt" json:"forwardTsActivateCardOrderCnt" description:"电话卡激活订单数(计费时间)"`
|
||||
ActivateCardOrderCost *float64 `orm:"activate_card_order_cost" json:"activateCardOrderCost" description:"电话卡激活订单成本(回传时间)"`
|
||||
ForwardTsActivateCardOrderCost *float64 `orm:"forward_ts_activate_card_order_cost" json:"forwardTsActivateCardOrderCost" description:"电话卡激活订单成本(计费时间)"`
|
||||
CreateCardOrderRatio *float64 `orm:"create_card_order_ratio" json:"createCardOrderRatio" description:"有效制卡订单率(回传时间)"`
|
||||
ForwardTsCreateCardOrderRatio *float64 `orm:"forward_ts_create_card_order_ratio" json:"forwardTsCreateCardOrderRatio" description:"有效制卡订单率(计费时间)"`
|
||||
ActivateCardOrderCntRatio *float64 `orm:"activate_card_order_cnt_ratio" json:"activateCardOrderCntRatio" description:"电话卡激活率(回传时间)"`
|
||||
ForwardTsActivateCardOrderRatio *float64 `orm:"forward_ts_activate_card_order_ratio" json:"forwardTsActivateCardOrderRatio" description:"电话卡激活率(计费时间)"`
|
||||
LivePlayCnt *int64 `orm:"live_play_cnt" json:"livePlayCnt" description:"全站直播观看数"`
|
||||
ItemEntranceClkCnt *int64 `orm:"item_entrance_clk_cnt" json:"itemEntranceClkCnt" description:"小黄车点击数"`
|
||||
ShowCnt *int64 `orm:"show_cnt" json:"showCnt" description:"全站曝光"`
|
||||
ReportDateStr string `orm:"report_date_str" json:"reportDateStr" description:"时间"`
|
||||
CampaignId *int64 `orm:"campaign_id" json:"campaignId" description:"计划 ID"`
|
||||
CampaignName string `orm:"campaign_name" json:"campaignName" description:"计划名称"`
|
||||
UnitId *int64 `orm:"unit_id" json:"unitId" description:"单元 ID"`
|
||||
UnitName string `orm:"unit_name" json:"unitName" description:"单元名称"`
|
||||
CreativeId *int64 `orm:"creative_id" json:"creativeId" description:"创意 ID"`
|
||||
CreativeName string `orm:"creative_name" json:"creativeName" description:"创意名称"`
|
||||
CidActualRoiAfterSubsidy *float64 `orm:"cid_actual_roi_after_subsidy" json:"cidActualRoiAfterSubsidy" description:"补贴后实际 ROI"`
|
||||
CidCouponAmount *int64 `orm:"cid_coupon_amount" json:"cidCouponAmount" description:"核销券金额"`
|
||||
CidCouponCallbackPaidRefundAmount *int64 `orm:"cid_coupon_callback_paid_refund_amount" json:"cidCouponCallbackPaidRefundAmount" description:"退单有回传_核销券金额"`
|
||||
CidVoucherCost *float64 `orm:"cid_voucher_cost" json:"cidVoucherCost" description:"券成本"`
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (e *UnitReportSum) TableName() string {
|
||||
return "unit_report_sum"
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// DatasourcePlatform 数据源平台配置实体
|
||||
type DatasourcePlatform struct {
|
||||
// 主键和标识字段
|
||||
ID int64 `orm:"id" json:"id" description:"主键ID,自增长"`
|
||||
PlatformCode string `orm:"platform_code" json:"platformCode" description:"平台编码,唯一标识"`
|
||||
PlatformName string `orm:"platform_name" json:"platformName" description:"平台名称"`
|
||||
Description string `orm:"description" json:"description" description:"平台描述"`
|
||||
|
||||
// 状态和基础配置
|
||||
Status string `orm:"status" json:"status" description:"状态: ACTIVE启用, INACTIVE停用"`
|
||||
ApiBaseUrl string `orm:"api_base_url" json:"apiBaseUrl" description:"API基础地址"`
|
||||
|
||||
// 认证配置
|
||||
AuthType string `orm:"auth_type" json:"authType" description:"认证类型: TOKEN/API_KEY/OAUTH2/BASIC"`
|
||||
Token string `orm:"token" json:"token" description:"认证token/密钥"`
|
||||
ApiKey string `orm:"api_key" json:"apiKey" description:"API Key"`
|
||||
ClientId string `orm:"client_id" json:"clientId" description:"OAuth2 Client ID"`
|
||||
ClientSecret string `orm:"client_secret" json:"clientSecret" description:"OAuth2 Client Secret"`
|
||||
|
||||
// 限流配置
|
||||
RateLimitPerMinute int `orm:"rate_limit_per_minute" json:"rateLimitPerMinute" description:"每分钟请求限制"`
|
||||
RateLimitPerHour int `orm:"rate_limit_per_hour" json:"rateLimitPerHour" description:"每小时请求限制"`
|
||||
ConcurrencyLimit int `orm:"concurrency_limit" json:"concurrencyLimit" description:"并发连接限制"`
|
||||
RequestTimeoutMs int `orm:"request_timeout_ms" json:"requestTimeoutMs" description:"请求超时时间(毫秒)"`
|
||||
|
||||
// 重试策略
|
||||
MaxRetries int `orm:"max_retries" json:"maxRetries" description:"最大重试次数"`
|
||||
RetryDelayMs int `orm:"retry_delay_ms" json:"retryDelayMs" description:"重试延迟(毫秒)"`
|
||||
|
||||
// 元数据
|
||||
CreatedBy string `orm:"created_by" json:"createdBy" description:"创建人"`
|
||||
CreatedAt *time.Time `orm:"created_at" json:"createdAt" description:"创建时间"`
|
||||
UpdatedBy string `orm:"updated_by" json:"updatedBy" description:"更新人"`
|
||||
UpdatedAt *time.Time `orm:"updated_at" json:"updatedAt" description:"更新时间"`
|
||||
Version int `orm:"version" json:"version" description:"版本号(乐观锁)"`
|
||||
}
|
||||
|
||||
// DatasourcePlatformCol 数据源平台配置表字段定义
|
||||
type DatasourcePlatformCol struct {
|
||||
ID string
|
||||
PlatformCode string
|
||||
PlatformName string
|
||||
Description string
|
||||
Status string
|
||||
ApiBaseUrl string
|
||||
AuthType string
|
||||
Token string
|
||||
ApiKey string
|
||||
ClientId string
|
||||
ClientSecret string
|
||||
RateLimitPerMinute string
|
||||
RateLimitPerHour string
|
||||
ConcurrencyLimit string
|
||||
RequestTimeoutMs string
|
||||
MaxRetries string
|
||||
RetryDelayMs string
|
||||
CreatedBy string
|
||||
CreatedAt string
|
||||
UpdatedBy string
|
||||
UpdatedAt string
|
||||
Version string
|
||||
}
|
||||
|
||||
// DatasourcePlatformCols 数据源平台配置表字段常量
|
||||
var DatasourcePlatformCols = DatasourcePlatformCol{
|
||||
ID: "id",
|
||||
PlatformCode: "platform_code",
|
||||
PlatformName: "platform_name",
|
||||
Description: "description",
|
||||
Status: "status",
|
||||
ApiBaseUrl: "api_base_url",
|
||||
AuthType: "auth_type",
|
||||
Token: "token",
|
||||
ApiKey: "api_key",
|
||||
ClientId: "client_id",
|
||||
ClientSecret: "client_secret",
|
||||
RateLimitPerMinute: "rate_limit_per_minute",
|
||||
RateLimitPerHour: "rate_limit_per_hour",
|
||||
ConcurrencyLimit: "concurrency_limit",
|
||||
RequestTimeoutMs: "request_timeout_ms",
|
||||
MaxRetries: "max_retries",
|
||||
RetryDelayMs: "retry_delay_ms",
|
||||
CreatedBy: "created_by",
|
||||
CreatedAt: "created_at",
|
||||
UpdatedBy: "updated_by",
|
||||
UpdatedAt: "updated_at",
|
||||
Version: "version",
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// FieldMappingConfig 字段映射配置实体
|
||||
type FieldMappingConfig struct {
|
||||
Id int64 `json:"id,string" dc:"配置ID"`
|
||||
ConfigName string `json:"configName" dc:"配置名称"`
|
||||
VendorName string `json:"vendorName" dc:"厂商名称"`
|
||||
ApiName string `json:"apiName" dc:"接口名称"`
|
||||
ApiVersion string `json:"apiVersion" dc:"接口版本"`
|
||||
SourceField string `json:"sourceField" dc:"源字段名"`
|
||||
SourceFieldType string `json:"sourceFieldType" dc:"源字段数据类型"`
|
||||
SourceFieldDesc string `json:"sourceFieldDesc" dc:"源字段描述"`
|
||||
TargetField string `json:"targetField" dc:"目标字段名"`
|
||||
TargetFieldType string `json:"targetFieldType" dc:"目标数据类型"`
|
||||
TargetFieldDesc string `json:"targetFieldDesc" dc:"字段描述"`
|
||||
TransformType string `json:"transformType" dc:"转换类型"`
|
||||
TransformParams map[string]interface{} `json:"transformParams" dc:"转换参数"`
|
||||
ValidationRules map[string]interface{} `json:"validationRules" dc:"验证规则"`
|
||||
DefaultValue string `json:"defaultValue" dc:"默认值"`
|
||||
IsRequired bool `json:"isRequired" dc:"是否必填"`
|
||||
IsActive bool `json:"isActive" dc:"是否启用"`
|
||||
Priority int `json:"priority" dc:"优先级"`
|
||||
BusinessDomain string `json:"businessDomain" dc:"业务域"`
|
||||
FieldGroup string `json:"fieldGroup" dc:"字段分组"`
|
||||
ConfigVersion int `json:"configVersion" dc:"配置版本号"`
|
||||
EffectiveDate *time.Time `json:"effectiveDate" dc:"生效时间"`
|
||||
ExpiryDate *time.Time `json:"expiryDate" dc:"失效时间"`
|
||||
CreatedBy string `json:"createdBy" dc:"创建人"`
|
||||
CreatedTime time.Time `json:"createdTime" dc:"创建时间"`
|
||||
UpdatedBy string `json:"updatedBy" dc:"更新人"`
|
||||
UpdatedTime time.Time `json:"updatedTime" dc:"更新时间"`
|
||||
}
|
||||
|
||||
// FieldMappingConfigCols 字段映射配置表列名
|
||||
type FieldMappingConfigCols struct {
|
||||
Id string
|
||||
ConfigName string
|
||||
VendorName string
|
||||
ApiName string
|
||||
ApiVersion string
|
||||
SourceField string
|
||||
SourceFieldType string
|
||||
SourceFieldDesc string
|
||||
TargetField string
|
||||
TargetFieldType string
|
||||
TargetFieldDesc string
|
||||
TransformType string
|
||||
TransformParams string
|
||||
ValidationRules string
|
||||
DefaultValue string
|
||||
IsRequired string
|
||||
IsActive string
|
||||
Priority string
|
||||
BusinessDomain string
|
||||
FieldGroup string
|
||||
ConfigVersion string
|
||||
EffectiveDate string
|
||||
ExpiryDate string
|
||||
CreatedBy string
|
||||
CreatedTime string
|
||||
UpdatedBy string
|
||||
UpdatedTime string
|
||||
}
|
||||
|
||||
// FieldMappingConfigCol 字段映射配置表列名常量
|
||||
var FieldMappingConfigCol = FieldMappingConfigCols{
|
||||
Id: "id",
|
||||
ConfigName: "config_name",
|
||||
VendorName: "vendor_name",
|
||||
ApiName: "api_name",
|
||||
ApiVersion: "api_version",
|
||||
SourceField: "source_field",
|
||||
SourceFieldType: "source_field_type",
|
||||
SourceFieldDesc: "source_field_desc",
|
||||
TargetField: "target_field",
|
||||
TargetFieldType: "target_field_type",
|
||||
TargetFieldDesc: "target_field_desc",
|
||||
TransformType: "transform_type",
|
||||
TransformParams: "transform_params",
|
||||
ValidationRules: "validation_rules",
|
||||
DefaultValue: "default_value",
|
||||
IsRequired: "is_required",
|
||||
IsActive: "is_active",
|
||||
Priority: "priority",
|
||||
BusinessDomain: "business_domain",
|
||||
FieldGroup: "field_group",
|
||||
ConfigVersion: "config_version",
|
||||
EffectiveDate: "effective_date",
|
||||
ExpiryDate: "expiry_date",
|
||||
CreatedBy: "created_by",
|
||||
CreatedTime: "created_time",
|
||||
UpdatedBy: "updated_by",
|
||||
UpdatedTime: "updated_time",
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts "cid/consts/api-feature"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
// ApiInterface 接口管理实体
|
||||
type ApiInterface struct {
|
||||
beans.SQLBaseDO `orm:",inherit"`
|
||||
// 基础信息
|
||||
PlatformId int64 `orm:"platform_id" json:"platformId" description:"所属平台ID"`
|
||||
Name string `orm:"name" json:"name" description:"接口名称"`
|
||||
Code string `orm:"code" json:"code" description:"接口编码"`
|
||||
Url string `orm:"url" json:"url" description:"接口地址"`
|
||||
Method consts.ApiMethod `orm:"method" json:"method" description:"请求方法:GET/POST/PUT/DELETE等"`
|
||||
Status consts.PlatformStatus `orm:"status" json:"status" description:"接口状态:active启用/inactive停用"`
|
||||
// 认证类型
|
||||
AuthType string `orm:"auth_type" json:"authType" description:"认证类型:oauth2/apikey/basic等"`
|
||||
// 请求配置 (JSONB)
|
||||
RequestConfig map[string]interface{} `orm:"request_config" json:"requestConfig" description:"请求配置"`
|
||||
// 响应配置 (JSONB)
|
||||
ResponseConfig map[string]interface{} `orm:"response_config" json:"responseConfig" description:"响应配置"`
|
||||
// 独立限流配置 (JSONB)
|
||||
LimitConfig map[string]interface{} `orm:"limit_config" json:"limitConfig" description:"接口独立限流配置(可选,覆盖平台配置)"`
|
||||
}
|
||||
|
||||
// ApiInterfaceCol 接口表字段定义
|
||||
type ApiInterfaceCol struct {
|
||||
beans.SQLBaseCol
|
||||
PlatformId string
|
||||
Name string
|
||||
Code string
|
||||
Url string
|
||||
Method string
|
||||
Status string
|
||||
AuthType string
|
||||
RequestConfig string
|
||||
ResponseConfig string
|
||||
LimitConfig string
|
||||
}
|
||||
|
||||
// ApiInterfaceCols 接口表字段常量
|
||||
var ApiInterfaceCols = ApiInterfaceCol{
|
||||
SQLBaseCol: beans.DefSQLBaseCol,
|
||||
PlatformId: "platform_id",
|
||||
Name: "name",
|
||||
Code: "code",
|
||||
Url: "url",
|
||||
Method: "method",
|
||||
Status: "status",
|
||||
AuthType: "auth_type",
|
||||
RequestConfig: "request_config",
|
||||
ResponseConfig: "response_config",
|
||||
LimitConfig: "limit_config",
|
||||
}
|
||||
@@ -0,0 +1,396 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"math"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
entities "cid/entities"
|
||||
)
|
||||
|
||||
// APIService API服务接口
|
||||
type APIService interface {
|
||||
GetCampaignReport(params *entities.RequestParams) (*entities.APIResponse, error)
|
||||
GetCampaignReportByTimeRange(advertiserID int64, startTime, endTime int64) (*entities.APIResponse, error)
|
||||
GetAllCampaignReport(params *entities.RequestParams) (*entities.APIResponse, error)
|
||||
GetAllCampaignReportByTimeRange(advertiserID int64, startTime, endTime int64) (*entities.APIResponse, error)
|
||||
GetCampaignReportWithCallback(params *entities.RequestParams, callback func(*entities.APIResponse, error) bool) error
|
||||
}
|
||||
|
||||
// KuaishouAPIService 快手API服务实现
|
||||
type KuaishouAPIService struct {
|
||||
BaseURL string
|
||||
AccessToken string
|
||||
HTTPClient *http.Client
|
||||
MaxRetries int
|
||||
RetryDelay time.Duration
|
||||
RateLimit time.Duration // 请求间隔,避免触发限流
|
||||
}
|
||||
|
||||
// NewKuaishouAPIService 创建API服务实例
|
||||
func NewKuaishouAPIService(accessToken string) *KuaishouAPIService {
|
||||
return &KuaishouAPIService{
|
||||
BaseURL: "https://ad.e.kuaishou.com/rest/openapi/gw/esp/report",
|
||||
AccessToken: accessToken,
|
||||
HTTPClient: &http.Client{
|
||||
Timeout: 30 * time.Second,
|
||||
},
|
||||
MaxRetries: 3,
|
||||
RetryDelay: 2 * time.Second,
|
||||
RateLimit: 200 * time.Millisecond, // 默认200ms间隔
|
||||
}
|
||||
}
|
||||
|
||||
// SetRateLimit 设置请求间隔
|
||||
func (s *KuaishouAPIService) SetRateLimit(delay time.Duration) {
|
||||
s.RateLimit = delay
|
||||
}
|
||||
|
||||
// GetCampaignReport 获取广告计划报表(单页)
|
||||
func (s *KuaishouAPIService) GetCampaignReport(params *entities.RequestParams) (*entities.APIResponse, error) {
|
||||
for retry := 0; retry <= s.MaxRetries; retry++ {
|
||||
response, err := s.doRequest(params)
|
||||
if err == nil {
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// 判断是否重试
|
||||
if retry < s.MaxRetries {
|
||||
time.Sleep(s.RetryDelay)
|
||||
continue
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("请求失败,已达到最大重试次数")
|
||||
}
|
||||
|
||||
// doRequest 执行实际请求
|
||||
func (s *KuaishouAPIService) doRequest(params *entities.RequestParams) (*entities.APIResponse, error) {
|
||||
// 序列化请求参数
|
||||
jsonData, err := json.Marshal(params)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("序列化失败: %v", err)
|
||||
}
|
||||
|
||||
// 创建HTTP请求
|
||||
url := fmt.Sprintf("%s/campaignReport", s.BaseURL)
|
||||
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("创建请求失败: %v", err)
|
||||
}
|
||||
|
||||
// 设置请求头
|
||||
s.setHeaders(req)
|
||||
|
||||
// 发送请求
|
||||
resp, err := s.HTTPClient.Do(req)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("请求失败: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 检查HTTP状态码
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
body, _ := ioutil.ReadAll(resp.Body)
|
||||
return nil, fmt.Errorf("HTTP状态码错误: %d, 响应: %s", resp.StatusCode, string(body))
|
||||
}
|
||||
|
||||
// 读取响应
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("读取响应失败: %v", err)
|
||||
}
|
||||
|
||||
// 解析响应
|
||||
var apiResponse entities.APIResponse
|
||||
err = json.Unmarshal(body, &apiResponse)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("解析响应失败: %v", err)
|
||||
}
|
||||
|
||||
// 检查API返回码
|
||||
if apiResponse.Code != 0 {
|
||||
return nil, fmt.Errorf("API返回错误: %s (code: %d)", apiResponse.Message, apiResponse.Code)
|
||||
}
|
||||
|
||||
return &apiResponse, nil
|
||||
}
|
||||
|
||||
// GetAllCampaignReport 获取所有分页数据
|
||||
func (s *KuaishouAPIService) GetAllCampaignReport(params *entities.RequestParams) (*entities.APIResponse, error) {
|
||||
// 1. 先获取第一页数据,得到总数
|
||||
params.ResetPage()
|
||||
firstPage, err := s.GetCampaignReport(params)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("获取第一页数据失败: %v", err)
|
||||
}
|
||||
|
||||
if firstPage.Data == nil {
|
||||
return firstPage, nil // 没有数据
|
||||
}
|
||||
|
||||
totalCount := firstPage.Data.TotalCount
|
||||
pageSize := params.PageInfo.PageSize
|
||||
|
||||
// 2. 如果只有一页,直接返回
|
||||
if totalCount <= pageSize {
|
||||
return firstPage, nil
|
||||
}
|
||||
|
||||
// 3. 计算总页数
|
||||
totalPages := int(math.Ceil(float64(totalCount) / float64(pageSize)))
|
||||
|
||||
// 4. 创建结果集
|
||||
allResponses := make([]*entities.APIResponse, 0, totalPages)
|
||||
allResponses = append(allResponses, firstPage)
|
||||
|
||||
// 5. 并发获取剩余页数据
|
||||
pageChan := make(chan *pageResult, totalPages-1)
|
||||
|
||||
// 启动goroutine获取剩余页
|
||||
for page := 2; page <= totalPages; page++ {
|
||||
go func(currentPage int) {
|
||||
// 复制参数并设置页码
|
||||
pageParams := *params
|
||||
pageParams.PageInfo = &entities.PageInfo{
|
||||
CurrentPage: currentPage,
|
||||
PageSize: pageSize,
|
||||
}
|
||||
|
||||
response, err := s.GetCampaignReport(&pageParams)
|
||||
pageChan <- &pageResult{
|
||||
Page: currentPage,
|
||||
Response: response,
|
||||
Error: err,
|
||||
}
|
||||
|
||||
// 控制请求频率
|
||||
time.Sleep(s.RateLimit)
|
||||
}(page)
|
||||
}
|
||||
|
||||
// 6. 收集结果
|
||||
errors := make([]error, 0)
|
||||
for i := 0; i < totalPages-1; i++ {
|
||||
result := <-pageChan
|
||||
if result.Error != nil {
|
||||
errors = append(errors, fmt.Errorf("第%d页获取失败: %v", result.Page, result.Error))
|
||||
} else {
|
||||
allResponses = append(allResponses, result.Response)
|
||||
}
|
||||
}
|
||||
|
||||
// 7. 合并数据
|
||||
mergedResponse := entities.MergeData(allResponses)
|
||||
|
||||
// 8. 如果有错误,返回错误信息
|
||||
if len(errors) > 0 {
|
||||
// 可以记录错误日志,但继续返回已获取的数据
|
||||
fmt.Printf("部分页面获取失败: %v\n", errors)
|
||||
}
|
||||
|
||||
return mergedResponse, nil
|
||||
}
|
||||
|
||||
// GetAllCampaignReportByTimeRange 根据时间范围获取所有数据
|
||||
func (s *KuaishouAPIService) GetAllCampaignReportByTimeRange(advertiserID int64, startTime, endTime int64) (*entities.APIResponse, error) {
|
||||
params := entities.NewRequestParams()
|
||||
params.AdvertiserID = advertiserID
|
||||
params.StartTime = startTime
|
||||
params.EndTime = endTime
|
||||
|
||||
return s.GetAllCampaignReport(params)
|
||||
}
|
||||
|
||||
// GetCampaignReportWithCallback 使用回调函数获取所有数据(流式处理,避免内存占用过大)
|
||||
func (s *KuaishouAPIService) GetCampaignReportWithCallback(params *entities.RequestParams, callback func(*entities.APIResponse, error) bool) error {
|
||||
// 1. 先获取第一页数据,得到总数
|
||||
params.ResetPage()
|
||||
firstPage, err := s.GetCampaignReport(params)
|
||||
if err != nil {
|
||||
return fmt.Errorf("获取第一页数据失败: %v", err)
|
||||
}
|
||||
|
||||
// 调用回调处理第一页
|
||||
if !callback(firstPage, nil) {
|
||||
return nil // 回调要求停止
|
||||
}
|
||||
|
||||
if firstPage.Data == nil || firstPage.Data.TotalCount <= params.PageInfo.PageSize {
|
||||
return nil // 只有一页
|
||||
}
|
||||
|
||||
totalCount := firstPage.Data.TotalCount
|
||||
pageSize := params.PageInfo.PageSize
|
||||
totalPages := int(math.Ceil(float64(totalCount) / float64(pageSize)))
|
||||
|
||||
// 2. 顺序获取剩余页数据(避免并发导致API限流)
|
||||
for page := 2; page <= totalPages; page++ {
|
||||
// 复制参数并设置页码
|
||||
pageParams := *params
|
||||
pageParams.PageInfo = &entities.PageInfo{
|
||||
CurrentPage: page,
|
||||
PageSize: pageSize,
|
||||
}
|
||||
|
||||
response, err := s.GetCampaignReport(&pageParams)
|
||||
if !callback(response, err) {
|
||||
return nil // 回调要求停止
|
||||
}
|
||||
|
||||
// 控制请求频率
|
||||
time.Sleep(s.RateLimit)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetCampaignReportSequential 顺序获取所有数据(简单实现)
|
||||
func (s *KuaishouAPIService) GetCampaignReportSequential(params *entities.RequestParams) (*entities.APIResponse, error) {
|
||||
// 1. 先获取第一页数据,得到总数
|
||||
params.ResetPage()
|
||||
firstPage, err := s.GetCampaignReport(params)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("获取第一页数据失败: %v", err)
|
||||
}
|
||||
|
||||
if firstPage.Data == nil {
|
||||
return firstPage, nil
|
||||
}
|
||||
|
||||
totalCount := firstPage.Data.TotalCount
|
||||
pageSize := params.PageInfo.PageSize
|
||||
|
||||
// 2. 如果只有一页,直接返回
|
||||
if totalCount <= pageSize {
|
||||
return firstPage, nil
|
||||
}
|
||||
|
||||
// 3. 顺序获取所有数据
|
||||
allDetails := make([]*entities.ReportDetail, 0, totalCount)
|
||||
if firstPage.Data.Detail != nil {
|
||||
allDetails = append(allDetails, firstPage.Data.Detail...)
|
||||
}
|
||||
|
||||
totalPages := int(math.Ceil(float64(totalCount) / float64(pageSize)))
|
||||
|
||||
for page := 2; page <= totalPages; page++ {
|
||||
// 复制参数并设置页码
|
||||
pageParams := *params
|
||||
pageParams.PageInfo = &entities.PageInfo{
|
||||
CurrentPage: page,
|
||||
PageSize: pageSize,
|
||||
}
|
||||
|
||||
response, err := s.GetCampaignReport(&pageParams)
|
||||
if err != nil {
|
||||
// 记录错误但继续获取
|
||||
fmt.Printf("第%d页获取失败: %v\n", page, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if response.Data != nil && response.Data.Detail != nil {
|
||||
allDetails = append(allDetails, response.Data.Detail...)
|
||||
}
|
||||
|
||||
// 控制请求频率
|
||||
time.Sleep(s.RateLimit)
|
||||
}
|
||||
|
||||
// 4. 构建完整响应
|
||||
completeResponse := &entities.APIResponse{
|
||||
Code: firstPage.Code,
|
||||
Message: firstPage.Message,
|
||||
Data: &entities.ReportData{
|
||||
Sum: firstPage.Data.Sum,
|
||||
Detail: allDetails,
|
||||
TotalCount: totalCount,
|
||||
},
|
||||
}
|
||||
|
||||
return completeResponse, nil
|
||||
}
|
||||
|
||||
// setHeaders 设置请求头
|
||||
func (s *KuaishouAPIService) setHeaders(req *http.Request) {
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("Accept", "application/json")
|
||||
if s.AccessToken != "" {
|
||||
req.Header.Set("Access-Token", s.AccessToken)
|
||||
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", s.AccessToken))
|
||||
}
|
||||
}
|
||||
|
||||
// pageResult 分页结果
|
||||
type pageResult struct {
|
||||
Page int
|
||||
Response *entities.APIResponse
|
||||
Error error
|
||||
}
|
||||
|
||||
// ReportStatistics 报表统计
|
||||
type ReportStatistics struct {
|
||||
TotalImpression int64
|
||||
TotalClick int64
|
||||
TotalCost float64
|
||||
TotalGMV float64
|
||||
TotalT0GMV float64
|
||||
TotalT0OrderCnt int64
|
||||
PageCount int
|
||||
RecordCount int
|
||||
}
|
||||
|
||||
// CalculateStatistics 计算统计信息
|
||||
func CalculateStatistics(response *entities.APIResponse) *ReportStatistics {
|
||||
stats := &ReportStatistics{}
|
||||
|
||||
if response.Data == nil {
|
||||
return stats
|
||||
}
|
||||
|
||||
stats.PageCount = 1 // 默认值
|
||||
stats.RecordCount = response.Data.TotalCount
|
||||
|
||||
if response.Data.Detail != nil {
|
||||
for _, detail := range response.Data.Detail {
|
||||
stats.TotalImpression += detail.Impression
|
||||
stats.TotalClick += detail.Click
|
||||
stats.TotalCost += detail.CostTotal
|
||||
stats.TotalGMV += detail.GMV
|
||||
stats.TotalT0GMV += detail.T0GMV
|
||||
stats.TotalT0OrderCnt += detail.T0OrderCnt
|
||||
}
|
||||
}
|
||||
|
||||
return stats
|
||||
}
|
||||
|
||||
// GetAverageMetrics 获取平均指标
|
||||
func (stats *ReportStatistics) GetAverageMetrics() map[string]float64 {
|
||||
metrics := make(map[string]float64)
|
||||
|
||||
if stats.TotalImpression > 0 {
|
||||
metrics["ctr"] = float64(stats.TotalClick) / float64(stats.TotalImpression) * 100
|
||||
}
|
||||
|
||||
if stats.TotalClick > 0 {
|
||||
metrics["cpc"] = stats.TotalCost / float64(stats.TotalClick)
|
||||
}
|
||||
|
||||
if stats.TotalCost > 0 {
|
||||
metrics["roi"] = stats.TotalGMV / stats.TotalCost
|
||||
metrics["t0_roi"] = stats.TotalT0GMV / stats.TotalCost
|
||||
}
|
||||
|
||||
if stats.TotalImpression > 0 {
|
||||
metrics["cpm"] = stats.TotalCost / float64(stats.TotalImpression) * 1000
|
||||
}
|
||||
|
||||
return metrics
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type cidAccountReportDetailService struct{}
|
||||
|
||||
// CidAccountReportDetail 广告数据报表详情服务
|
||||
var CidAccountReportDetail = new(cidAccountReportDetailService)
|
||||
|
||||
// Create 创建广告数据报表详情
|
||||
func (s *cidAccountReportDetailService) Create(ctx context.Context, req *dto.CidAccountReportDetailItem) (res *dto.CreateCidAccountReportDetailRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.DataType == "" {
|
||||
return nil, errors.New("数据类型不能为空")
|
||||
}
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.CidAccountReportDetail.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateCidAccountReportDetailRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告数据报表详情
|
||||
func (s *cidAccountReportDetailService) BatchCreate(ctx context.Context, req *dto.BatchCreateCidAccountReportDetailReq) (res *dto.BatchCreateCidAccountReportDetailRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
//// 验证每条数据
|
||||
//for i, item := range req.Items {
|
||||
// if item.DataType == "" {
|
||||
// return nil, errors.New("第" + string(rune(i+1)) + "条数据的数据类型不能为空")
|
||||
// }
|
||||
// if item.ReportDateStr == "" {
|
||||
// return nil, errors.New("第" + string(rune(i+1)) + "条数据的报告日期不能为空")
|
||||
// }
|
||||
//}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.CidAccountReportDetail.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateCidAccountReportDetailRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Create 创建广告数据报表汇总
|
||||
func (s *cidAccountReportDetailService) CreateSum(ctx context.Context, req *dto.CidAccountReportSumItem) (res *dto.CreateCidAccountReportSumRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.DataType == "" {
|
||||
return nil, errors.New("数据类型不能为空")
|
||||
}
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.CidAccountReportSum.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateCidAccountReportSumRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告数据报表汇总
|
||||
func (s *cidAccountReportDetailService) BatchCreateSum(ctx context.Context, req *dto.BatchCreateCidAccountReportSumReq) (res *dto.BatchCreateCidAccountReportSumRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.CidAccountReportSum.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateCidAccountReportSumRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type creativeReportSumService struct{}
|
||||
|
||||
// CreativeReportSum 广告效果指标表服务
|
||||
var CreativeReportSum = new(creativeReportSumService)
|
||||
|
||||
// Create 创建广告效果指标表
|
||||
func (s *creativeReportSumService) Create(ctx context.Context, req *dto.CreativeReportSumItem) (res *dto.CreateCreativeReportSumRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.CreativeReportSum.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateCreativeReportSumRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标表
|
||||
func (s *creativeReportSumService) BatchCreate(ctx context.Context, req *dto.BatchCreateCreativeReportSumReq) (res *dto.BatchCreateCreativeReportSumRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.CreativeReportSum.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateCreativeReportSumRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *creativeReportSumService) CreateDetail(ctx context.Context, req *dto.CreativeReportDetailItem) (res *dto.CreateCreativeReportDetailRes, err error) {
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
id, err := dao.CreativeReportDetail.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateCreativeReportDetailRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *creativeReportSumService) BatchCreateDetail(ctx context.Context, req *dto.BatchCreateCreativeReportDetailReq) (res *dto.BatchCreateCreativeReportDetailRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
successCount, failCount, failedIndexes, err := dao.CreativeReportDetail.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateCreativeReportDetailRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type materialReportService struct{}
|
||||
|
||||
// MaterialReport 素材报表数据服务
|
||||
var MaterialReport = new(materialReportService)
|
||||
|
||||
// Create 创建素材报表数据
|
||||
func (s *materialReportService) Create(ctx context.Context, req *dto.MaterialReportItem) (res *dto.CreateMaterialReportRes, err error) {
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
id, err := dao.MaterialReport.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateMaterialReportRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建素材报表数据
|
||||
func (s *materialReportService) BatchCreate(ctx context.Context, req *dto.BatchCreateMaterialReportReq) (res *dto.BatchCreateMaterialReportRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
successCount, failCount, failedIndexes, err := dao.MaterialReport.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateMaterialReportRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// List 获取素材报表数据列表
|
||||
func (s *materialReportService) List(ctx context.Context, req *dto.ListMaterialReportReq) (res *dto.ListMaterialReportRes, err error) {
|
||||
list, total, err := dao.MaterialReport.List(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
items := make([]*dto.MaterialReportItem, len(list))
|
||||
for i, item := range list {
|
||||
items[i] = convertMaterialEntityToDTO(item)
|
||||
}
|
||||
|
||||
res = &dto.ListMaterialReportRes{
|
||||
List: items,
|
||||
Total: total,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// convertEntityToDTO 将实体转换为 DTO
|
||||
func convertMaterialEntityToDTO(entity *entity.MaterialReport) *dto.MaterialReportItem {
|
||||
return &dto.MaterialReportItem{
|
||||
CreatedBy: entity.CreatedBy,
|
||||
UpdatedBy: entity.UpdatedBy,
|
||||
T0OrderPaymentAmt: entity.T0OrderPaymentAmt,
|
||||
CreativeMaterialType: entity.CreativeMaterialType,
|
||||
LiveName: entity.LiveName,
|
||||
AuthorId: entity.AuthorId,
|
||||
PicUrl: entity.PicUrl,
|
||||
PicName: entity.PicName,
|
||||
PicId: entity.PicId,
|
||||
CoverUrl: entity.CoverUrl,
|
||||
CoverId: entity.CoverId,
|
||||
ItemOrderConversionRatio: entity.ItemOrderConversionRatio,
|
||||
ItemCardClickRatio: entity.ItemCardClickRatio,
|
||||
ItemCardClkCnt: entity.ItemCardClkCnt,
|
||||
LivePlayCntCost: entity.LivePlayCntCost,
|
||||
AdMerchantFollowCost: entity.AdMerchantFollowCost,
|
||||
AdMerchantFollow: entity.AdMerchantFollow,
|
||||
NetT0OrderCnt: entity.NetT0OrderCnt,
|
||||
NetT0Roi: entity.NetT0Roi,
|
||||
NetT0Gmv: entity.NetT0Gmv,
|
||||
PhotoName: entity.PhotoName,
|
||||
PhotoIdStr: entity.PhotoIdStr,
|
||||
PhotoId: entity.PhotoId,
|
||||
ModPriceSegment: entity.ModPriceSegment,
|
||||
AgeSegment: entity.AgeSegment,
|
||||
Province: entity.Province,
|
||||
Gender: entity.Gender,
|
||||
AdPhotoPlayedFiveRatio: entity.AdPhotoPlayedFiveRatio,
|
||||
AdPhotoPlayedThreeRatio: entity.AdPhotoPlayedThreeRatio,
|
||||
OrderSubmitRoi: entity.OrderSubmitRoi,
|
||||
OrderSubmitAmt: entity.OrderSubmitAmt,
|
||||
EventOrderSubmitCost: entity.EventOrderSubmitCost,
|
||||
EventOrderSubmit: entity.EventOrderSubmit,
|
||||
EventOrderPaidRoi: entity.EventOrderPaidRoi,
|
||||
EventAppInvoked: entity.EventAppInvoked,
|
||||
EventAddShoppingCart: entity.EventAddShoppingCart,
|
||||
ConversionNumCost: entity.ConversionNumCost,
|
||||
AdEffectivePlayNum: entity.AdEffectivePlayNum,
|
||||
AdItemClick: entity.AdItemClick,
|
||||
MerchantProductId: entity.MerchantProductId,
|
||||
CostTotal: entity.CostTotal,
|
||||
AdShow: entity.AdShow,
|
||||
AdShow1kCost: entity.AdShow1kCost,
|
||||
Impression: entity.Impression,
|
||||
PhotoClick: entity.PhotoClick,
|
||||
PhotoClickRatio: entity.PhotoClickRatio,
|
||||
Click: entity.Click,
|
||||
ActionbarClick: entity.ActionbarClick,
|
||||
ActionbarClickCost: entity.ActionbarClickCost,
|
||||
EspClickRatio: entity.EspClickRatio,
|
||||
ActionRatio: entity.ActionRatio,
|
||||
AdItemCount: entity.AdItemCount,
|
||||
EspLivePlayedSeconds: entity.EspLivePlayedSeconds,
|
||||
PlayedThreeSeconds: entity.PlayedThreeSeconds,
|
||||
Play3sRatio: entity.Play3sRatio,
|
||||
PlayedFiveSeconds: entity.PlayedFiveSeconds,
|
||||
Play5sRatio: entity.Play5sRatio,
|
||||
PlayedEnd: entity.PlayedEnd,
|
||||
PlayEndRatio: entity.PlayEndRatio,
|
||||
Share: entity.Share,
|
||||
Comment: entity.Comment,
|
||||
Likes: entity.Likes,
|
||||
Report: entity.Report,
|
||||
Block: entity.Block,
|
||||
ItemNegative: entity.ItemNegative,
|
||||
LiveShare: entity.LiveShare,
|
||||
LiveComment: entity.LiveComment,
|
||||
LiveReward: entity.LiveReward,
|
||||
EffectivePlayCount: entity.EffectivePlayCount,
|
||||
EffectivePlayRatio: entity.EffectivePlayRatio,
|
||||
ConversionNum: entity.ConversionNum,
|
||||
ConversionCostEsp: entity.ConversionCostEsp,
|
||||
Roi: entity.Roi,
|
||||
Gmv: entity.Gmv,
|
||||
T0Gmv: entity.T0Gmv,
|
||||
T1Gmv: entity.T1Gmv,
|
||||
T7Gmv: entity.T7Gmv,
|
||||
T15Gmv: entity.T15Gmv,
|
||||
T30Gmv: entity.T30Gmv,
|
||||
T0Roi: entity.T0Roi,
|
||||
T1Roi: entity.T1Roi,
|
||||
T7Roi: entity.T7Roi,
|
||||
T15Roi: entity.T15Roi,
|
||||
T30Roi: entity.T30Roi,
|
||||
PaiedOrder: entity.PaiedOrder,
|
||||
OrderRatio: entity.OrderRatio,
|
||||
T0OrderCnt: entity.T0OrderCnt,
|
||||
T0OrderCntCost: entity.T0OrderCntCost,
|
||||
T0OrderCntRatio: entity.T0OrderCntRatio,
|
||||
T1OrderCnt: entity.T1OrderCnt,
|
||||
T7OrderCnt: entity.T7OrderCnt,
|
||||
T15OrderCnt: entity.T15OrderCnt,
|
||||
T30OrderCnt: entity.T30OrderCnt,
|
||||
MerchantRecoFans: entity.MerchantRecoFans,
|
||||
T1Retention: entity.T1Retention,
|
||||
T7Retention: entity.T7Retention,
|
||||
T15Retention: entity.T15Retention,
|
||||
T30Retention: entity.T30Retention,
|
||||
T1RetentionRatio: entity.T1RetentionRatio,
|
||||
T7RetentionRatio: entity.T7RetentionRatio,
|
||||
T15RetentionRatio: entity.T15RetentionRatio,
|
||||
T30RetentionRatio: entity.T30RetentionRatio,
|
||||
ReservationSuccess: entity.ReservationSuccess,
|
||||
ReservationCost: entity.ReservationCost,
|
||||
StandardLivePlayedStarted: entity.StandardLivePlayedStarted,
|
||||
AdLivePlayCnt: entity.AdLivePlayCnt,
|
||||
AdLivePlayCntCost: entity.AdLivePlayCntCost,
|
||||
LiveAudienceCost: entity.LiveAudienceCost,
|
||||
LiveEventGoodsView: entity.LiveEventGoodsView,
|
||||
GoodsClickRatio: entity.GoodsClickRatio,
|
||||
DirectAttrPlatNewBuyerCnt: entity.DirectAttrPlatNewBuyerCnt,
|
||||
T30AttrPlatTotalBuyerCnt: entity.T30AttrPlatTotalBuyerCnt,
|
||||
DirectAttrSellerNewBuyerCnt: entity.DirectAttrSellerNewBuyerCnt,
|
||||
T30AttrSellerTotalBuyerCnt: entity.T30AttrSellerTotalBuyerCnt,
|
||||
T3Gmv: entity.T3Gmv,
|
||||
T3OrderCnt: entity.T3OrderCnt,
|
||||
T3Roi: entity.T3Roi,
|
||||
T7IndirectOrderAmt: entity.T7IndirectOrderAmt,
|
||||
T7IndirectOrderCnt: entity.T7IndirectOrderCnt,
|
||||
FansT0GmvPerFans: entity.FansT0GmvPerFans,
|
||||
FansT3GmvPerFans: entity.FansT3GmvPerFans,
|
||||
FansT7GmvPerFans: entity.FansT7GmvPerFans,
|
||||
FansT15GmvPerFans: entity.FansT15GmvPerFans,
|
||||
FansT30GmvPerFans: entity.FansT30GmvPerFans,
|
||||
RecoFansCost: entity.RecoFansCost,
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: entity.QcpxWhiteboxDirectOrderPaymentAmt,
|
||||
QcpxWhiteboxDirectOrderCnt: entity.QcpxWhiteboxDirectOrderCnt,
|
||||
FansT0Gmv: entity.FansT0Gmv,
|
||||
FansT1Gmv: entity.FansT1Gmv,
|
||||
FansT7Gmv: entity.FansT7Gmv,
|
||||
FansT15Gmv: entity.FansT15Gmv,
|
||||
FansT30Gmv: entity.FansT30Gmv,
|
||||
FansT0Roi: entity.FansT0Roi,
|
||||
FansT1Roi: entity.FansT1Roi,
|
||||
FansT7Roi: entity.FansT7Roi,
|
||||
FansT15Roi: entity.FansT15Roi,
|
||||
FansT30Roi: entity.FansT30Roi,
|
||||
T0ShopNewBuyerOrderPaymentAmt: entity.T0ShopNewBuyerOrderPaymentAmt,
|
||||
T1ShopNewBuyerOrderPaymentAmt: entity.T1ShopNewBuyerOrderPaymentAmt,
|
||||
T3ShopNewBuyerOrderPaymentAmt: entity.T3ShopNewBuyerOrderPaymentAmt,
|
||||
T7ShopNewBuyerOrderPaymentAmt: entity.T7ShopNewBuyerOrderPaymentAmt,
|
||||
T15ShopNewBuyerOrderPaymentAmt: entity.T15ShopNewBuyerOrderPaymentAmt,
|
||||
T30ShopNewBuyerOrderPaymentAmt: entity.T30ShopNewBuyerOrderPaymentAmt,
|
||||
T0ShopNewBuyerOrderCnt: entity.T0ShopNewBuyerOrderCnt,
|
||||
T1ShopNewBuyerOrderCnt: entity.T1ShopNewBuyerOrderCnt,
|
||||
T3ShopNewBuyerOrderCnt: entity.T3ShopNewBuyerOrderCnt,
|
||||
T7ShopNewBuyerOrderCnt: entity.T7ShopNewBuyerOrderCnt,
|
||||
T15ShopNewBuyerOrderCnt: entity.T15ShopNewBuyerOrderCnt,
|
||||
T30ShopNewBuyerOrderCnt: entity.T30ShopNewBuyerOrderCnt,
|
||||
T1NewBuyerRepurchaseRatio: entity.T1NewBuyerRepurchaseRatio,
|
||||
T3NewBuyerRepurchaseRatio: entity.T3NewBuyerRepurchaseRatio,
|
||||
T7NewBuyerRepurchaseRatio: entity.T7NewBuyerRepurchaseRatio,
|
||||
T15NewBuyerRepurchaseRatio: entity.T15NewBuyerRepurchaseRatio,
|
||||
T30NewBuyerRepurchaseRatio: entity.T30NewBuyerRepurchaseRatio,
|
||||
T0ShopNewBuyerRoi: entity.T0ShopNewBuyerRoi,
|
||||
T1ShopNewBuyerRoi: entity.T1ShopNewBuyerRoi,
|
||||
T3ShopNewBuyerRoi: entity.T3ShopNewBuyerRoi,
|
||||
T7ShopNewBuyerRoi: entity.T7ShopNewBuyerRoi,
|
||||
T15ShopNewBuyerRoi: entity.T15ShopNewBuyerRoi,
|
||||
T30ShopNewBuyerRoi: entity.T30ShopNewBuyerRoi,
|
||||
CreateCardOrderCnt: entity.CreateCardOrderCnt,
|
||||
ForwardTsCreateCardOrderCnt: entity.ForwardTsCreateCardOrderCnt,
|
||||
CreateCardOrderCost: entity.CreateCardOrderCost,
|
||||
ForwardTsCreateCardOrderCost: entity.ForwardTsCreateCardOrderCost,
|
||||
ActivateCardOrderCnt: entity.ActivateCardOrderCnt,
|
||||
ForwardTsActivateCardOrderCnt: entity.ForwardTsActivateCardOrderCnt,
|
||||
ActivateCardOrderCost: entity.ActivateCardOrderCost,
|
||||
ForwardTsActivateCardOrderCost: entity.ForwardTsActivateCardOrderCost,
|
||||
CreateCardOrderRatio: entity.CreateCardOrderRatio,
|
||||
ForwardTsCreateCardOrderRatio: entity.ForwardTsCreateCardOrderRatio,
|
||||
ActivateCardOrderCntRatio: entity.ActivateCardOrderCntRatio,
|
||||
ForwardTsActivateCardOrderRatio: entity.ForwardTsActivateCardOrderRatio,
|
||||
LivePlayCnt: entity.LivePlayCnt,
|
||||
ItemEntranceClkCnt: entity.ItemEntranceClkCnt,
|
||||
ShowCnt: entity.ShowCnt,
|
||||
ReportDateStr: entity.ReportDateStr,
|
||||
CampaignId: entity.CampaignId,
|
||||
CampaignName: entity.CampaignName,
|
||||
UnitId: entity.UnitId,
|
||||
UnitName: entity.UnitName,
|
||||
CreativeId: entity.CreativeId,
|
||||
CreativeName: entity.CreativeName,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
)
|
||||
|
||||
var PopulationReportService = new(populationReportService)
|
||||
|
||||
type populationReportService struct{}
|
||||
|
||||
// Create 创建人群报表数据
|
||||
func (s *populationReportService) Create(ctx context.Context, req *dto.PopulationReportItem) (*dto.CreatePopulationReportRes, error) {
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
id, err := dao.PopulationReport.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &dto.CreatePopulationReportRes{Id: id}, nil
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建人群报表数据
|
||||
func (s *populationReportService) BatchCreate(ctx context.Context, req []*dto.PopulationReportItem) (*dto.BatchCreatePopulationReportRes, error) {
|
||||
if len(req) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
successCount, failCount, failedIndexes, err := dao.PopulationReport.BatchInsert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &dto.BatchCreatePopulationReportRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// List 查询人群报表数据列表
|
||||
func (s *populationReportService) List(ctx context.Context, req *dto.ListPopulationReportReq) (*dto.ListPopulationReportRes, error) {
|
||||
list, total, err := dao.PopulationReport.List(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 转换为 DTO
|
||||
items := s.convertToDTOs(list)
|
||||
|
||||
return &dto.ListPopulationReportRes{
|
||||
List: items,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// convertToDTOs 将实体列表转换为 DTO 列表
|
||||
func (s *populationReportService) convertToDTOs(entities []*entity.PopulationReport) []*dto.PopulationReportItem {
|
||||
items := make([]*dto.PopulationReportItem, 0, len(entities))
|
||||
for _, e := range entities {
|
||||
items = append(items, s.convertToDTO(e))
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
// convertToDTO 将实体转换为 DTO
|
||||
func (s *populationReportService) convertToDTO(e *entity.PopulationReport) *dto.PopulationReportItem {
|
||||
return &dto.PopulationReportItem{
|
||||
PhotoName: e.PhotoName,
|
||||
PhotoIdStr: e.PhotoIdStr,
|
||||
PhotoId: e.PhotoId,
|
||||
ModPriceSegment: e.ModPriceSegment,
|
||||
AgeSegment: e.AgeSegment,
|
||||
Province: e.Province,
|
||||
Gender: e.Gender,
|
||||
MerchantProductId: e.MerchantProductId,
|
||||
ReportDateStr: e.ReportDateStr,
|
||||
CampaignId: e.CampaignId,
|
||||
CampaignName: e.CampaignName,
|
||||
UnitId: e.UnitId,
|
||||
UnitName: e.UnitName,
|
||||
CreativeId: e.CreativeId,
|
||||
CreativeName: e.CreativeName,
|
||||
AdPhotoPlayedFiveRatio: e.AdPhotoPlayedFiveRatio,
|
||||
AdPhotoPlayedThreeRatio: e.AdPhotoPlayedThreeRatio,
|
||||
OrderSubmitRoi: e.OrderSubmitRoi,
|
||||
OrderSubmitAmt: e.OrderSubmitAmt,
|
||||
EventOrderSubmitCost: e.EventOrderSubmitCost,
|
||||
EventOrderSubmit: e.EventOrderSubmit,
|
||||
EventOrderPaidRoi: e.EventOrderPaidRoi,
|
||||
EventAppInvoked: e.EventAppInvoked,
|
||||
EventAddShoppingCart: e.EventAddShoppingCart,
|
||||
ConversionNumCost: e.ConversionNumCost,
|
||||
AdEffectivePlayNum: e.AdEffectivePlayNum,
|
||||
AdItemClick: e.AdItemClick,
|
||||
CostTotal: e.CostTotal,
|
||||
AdShow: e.AdShow,
|
||||
AdShow1kCost: e.AdShow1kCost,
|
||||
Impression: e.Impression,
|
||||
PhotoClick: e.PhotoClick,
|
||||
PhotoClickRatio: e.PhotoClickRatio,
|
||||
Click: e.Click,
|
||||
ActionbarClick: e.ActionbarClick,
|
||||
ActionbarClickCost: e.ActionbarClickCost,
|
||||
EspClickRatio: e.EspClickRatio,
|
||||
ActionRatio: e.ActionRatio,
|
||||
AdItemClickCount: e.AdItemClickCount,
|
||||
EspLivePlayedSeconds: e.EspLivePlayedSeconds,
|
||||
PlayedThreeSeconds: e.PlayedThreeSeconds,
|
||||
Play3sRatio: e.Play3sRatio,
|
||||
PlayedFiveSeconds: e.PlayedFiveSeconds,
|
||||
Play5sRatio: e.Play5sRatio,
|
||||
PlayedEnd: e.PlayedEnd,
|
||||
PlayEndRatio: e.PlayEndRatio,
|
||||
Share: e.Share,
|
||||
Comment: e.Comment,
|
||||
Likes: e.Likes,
|
||||
Report: e.Report,
|
||||
Block: e.Block,
|
||||
ItemNegative: e.ItemNegative,
|
||||
LiveShare: e.LiveShare,
|
||||
LiveComment: e.LiveComment,
|
||||
LiveReward: e.LiveReward,
|
||||
EffectivePlayCount: e.EffectivePlayCount,
|
||||
EffectivePlayRatio: e.EffectivePlayRatio,
|
||||
ConversionNum: e.ConversionNum,
|
||||
ConversionCostEsp: e.ConversionCostEsp,
|
||||
Roi: e.Roi,
|
||||
Gmv: e.Gmv,
|
||||
T0Gmv: e.T0Gmv,
|
||||
T1Gmv: e.T1Gmv,
|
||||
T3Gmv: e.T3Gmv,
|
||||
T7Gmv: e.T7Gmv,
|
||||
T15Gmv: e.T15Gmv,
|
||||
T30Gmv: e.T30Gmv,
|
||||
T0Roi: e.T0Roi,
|
||||
T1Roi: e.T1Roi,
|
||||
T3Roi: e.T3Roi,
|
||||
T7Roi: e.T7Roi,
|
||||
T15Roi: e.T15Roi,
|
||||
T30Roi: e.T30Roi,
|
||||
PaiedOrder: e.PaiedOrder,
|
||||
OrderRatio: e.OrderRatio,
|
||||
T0OrderCnt: e.T0OrderCnt,
|
||||
T0OrderCntCost: e.T0OrderCntCost,
|
||||
T0OrderCntRatio: e.T0OrderCntRatio,
|
||||
T1OrderCnt: e.T1OrderCnt,
|
||||
T7OrderCnt: e.T7OrderCnt,
|
||||
T15OrderCnt: e.T15OrderCnt,
|
||||
T30OrderCnt: e.T30OrderCnt,
|
||||
MerchantRecoFans: e.MerchantRecoFans,
|
||||
T1Retention: e.T1Retention,
|
||||
T7Retention: e.T7Retention,
|
||||
T15Retention: e.T15Retention,
|
||||
T30Retention: e.T30Retention,
|
||||
T1RetentionRatio: e.T1RetentionRatio,
|
||||
T7RetentionRatio: e.T7RetentionRatio,
|
||||
T15RetentionRatio: e.T15RetentionRatio,
|
||||
T30RetentionRatio: e.T30RetentionRatio,
|
||||
ReservationSuccess: e.ReservationSuccess,
|
||||
ReservationCost: e.ReservationCost,
|
||||
StandardLivePlayedStarted: e.StandardLivePlayedStarted,
|
||||
AdLivePlayCnt: e.AdLivePlayCnt,
|
||||
AdLivePlayCntCost: e.AdLivePlayCntCost,
|
||||
LiveAudienceCost: e.LiveAudienceCost,
|
||||
LiveEventGoodsView: e.LiveEventGoodsView,
|
||||
GoodsClickRatio: e.GoodsClickRatio,
|
||||
DirectAttrPlatNewBuyerCnt: e.DirectAttrPlatNewBuyerCnt,
|
||||
T30AttrPlatTotalBuyerCnt: e.T30AttrPlatTotalBuyerCnt,
|
||||
DirectAttrSellerNewBuyerCnt: e.DirectAttrSellerNewBuyerCnt,
|
||||
T30AttrSellerTotalBuyerCnt: e.T30AttrSellerTotalBuyerCnt,
|
||||
T7IndirectOrderAmt: e.T7IndirectOrderAmt,
|
||||
T7IndirectOrderCnt: e.T7IndirectOrderCnt,
|
||||
FansT0GmvPerFans: e.FansT0GmvPerFans,
|
||||
FansT3GmvPerFans: e.FansT3GmvPerFans,
|
||||
FansT7GmvPerFans: e.FansT7GmvPerFans,
|
||||
FansT15GmvPerFans: e.FansT15GmvPerFans,
|
||||
FansT30GmvPerFans: e.FansT30GmvPerFans,
|
||||
RecoFansCost: e.RecoFansCost,
|
||||
QcpxWhiteboxDirectOrderPaymentAmt: e.QcpxWhiteboxDirectOrderPaymentAmt,
|
||||
QcpxWhiteboxDirectOrderCnt: e.QcpxWhiteboxDirectOrderCnt,
|
||||
FansT0Gmv: e.FansT0Gmv,
|
||||
FansT1Gmv: e.FansT1Gmv,
|
||||
FansT7Gmv: e.FansT7Gmv,
|
||||
FansT15Gmv: e.FansT15Gmv,
|
||||
FansT30Gmv: e.FansT30Gmv,
|
||||
FansT0Roi: e.FansT0Roi,
|
||||
FansT1Roi: e.FansT1Roi,
|
||||
FansT7Roi: e.FansT7Roi,
|
||||
FansT15Roi: e.FansT15Roi,
|
||||
FansT30Roi: e.FansT30Roi,
|
||||
T0ShopNewBuyerOrderPaymentAmt: e.T0ShopNewBuyerOrderPaymentAmt,
|
||||
T1ShopNewBuyerOrderPaymentAmt: e.T1ShopNewBuyerOrderPaymentAmt,
|
||||
T3ShopNewBuyerOrderPaymentAmt: e.T3ShopNewBuyerOrderPaymentAmt,
|
||||
T7ShopNewBuyerOrderPaymentAmt: e.T7ShopNewBuyerOrderPaymentAmt,
|
||||
T15ShopNewBuyerOrderPaymentAmt: e.T15ShopNewBuyerOrderPaymentAmt,
|
||||
T30ShopNewBuyerOrderPaymentAmt: e.T30ShopNewBuyerOrderPaymentAmt,
|
||||
T0ShopNewBuyerOrderCnt: e.T0ShopNewBuyerOrderCnt,
|
||||
T1ShopNewBuyerOrderCnt: e.T1ShopNewBuyerOrderCnt,
|
||||
T3ShopNewBuyerOrderCnt: e.T3ShopNewBuyerOrderCnt,
|
||||
T7ShopNewBuyerOrderCnt: e.T7ShopNewBuyerOrderCnt,
|
||||
T15ShopNewBuyerOrderCnt: e.T15ShopNewBuyerOrderCnt,
|
||||
T30ShopNewBuyerOrderCnt: e.T30ShopNewBuyerOrderCnt,
|
||||
T1NewBuyerRepurchaseRatio: e.T1NewBuyerRepurchaseRatio,
|
||||
T3NewBuyerRepurchaseRatio: e.T3NewBuyerRepurchaseRatio,
|
||||
T7NewBuyerRepurchaseRatio: e.T7NewBuyerRepurchaseRatio,
|
||||
T15NewBuyerRepurchaseRatio: e.T15NewBuyerRepurchaseRatio,
|
||||
T30NewBuyerRepurchaseRatio: e.T30NewBuyerRepurchaseRatio,
|
||||
T0ShopNewBuyerRoi: e.T0ShopNewBuyerRoi,
|
||||
T1ShopNewBuyerRoi: e.T1ShopNewBuyerRoi,
|
||||
T3ShopNewBuyerRoi: e.T3ShopNewBuyerRoi,
|
||||
T7ShopNewBuyerRoi: e.T7ShopNewBuyerRoi,
|
||||
T15ShopNewBuyerRoi: e.T15ShopNewBuyerRoi,
|
||||
T30ShopNewBuyerRoi: e.T30ShopNewBuyerRoi,
|
||||
CreateCardOrderCnt: e.CreateCardOrderCnt,
|
||||
ForwardTsCreateCardOrderCnt: e.ForwardTsCreateCardOrderCnt,
|
||||
CreateCardOrderCost: e.CreateCardOrderCost,
|
||||
ForwardTsCreateCardOrderCost: e.ForwardTsCreateCardOrderCost,
|
||||
ActivateCardOrderCnt: e.ActivateCardOrderCnt,
|
||||
ForwardTsActivateCardOrderCnt: e.ForwardTsActivateCardOrderCnt,
|
||||
ActivateCardOrderCost: e.ActivateCardOrderCost,
|
||||
ForwardTsActivateCardOrderCost: e.ForwardTsActivateCardOrderCost,
|
||||
CreateCardOrderRatio: e.CreateCardOrderRatio,
|
||||
ForwardTsCreateCardOrderRatio: e.ForwardTsCreateCardOrderRatio,
|
||||
ActivateCardOrderCntRatio: e.ActivateCardOrderCntRatio,
|
||||
ForwardTsActivateCardOrderRatio: e.ForwardTsActivateCardOrderRatio,
|
||||
LivePlayCnt: e.LivePlayCnt,
|
||||
ItemEntranceClkCnt: e.ItemEntranceClkCnt,
|
||||
ShowCnt: e.ShowCnt,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type storewideReportService struct{}
|
||||
|
||||
// StorewideReportSum 广告效果指标表服务
|
||||
var StorewideReportSum = new(storewideReportService)
|
||||
|
||||
// Create 创建广告效果指标表
|
||||
func (s *storewideReportService) Create(ctx context.Context, req *dto.StorewideReportSumItem) (res *dto.CreateStorewideReportSumRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.StorewideReportSum.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateStorewideReportSumRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标表
|
||||
func (s *storewideReportService) BatchCreate(ctx context.Context, req *dto.BatchCreateStorewideReportSumReq) (res *dto.BatchCreateStorewideReportSumRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.StorewideReportSum.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateStorewideReportSumRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Create 创建广告效果指标表
|
||||
func (s *storewideReportService) CreateDetail(ctx context.Context, req *dto.StorewideReportDetailItem) (res *dto.CreateStorewideReportDetailRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.StorewideReportDetail.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateStorewideReportDetailRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标表
|
||||
func (s *storewideReportService) BatchCreateDetail(ctx context.Context, req *dto.BatchCreateStorewideReportDetailReq) (res *dto.BatchCreateStorewideReportDetailRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.StorewideReportDetail.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateStorewideReportDetailRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
entity "cid/model/entity/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type taskReportService struct{}
|
||||
|
||||
// TaskReport 调控任务数据服务
|
||||
var TaskReport = new(taskReportService)
|
||||
|
||||
// Create 创建调控任务数据
|
||||
func (s *taskReportService) Create(ctx context.Context, req *dto.TaskReportItem) (res *dto.CreateTaskReportRes, err error) {
|
||||
// 验证必要字段
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.TaskReport.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateTaskReportRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建调控任务数据
|
||||
func (s *taskReportService) BatchCreate(ctx context.Context, req *dto.BatchCreateTaskReportReq) (res *dto.BatchCreateTaskReportRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
// 验证数据
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
// 批量插入数据库
|
||||
successCount, failCount, failedIndexes, err := dao.TaskReport.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateTaskReportRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// List 获取调控任务数据列表
|
||||
func (s *taskReportService) List(ctx context.Context, req *dto.ListTaskReportReq) (res *dto.ListTaskReportRes, err error) {
|
||||
list, total, err := dao.TaskReport.List(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 转换为 DTO 格式
|
||||
items := make([]*dto.TaskReportItem, len(list))
|
||||
for i, item := range list {
|
||||
items[i] = convertEntityToDTO(item)
|
||||
}
|
||||
|
||||
res = &dto.ListTaskReportRes{
|
||||
List: items,
|
||||
Total: total,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// convertEntityToDTO 将实体转换为 DTO
|
||||
func convertEntityToDTO(entity *entity.TaskReport) *dto.TaskReportItem {
|
||||
return &dto.TaskReportItem{
|
||||
ItemOrderConversionRatio: entity.ItemOrderConversionRatio,
|
||||
ItemCardClickRatio: entity.ItemCardClickRatio,
|
||||
ItemCardClkCnt: entity.ItemCardClkCnt,
|
||||
LivePlayCntCost: entity.LivePlayCntCost,
|
||||
AdMerchantFollowCost: entity.AdMerchantFollowCost,
|
||||
AdMerchantFollow: entity.AdMerchantFollow,
|
||||
NetT0OrderCnt: entity.NetT0OrderCnt,
|
||||
NetT0Roi: entity.NetT0Roi,
|
||||
NetT0Gmv: entity.NetT0Gmv,
|
||||
PhotoName: entity.PhotoName,
|
||||
PhotoId: entity.PhotoId,
|
||||
CostTotal: entity.CostTotal,
|
||||
T0Gmv: entity.T0Gmv,
|
||||
T0Roi: entity.T0Roi,
|
||||
T0OrderCnt: entity.T0OrderCnt,
|
||||
T0OrderCntCost: entity.T0OrderCntCost,
|
||||
FansT0Gmv: entity.FansT0Gmv,
|
||||
FansT1Gmv: entity.FansT1Gmv,
|
||||
FansT7Gmv: entity.FansT7Gmv,
|
||||
FansT15Gmv: entity.FansT15Gmv,
|
||||
FansT30Gmv: entity.FansT30Gmv,
|
||||
FansT0Roi: entity.FansT0Roi,
|
||||
FansT1Roi: entity.FansT1Roi,
|
||||
FansT7Roi: entity.FansT7Roi,
|
||||
FansT15Roi: entity.FansT15Roi,
|
||||
FansT30Roi: entity.FansT30Roi,
|
||||
LivePlayCnt: entity.LivePlayCnt,
|
||||
ItemEntranceClkCnt: entity.ItemEntranceClkCnt,
|
||||
ShowCnt: entity.ShowCnt,
|
||||
ReportDateStr: entity.ReportDateStr,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package copydata
|
||||
|
||||
import (
|
||||
dao "cid/dao/copydata"
|
||||
dto "cid/model/dto/copydata"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type unitReportSumService struct{}
|
||||
|
||||
// UnitReportSumService 广告效果指标服务
|
||||
var UnitReportSumService = new(unitReportSumService)
|
||||
|
||||
// Create 创建广告效果指标
|
||||
func (s *unitReportSumService) Create(ctx context.Context, req *dto.UnitReportSumItem) (res *dto.CreateUnitReportSumRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
id, err := dao.UnitReportSum.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateUnitReportSumRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标
|
||||
func (s *unitReportSumService) BatchCreate(ctx context.Context, req *dto.BatchCreateUnitReportSumReq) (res *dto.BatchCreateUnitReportSumRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
successCount, failCount, failedIndexes, err := dao.UnitReportSum.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateUnitReportSumRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Create 创建广告效果指标详情
|
||||
func (s *unitReportSumService) CreateDetail(ctx context.Context, req *dto.UnitReportDetailItem) (res *dto.CreateUnitReportDetailRes, err error) {
|
||||
if req.ReportDateStr == "" {
|
||||
return nil, errors.New("报告日期不能为空")
|
||||
}
|
||||
|
||||
id, err := dao.UnitReportDetail.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateUnitReportDetailRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// BatchCreate 批量创建广告效果指标详情
|
||||
func (s *unitReportSumService) BatchCreateDetail(ctx context.Context, req *dto.BatchCreateUnitReportDetailReq) (res *dto.BatchCreateUnitReportDetailRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
if len(req.Items) == 0 {
|
||||
return nil, errors.New("批量创建数据不能为空")
|
||||
}
|
||||
|
||||
successCount, failCount, failedIndexes, err := dao.UnitReportDetail.BatchInsert(ctx, req.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.BatchCreateUnitReportDetailRes{
|
||||
SuccessCount: successCount,
|
||||
FailCount: failCount,
|
||||
FailedItems: failedIndexes,
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,305 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
api_feature "cid/consts/api-feature"
|
||||
dao "cid/dao/dict"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/olekukonko/errors"
|
||||
)
|
||||
|
||||
type datasourcePlatformService struct{}
|
||||
|
||||
// DatasourcePlatform 数据源平台服务
|
||||
var DatasourcePlatform = new(datasourcePlatformService)
|
||||
|
||||
// Create 创建数据源平台
|
||||
func (s *datasourcePlatformService) Create(ctx context.Context, req *dto.CreateDatasourcePlatformReq) (res *dto.CreateDatasourcePlatformRes, err error) {
|
||||
// 检查平台编码是否重复
|
||||
exists, err := dao.DatasourcePlatform.ExistsByPlatformCode(ctx, req.PlatformCode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if exists {
|
||||
return nil, errors.New("平台编码已存在")
|
||||
}
|
||||
|
||||
// 验证认证类型相关的必填字段
|
||||
if err = s.validateAuthFields(req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 设置创建时间为当前时间
|
||||
if req.CreatedAt == "" {
|
||||
req.CreatedAt = strconv.FormatInt(time.Now().Unix(), 10)
|
||||
}
|
||||
req.UpdatedAt = req.CreatedAt
|
||||
|
||||
// 插入数据库
|
||||
id, err := dao.DatasourcePlatform.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.CreateDatasourcePlatformRes{
|
||||
Id: id,
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// List 获取数据源平台列表
|
||||
func (s *datasourcePlatformService) List(ctx context.Context, req *dto.ListDatasourcePlatformReq) (res *dto.ListDatasourcePlatformRes, err error) {
|
||||
platformList, total, err := dao.DatasourcePlatform.List(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 组装响应数据
|
||||
list := make([]dto.DatasourcePlatformItem, 0, len(platformList))
|
||||
for _, item := range platformList {
|
||||
list = append(list, dto.DatasourcePlatformItem{
|
||||
Id: item.ID,
|
||||
PlatformCode: item.PlatformCode,
|
||||
PlatformName: item.PlatformName,
|
||||
Description: item.Description,
|
||||
Status: api_feature.PlatformStatus(item.Status),
|
||||
StatusName: s.getStatusName(api_feature.PlatformStatus(item.Status)),
|
||||
ApiBaseUrl: item.ApiBaseUrl,
|
||||
AuthType: item.AuthType,
|
||||
AuthTypeName: s.getAuthTypeName(item.AuthType),
|
||||
RateLimitPerMinute: item.RateLimitPerMinute,
|
||||
RateLimitPerHour: item.RateLimitPerHour,
|
||||
ConcurrencyLimit: item.ConcurrencyLimit,
|
||||
RequestTimeoutMs: item.RequestTimeoutMs,
|
||||
MaxRetries: item.MaxRetries,
|
||||
RetryDelayMs: item.RetryDelayMs,
|
||||
CreatedBy: item.CreatedBy,
|
||||
CreatedAt: item.CreatedAt.Unix(),
|
||||
UpdatedBy: item.UpdatedBy,
|
||||
UpdatedAt: item.UpdatedAt.Unix(),
|
||||
})
|
||||
}
|
||||
|
||||
res = &dto.ListDatasourcePlatformRes{
|
||||
List: list,
|
||||
Total: total,
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// GetOne 获取单个数据源平台
|
||||
func (s *datasourcePlatformService) GetOne(ctx context.Context, req *dto.GetDatasourcePlatformReq) (res *dto.GetDatasourcePlatformRes, err error) {
|
||||
platform, err := dao.DatasourcePlatform.GetOne(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if platform == nil {
|
||||
return nil, errors.New("数据源平台不存在")
|
||||
}
|
||||
|
||||
var platformEntity *entity.DatasourcePlatform
|
||||
if err = gconv.Struct(platform, &platformEntity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 隐藏敏感信息
|
||||
platformEntity.Token = ""
|
||||
platformEntity.ClientSecret = ""
|
||||
platformEntity.ApiKey = ""
|
||||
|
||||
return &dto.GetDatasourcePlatformRes{
|
||||
DatasourcePlatform: platformEntity,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetByPlatformCode 根据平台编码获取数据源平台
|
||||
func (s *datasourcePlatformService) GetByPlatformCode(ctx context.Context, platformCode string) (res *entity.DatasourcePlatform, err error) {
|
||||
platform, err := dao.DatasourcePlatform.GetByPlatformCode(ctx, platformCode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if platform == nil {
|
||||
return nil, errors.New("数据源平台不存在")
|
||||
}
|
||||
return platform, nil
|
||||
}
|
||||
|
||||
// Update 更新数据源平台
|
||||
func (s *datasourcePlatformService) Update(ctx context.Context, req *dto.UpdateDatasourcePlatformReq) (err error) {
|
||||
// 检查平台是否存在
|
||||
exist, err := dao.DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: req.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exist == nil {
|
||||
return errors.New("数据源平台不存在")
|
||||
}
|
||||
|
||||
// 如果修改了平台编码,检查新编码是否重复
|
||||
if req.PlatformCode != "" && req.PlatformCode != exist.PlatformCode {
|
||||
exists, err := dao.DatasourcePlatform.ExistsByPlatformCode(ctx, req.PlatformCode, req.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exists {
|
||||
return errors.New("平台编码已存在")
|
||||
}
|
||||
}
|
||||
|
||||
// 验证认证类型相关的必填字段
|
||||
if req.AuthType != "" {
|
||||
authReq := &dto.CreateDatasourcePlatformReq{
|
||||
AuthType: req.AuthType,
|
||||
Token: req.Token,
|
||||
ApiKey: req.ApiKey,
|
||||
ClientId: req.ClientId,
|
||||
ClientSecret: req.ClientSecret,
|
||||
}
|
||||
if err = s.validateAuthFields(authReq); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 设置更新时间
|
||||
req.UpdatedAt = strconv.FormatInt(time.Now().Unix(), 10)
|
||||
_, err = dao.DatasourcePlatform.Update(ctx, req)
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateStatus 更新数据源平台状态
|
||||
func (s *datasourcePlatformService) UpdateStatus(ctx context.Context, req *dto.UpdateDatasourcePlatformStatusReq) (err error) {
|
||||
// 检查平台是否存在
|
||||
exist, err := dao.DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: req.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exist == nil {
|
||||
return errors.New("数据源平台不存在")
|
||||
}
|
||||
|
||||
// 如果状态没有变化,直接返回
|
||||
if string(exist.Status) == req.Status.String() {
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err = dao.DatasourcePlatform.UpdateStatus(ctx, req.Id, req.Status.String(), req.UpdatedBy)
|
||||
return err
|
||||
}
|
||||
|
||||
// Delete 删除数据源平台
|
||||
func (s *datasourcePlatformService) Delete(ctx context.Context, req *dto.DeleteDatasourcePlatformReq) (err error) {
|
||||
// 检查平台是否存在
|
||||
exist, err := dao.DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: req.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exist == nil {
|
||||
return errors.New("数据源平台不存在")
|
||||
}
|
||||
|
||||
// TODO: 检查是否存在关联的数据,防止误删
|
||||
// 例如:检查该平台是否有关联的接口配置等
|
||||
|
||||
_, err = dao.DatasourcePlatform.Delete(ctx, req)
|
||||
return err
|
||||
}
|
||||
|
||||
// GetStatistics 获取平台统计信息
|
||||
func (s *datasourcePlatformService) GetStatistics(ctx context.Context) (res *dto.GetPlatformStatisticsRes, err error) {
|
||||
stats, err := dao.DatasourcePlatform.GetPlatformStatistics(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res = &dto.GetPlatformStatisticsRes{
|
||||
TotalPlatforms: int(stats["totalPlatforms"]),
|
||||
ActivePlatforms: int(stats["activePlatforms"]),
|
||||
InactivePlatforms: int(stats["inactivePlatforms"]),
|
||||
TokenAuthPlatforms: int(stats["TOKENAuthPlatforms"]),
|
||||
ApiKeyAuthPlatforms: int(stats["API_KEYAuthPlatforms"]),
|
||||
OAuth2AuthPlatforms: int(stats["OAUTH2AuthPlatforms"]),
|
||||
BasicAuthPlatforms: int(stats["BASICAuthPlatforms"]),
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// ListActivePlatforms 获取所有启用的平台
|
||||
func (s *datasourcePlatformService) ListActivePlatforms(ctx context.Context) (platforms []entity.DatasourcePlatform, err error) {
|
||||
return dao.DatasourcePlatform.ListActivePlatforms(ctx)
|
||||
}
|
||||
|
||||
// validateAuthFields 验证认证类型相关的必填字段
|
||||
func (s *datasourcePlatformService) validateAuthFields(req *dto.CreateDatasourcePlatformReq) error {
|
||||
switch req.AuthType {
|
||||
case "TOKEN":
|
||||
if req.Token == "" {
|
||||
return errors.New("TOKEN认证类型必须填写token字段")
|
||||
}
|
||||
case "API_KEY":
|
||||
if req.ApiKey == "" {
|
||||
return errors.New("API_KEY认证类型必须填写apiKey字段")
|
||||
}
|
||||
case "OAUTH2":
|
||||
if req.ClientId == "" || req.ClientSecret == "" {
|
||||
return errors.New("OAUTH2认证类型必须填写clientId和clientSecret字段")
|
||||
}
|
||||
case "BASIC":
|
||||
// BASIC认证通常需要用户名和密码,这里可以添加相应验证
|
||||
if req.Token == "" && req.ApiKey == "" {
|
||||
return errors.New("BASIC认证类型需要填写认证信息")
|
||||
}
|
||||
default:
|
||||
return errors.New("不支持的认证类型")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// performConnectionTest 执行连接测试(示例实现)
|
||||
func (s *datasourcePlatformService) performConnectionTest(platform *entity.DatasourcePlatform) (success bool, message string) {
|
||||
// 这里应该实现实际的连接测试逻辑
|
||||
// 例如:发送HTTP请求到api_base_url,验证响应
|
||||
|
||||
// 暂时返回模拟结果
|
||||
return true, "连接测试成功"
|
||||
}
|
||||
|
||||
// getStatusName 获取状态名称
|
||||
func (s *datasourcePlatformService) getStatusName(status api_feature.PlatformStatus) string {
|
||||
statusNames := map[api_feature.PlatformStatus]string{
|
||||
api_feature.PlatformStatusActive: "启用",
|
||||
api_feature.PlatformStatusInactive: "停用",
|
||||
}
|
||||
if name, ok := statusNames[status]; ok {
|
||||
return name
|
||||
}
|
||||
return string(status)
|
||||
}
|
||||
|
||||
// getAuthTypeName 获取认证类型名称
|
||||
func (s *datasourcePlatformService) getAuthTypeName(authType string) string {
|
||||
authTypeNames := map[string]string{
|
||||
"TOKEN": "Token认证",
|
||||
"API_KEY": "API Key认证",
|
||||
"OAUTH2": "OAuth2认证",
|
||||
"BASIC": "Basic认证",
|
||||
}
|
||||
if name, ok := authTypeNames[authType]; ok {
|
||||
return name
|
||||
}
|
||||
return authType
|
||||
}
|
||||
|
||||
// BatchUpdateStatus 批量更新平台状态
|
||||
func (s *datasourcePlatformService) BatchUpdateStatus(ctx context.Context, ids []int64, status string, updatedBy string) (err error) {
|
||||
if len(ids) == 0 {
|
||||
return errors.New("请选择要更新的平台")
|
||||
}
|
||||
|
||||
_, err = dao.DatasourcePlatform.BatchUpdateStatus(ctx, ids, status, updatedBy)
|
||||
return err
|
||||
}
|
||||
@@ -0,0 +1,396 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts "cid/consts/dict"
|
||||
"cid/dao/dict"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"gitea.com/red-future/common/beans"
|
||||
)
|
||||
|
||||
type fieldMappingConfigService struct{}
|
||||
|
||||
// FieldMappingConfig 字段映射配置服务
|
||||
var FieldMappingConfig = new(fieldMappingConfigService)
|
||||
|
||||
// Create 创建字段映射配置
|
||||
func (s *fieldMappingConfigService) Create(ctx context.Context, req *dto.CreateFieldMappingConfigReq) (res *dto.CreateFieldMappingConfigRes, err error) {
|
||||
// 验证必填字段
|
||||
if err = s.validateRequiredFields(req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 检查重复配置
|
||||
exists, err := dict.FieldMappingConfig.CheckDuplicate(ctx, req.VendorName, req.ApiName, req.SourceField, req.TargetField, 0)
|
||||
if err != nil {
|
||||
return nil, errors.New("检查配置重复性失败")
|
||||
}
|
||||
if exists {
|
||||
return nil, errors.New("相同厂商、接口、源字段和目标字段的配置已存在")
|
||||
}
|
||||
|
||||
// 验证转换参数
|
||||
if err = s.validateTransformParams(req.TransformType, req.TransformParams); err != nil {
|
||||
return nil, fmt.Errorf("转换参数验证失败: %v", err)
|
||||
}
|
||||
|
||||
// 验证业务域
|
||||
if req.BusinessDomain != "" && !s.isValidBusinessDomain(req.BusinessDomain) {
|
||||
return nil, errors.New("无效的业务域")
|
||||
}
|
||||
|
||||
// 验证生效时间和失效时间
|
||||
if req.EffectiveDate != nil && req.ExpiryDate != nil && req.EffectiveDate.After(*req.ExpiryDate) {
|
||||
return nil, errors.New("生效时间不能晚于失效时间")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dict.FieldMappingConfig.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return nil, errors.New("创建配置失败")
|
||||
}
|
||||
|
||||
res = &dto.CreateFieldMappingConfigRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// List 获取字段映射配置列表
|
||||
func (s *fieldMappingConfigService) List(ctx context.Context, req *dto.ListFieldMappingConfigReq) (res *dto.ListFieldMappingConfigRes, err error) {
|
||||
configs, total, err := dict.FieldMappingConfig.List(ctx, req)
|
||||
if err != nil {
|
||||
return nil, errors.New("查询配置列表失败")
|
||||
}
|
||||
|
||||
// 组装响应数据
|
||||
list := make([]dto.FieldMappingConfigItem, 0, len(configs))
|
||||
for _, item := range configs {
|
||||
list = append(list, dto.FieldMappingConfigItem{
|
||||
Id: item.Id,
|
||||
ConfigName: item.ConfigName,
|
||||
VendorName: item.VendorName,
|
||||
ApiName: item.ApiName,
|
||||
ApiVersion: item.ApiVersion,
|
||||
SourceField: item.SourceField,
|
||||
TargetField: item.TargetField,
|
||||
TargetFieldType: item.TargetFieldType,
|
||||
TransformType: item.TransformType,
|
||||
TransformTypeName: s.getTransformTypeName(item.TransformType),
|
||||
IsActive: item.IsActive,
|
||||
Priority: item.Priority,
|
||||
BusinessDomain: item.BusinessDomain,
|
||||
BusinessDomainName: s.getBusinessDomainName(item.BusinessDomain),
|
||||
FieldGroup: item.FieldGroup,
|
||||
ConfigVersion: item.ConfigVersion,
|
||||
CreatedBy: item.CreatedBy,
|
||||
CreatedTime: item.CreatedTime,
|
||||
UpdatedBy: item.UpdatedBy,
|
||||
UpdatedTime: item.UpdatedTime,
|
||||
})
|
||||
}
|
||||
|
||||
res = &dto.ListFieldMappingConfigRes{
|
||||
List: list,
|
||||
Total: total,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetOne 获取单个字段映射配置
|
||||
func (s *fieldMappingConfigService) GetOne(ctx context.Context, req *dto.GetFieldMappingConfigReq) (res *dto.GetFieldMappingConfigRes, err error) {
|
||||
config, err := dict.FieldMappingConfig.GetOne(ctx, req)
|
||||
if err != nil {
|
||||
return nil, errors.New("获取配置详情失败")
|
||||
}
|
||||
if config == nil {
|
||||
return nil, errors.New("配置不存在")
|
||||
}
|
||||
|
||||
return &dto.GetFieldMappingConfigRes{
|
||||
FieldMappingConfig: config,
|
||||
TransformTypeName: s.getTransformTypeName(config.TransformType),
|
||||
BusinessDomainName: s.getBusinessDomainName(config.BusinessDomain),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Update 更新字段映射配置
|
||||
func (s *fieldMappingConfigService) Update(ctx context.Context, req *dto.UpdateFieldMappingConfigReq) (err error) {
|
||||
// 检查配置是否存在
|
||||
exist, err := dict.FieldMappingConfig.GetOne(ctx, &dto.GetFieldMappingConfigReq{Id: req.Id})
|
||||
if err != nil || exist == nil {
|
||||
return errors.New("配置不存在")
|
||||
}
|
||||
|
||||
// 如果修改了关键字段,检查重复性
|
||||
if (req.VendorName != "" && req.VendorName != exist.VendorName) ||
|
||||
(req.ApiName != "" && req.ApiName != exist.ApiName) ||
|
||||
(req.SourceField != "" && req.SourceField != exist.SourceField) ||
|
||||
(req.TargetField != "" && req.TargetField != exist.TargetField) {
|
||||
|
||||
vendorName := req.VendorName
|
||||
if vendorName == "" {
|
||||
vendorName = exist.VendorName
|
||||
}
|
||||
apiName := req.ApiName
|
||||
if apiName == "" {
|
||||
apiName = exist.ApiName
|
||||
}
|
||||
sourceField := req.SourceField
|
||||
if sourceField == "" {
|
||||
sourceField = exist.SourceField
|
||||
}
|
||||
targetField := req.TargetField
|
||||
if targetField == "" {
|
||||
targetField = exist.TargetField
|
||||
}
|
||||
|
||||
exists, err := dict.FieldMappingConfig.CheckDuplicate(ctx, vendorName, apiName, sourceField, targetField, req.Id)
|
||||
if err != nil {
|
||||
return errors.New("检查配置重复性失败")
|
||||
}
|
||||
if exists {
|
||||
return errors.New("相同厂商、接口、源字段和目标字段的配置已存在")
|
||||
}
|
||||
}
|
||||
|
||||
// 验证转换参数
|
||||
if req.TransformType != "" && req.TransformParams != nil {
|
||||
if err = s.validateTransformParams(req.TransformType, req.TransformParams); err != nil {
|
||||
return fmt.Errorf("转换参数验证失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 验证生效时间和失效时间
|
||||
if req.EffectiveDate != nil && req.ExpiryDate != nil && req.EffectiveDate.After(*req.ExpiryDate) {
|
||||
return errors.New("生效时间不能晚于失效时间")
|
||||
}
|
||||
|
||||
// 更新数据库
|
||||
_, err = dict.FieldMappingConfig.Update(ctx, req)
|
||||
if err != nil {
|
||||
return errors.New("更新配置失败")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateStatus 更新字段映射配置状态
|
||||
func (s *fieldMappingConfigService) UpdateStatus(ctx context.Context, req *dto.UpdateFieldMappingConfigStatusReq) (err error) {
|
||||
_, err = dict.FieldMappingConfig.UpdateStatus(ctx, req.Id, req.IsActive)
|
||||
if err != nil {
|
||||
return errors.New("更新配置状态失败")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Delete 删除字段映射配置
|
||||
func (s *fieldMappingConfigService) Delete(ctx context.Context, req *dto.DeleteFieldMappingConfigReq) (err error) {
|
||||
_, err = dict.FieldMappingConfig.Delete(ctx, req)
|
||||
if err != nil {
|
||||
return errors.New("删除配置失败")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryByVendorApi 根据厂商和接口查询字段映射
|
||||
func (s *fieldMappingConfigService) QueryByVendorApi(ctx context.Context, req *dto.QueryFieldMappingByVendorApiReq) (res *dto.QueryFieldMappingByVendorApiRes, err error) {
|
||||
configs, err := dict.FieldMappingConfig.GetByVendorAndApi(ctx, req.VendorName, req.ApiName, req.ApiVersion, req.IsActive)
|
||||
if err != nil {
|
||||
return nil, errors.New("查询字段映射配置失败")
|
||||
}
|
||||
|
||||
// 过滤掉已过期的配置
|
||||
var validConfigs []*entity.FieldMappingConfig
|
||||
now := time.Now()
|
||||
for _, config := range configs {
|
||||
if (config.EffectiveDate == nil || !config.EffectiveDate.After(now)) &&
|
||||
(config.ExpiryDate == nil || config.ExpiryDate.After(now)) {
|
||||
validConfigs = append(validConfigs, config)
|
||||
}
|
||||
}
|
||||
|
||||
res = &dto.QueryFieldMappingByVendorApiRes{
|
||||
List: validConfigs,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Validate 验证字段映射配置
|
||||
func (s *fieldMappingConfigService) Validate(ctx context.Context, req *dto.ValidateFieldMappingReq) (res *dto.ValidateFieldMappingRes, err error) {
|
||||
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
||||
res = &dto.ValidateFieldMappingRes{
|
||||
IsValid: false,
|
||||
}
|
||||
|
||||
// 验证基本配置
|
||||
if req.ConfigName == "" || req.VendorName == "" || req.ApiName == "" || req.SourceField == "" || req.TargetField == "" {
|
||||
res.Error = "配置名称、厂商名称、接口名称、源字段和目标字段不能为空"
|
||||
return
|
||||
}
|
||||
|
||||
// 检查重复配置
|
||||
exists, err := dict.FieldMappingConfig.CheckDuplicate(ctx, req.VendorName, req.ApiName, req.SourceField, req.TargetField, 0)
|
||||
if err != nil {
|
||||
res.Error = "检查配置重复性失败"
|
||||
return
|
||||
}
|
||||
if exists {
|
||||
res.Error = "相同厂商、接口、源字段和目标字段的配置已存在"
|
||||
return
|
||||
}
|
||||
|
||||
// 如果有测试值,尝试转换
|
||||
if req.TestValue != nil {
|
||||
// 这里可以实现具体的转换逻辑
|
||||
// 例如:根据转换类型和参数进行值转换
|
||||
res.TransformedValue = req.TestValue
|
||||
res.Warnings = []string{"转换逻辑需要根据具体业务实现"}
|
||||
}
|
||||
|
||||
res.IsValid = true
|
||||
return
|
||||
}
|
||||
|
||||
// validateRequiredFields 验证必填字段
|
||||
func (s *fieldMappingConfigService) validateRequiredFields(req *dto.CreateFieldMappingConfigReq) error {
|
||||
if req.ConfigName == "" {
|
||||
return errors.New("配置名称不能为空")
|
||||
}
|
||||
if req.VendorName == "" {
|
||||
return errors.New("厂商名称不能为空")
|
||||
}
|
||||
if req.ApiName == "" {
|
||||
return errors.New("接口名称不能为空")
|
||||
}
|
||||
if req.SourceField == "" {
|
||||
return errors.New("源字段不能为空")
|
||||
}
|
||||
if req.TargetField == "" {
|
||||
return errors.New("目标字段不能为空")
|
||||
}
|
||||
if req.TargetFieldType == "" {
|
||||
return errors.New("目标字段类型不能为空")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// validateRequiredFieldsForBatch 批量创建的字段验证
|
||||
func (s *fieldMappingConfigService) validateRequiredFieldsForBatch(config *dto.BatchFieldMappingConfigItem) error {
|
||||
if config.ConfigName == "" {
|
||||
return errors.New("配置名称不能为空")
|
||||
}
|
||||
if config.VendorName == "" {
|
||||
return errors.New("厂商名称不能为空")
|
||||
}
|
||||
if config.ApiName == "" {
|
||||
return errors.New("接口名称不能为空")
|
||||
}
|
||||
if config.SourceField == "" {
|
||||
return errors.New("源字段不能为空")
|
||||
}
|
||||
if config.TargetField == "" {
|
||||
return errors.New("目标字段不能为空")
|
||||
}
|
||||
if config.TargetFieldType == "" {
|
||||
return errors.New("目标字段类型不能为空")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// validateTransformParams 验证转换参数
|
||||
func (s *fieldMappingConfigService) validateTransformParams(transformType string, params map[string]interface{}) error {
|
||||
if params == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch transformType {
|
||||
case consts.TransformTypeFormatDate:
|
||||
if _, ok := params["source_format"]; !ok {
|
||||
return errors.New("日期格式化转换需要source_format参数")
|
||||
}
|
||||
if _, ok := params["target_format"]; !ok {
|
||||
return errors.New("日期格式化转换需要target_format参数")
|
||||
}
|
||||
case consts.TransformTypeMapValue:
|
||||
if len(params) == 0 {
|
||||
return errors.New("值映射转换需要映射规则参数")
|
||||
}
|
||||
case consts.TransformTypeConcat:
|
||||
if _, ok := params["fields"]; !ok {
|
||||
return errors.New("拼接转换需要fields参数")
|
||||
}
|
||||
case consts.TransformTypeRegex:
|
||||
if _, ok := params["pattern"]; !ok {
|
||||
return errors.New("正则提取转换需要pattern参数")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// isValidBusinessDomain 验证业务域是否有效
|
||||
func (s *fieldMappingConfigService) isValidBusinessDomain(domain string) bool {
|
||||
validDomains := []string{
|
||||
consts.BusinessDomainUser,
|
||||
consts.BusinessDomainOrder,
|
||||
consts.BusinessDomainProduct,
|
||||
consts.BusinessDomainPayment,
|
||||
}
|
||||
for _, valid := range validDomains {
|
||||
if domain == valid {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// getTransformTypeName 获取转换类型名称
|
||||
func (s *fieldMappingConfigService) getTransformTypeName(transformType string) string {
|
||||
typeNames := map[string]string{
|
||||
consts.TransformTypeDirect: "直接映射",
|
||||
consts.TransformTypeFormatDate: "日期格式化",
|
||||
consts.TransformTypeMapValue: "值映射",
|
||||
consts.TransformTypeConcat: "拼接",
|
||||
consts.TransformTypeCalc: "计算",
|
||||
consts.TransformTypeRegex: "正则提取",
|
||||
}
|
||||
if name, ok := typeNames[transformType]; ok {
|
||||
return name
|
||||
}
|
||||
return transformType
|
||||
}
|
||||
|
||||
// getBusinessDomainName 获取业务域名称
|
||||
func (s *fieldMappingConfigService) getBusinessDomainName(domain string) string {
|
||||
domainNames := map[string]string{
|
||||
consts.BusinessDomainUser: "用户",
|
||||
consts.BusinessDomainOrder: "订单",
|
||||
consts.BusinessDomainProduct: "商品",
|
||||
consts.BusinessDomainPayment: "支付",
|
||||
}
|
||||
if name, ok := domainNames[domain]; ok {
|
||||
return name
|
||||
}
|
||||
return domain
|
||||
}
|
||||
|
||||
// GetActiveConfigsByBusinessDomain 根据业务域获取启用的配置
|
||||
func (s *fieldMappingConfigService) GetActiveConfigsByBusinessDomain(ctx context.Context, businessDomain string) ([]entity.FieldMappingConfig, error) {
|
||||
return dict.FieldMappingConfig.GetActiveConfigsByBusinessDomain(ctx, businessDomain)
|
||||
}
|
||||
|
||||
// GetFieldGroupsByVendorApi 获取指定厂商接口的字段分组
|
||||
func (s *fieldMappingConfigService) GetFieldGroupsByVendorApi(ctx context.Context, vendorName, apiName string) ([]string, error) {
|
||||
return dict.FieldMappingConfig.GetFieldGroupsByVendorApi(ctx, vendorName, apiName)
|
||||
}
|
||||
|
||||
// CleanExpiredConfigs 清理过期配置
|
||||
func (s *fieldMappingConfigService) CleanExpiredConfigs(ctx context.Context) (int64, error) {
|
||||
return dict.FieldMappingConfig.DeleteExpiredConfigs(ctx)
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
consts "cid/consts/api-feature"
|
||||
"cid/dao/dict"
|
||||
dto "cid/model/dto/dict"
|
||||
entity "cid/model/entity/dict"
|
||||
"context"
|
||||
"errors"
|
||||
)
|
||||
|
||||
type apiInterfaceService struct{}
|
||||
|
||||
// ApiInterface 接口服务
|
||||
var ApiInterface = new(apiInterfaceService)
|
||||
|
||||
// Create 创建接口
|
||||
func (s *apiInterfaceService) Create(ctx context.Context, req *dto.CreateApiInterfaceReq) (res *dto.CreateApiInterfaceRes, err error) {
|
||||
_, err = DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: req.PlatformId})
|
||||
if err != nil {
|
||||
return nil, errors.New("平台不存在")
|
||||
}
|
||||
|
||||
// 检查接口编码在同一平台下是否重复
|
||||
interfaces, _, err := dict.ApiInterface.List(ctx, &dto.ListApiInterfaceReq{
|
||||
PlatformId: req.PlatformId,
|
||||
Code: req.Code,
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if len(interfaces) > 0 {
|
||||
return nil, errors.New("接口编码在该平台下已存在")
|
||||
}
|
||||
|
||||
// 插入数据库
|
||||
id, err := dict.ApiInterface.Insert(ctx, req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res = &dto.CreateApiInterfaceRes{
|
||||
Id: id,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// List 获取接口列表
|
||||
func (s *apiInterfaceService) List(ctx context.Context, req *dto.ListApiInterfaceReq) (res *dto.ListApiInterfaceRes, err error) {
|
||||
apiList, total, err := dict.ApiInterface.List(ctx, req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
platformIds := make([]int64, 0)
|
||||
for _, item := range apiList {
|
||||
if item.PlatformId > 0 {
|
||||
platformIds = append(platformIds, item.PlatformId)
|
||||
}
|
||||
}
|
||||
|
||||
platformMap := make(map[int64]string)
|
||||
if len(platformIds) > 0 {
|
||||
res, err := DatasourcePlatform.List(ctx, &dto.ListDatasourcePlatformReq{})
|
||||
if err == nil && res != nil {
|
||||
for _, p := range res.List {
|
||||
platformMap[p.Id] = p.PlatformName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list := make([]dto.ApiInterfaceItem, 0, len(apiList))
|
||||
for _, item := range apiList {
|
||||
platformName := ""
|
||||
if name, ok := platformMap[item.PlatformId]; ok {
|
||||
platformName = name
|
||||
}
|
||||
|
||||
list = append(list, dto.ApiInterfaceItem{
|
||||
Id: item.Id,
|
||||
PlatformId: item.PlatformId,
|
||||
PlatformName: platformName,
|
||||
Name: item.Name,
|
||||
Code: item.Code,
|
||||
Url: item.Url,
|
||||
Method: item.Method,
|
||||
Status: item.Status,
|
||||
StatusName: s.getStatusName(item.Status),
|
||||
CreatedAt: item.CreatedAt.Unix(),
|
||||
UpdatedAt: item.UpdatedAt.Unix(),
|
||||
})
|
||||
}
|
||||
|
||||
res = &dto.ListApiInterfaceRes{
|
||||
List: list,
|
||||
Total: total,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetOne 获取单个接口
|
||||
func (s *apiInterfaceService) GetOne(ctx context.Context, req *dto.GetApiInterfaceReq) (res *dto.GetApiInterfaceRes, err error) {
|
||||
apiInterface, err := dict.ApiInterface.GetOne(ctx, req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var platformName string
|
||||
if apiInterface.PlatformId > 0 {
|
||||
platform, _ := DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: apiInterface.PlatformId})
|
||||
if platform != nil {
|
||||
platformName = platform.PlatformName
|
||||
}
|
||||
}
|
||||
|
||||
return &dto.GetApiInterfaceRes{
|
||||
ApiInterface: apiInterface,
|
||||
PlatformName: platformName,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Update 更新接口
|
||||
func (s *apiInterfaceService) Update(ctx context.Context, req *dto.UpdateApiInterfaceReq) (err error) {
|
||||
exist, err := dict.ApiInterface.GetOne(ctx, &dto.GetApiInterfaceReq{Id: req.Id})
|
||||
if err != nil || exist == nil {
|
||||
return errors.New("接口不存在")
|
||||
}
|
||||
|
||||
if req.PlatformId > 0 && req.PlatformId != exist.PlatformId {
|
||||
_, err := DatasourcePlatform.GetOne(ctx, &dto.GetDatasourcePlatformReq{Id: req.PlatformId})
|
||||
if err != nil {
|
||||
return errors.New("平台不存在")
|
||||
}
|
||||
}
|
||||
|
||||
if req.Code != "" && req.Code != exist.Code {
|
||||
platformId := req.PlatformId
|
||||
if platformId == 0 {
|
||||
platformId = exist.PlatformId
|
||||
}
|
||||
interfaces, _, err := dict.ApiInterface.List(ctx, &dto.ListApiInterfaceReq{
|
||||
PlatformId: platformId,
|
||||
Code: req.Code,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(interfaces) > 0 {
|
||||
return errors.New("接口编码在该平台下已存在")
|
||||
}
|
||||
}
|
||||
|
||||
_, err = dict.ApiInterface.Update(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateStatus 更新接口状态
|
||||
func (s *apiInterfaceService) UpdateStatus(ctx context.Context, req *dto.UpdateApiInterfaceStatusReq) (err error) {
|
||||
_, err = dict.ApiInterface.UpdateStatus(ctx, req.Id, req.Status.String())
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除接口
|
||||
func (s *apiInterfaceService) Delete(ctx context.Context, req *dto.DeleteApiInterfaceReq) (err error) {
|
||||
_, err = dict.ApiInterface.Delete(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetByIds 根据ID列表获取接口
|
||||
func (s *apiInterfaceService) GetByIds(ctx context.Context, ids []int64) (res []entity.ApiInterface, err error) {
|
||||
return dict.ApiInterface.GetByIds(ctx, ids)
|
||||
}
|
||||
|
||||
// getStatusName 获取状态名称
|
||||
func (s *apiInterfaceService) getStatusName(status consts.PlatformStatus) string {
|
||||
statusNames := map[consts.PlatformStatus]string{
|
||||
consts.PlatformStatusActive: "启用",
|
||||
consts.PlatformStatusInactive: "停用",
|
||||
}
|
||||
if name, ok := statusNames[status]; ok {
|
||||
return name
|
||||
}
|
||||
return string(status)
|
||||
}
|
||||
+219
@@ -0,0 +1,219 @@
|
||||
-- CID数据库表结构 - PostgreSQL 版本
|
||||
|
||||
-- 应用管理表
|
||||
CREATE TABLE IF NOT EXISTS cid_application (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id VARCHAR(64) DEFAULT '',
|
||||
name VARCHAR(255) NOT NULL,
|
||||
app_code VARCHAR(100) NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||
description TEXT,
|
||||
access_config JSONB,
|
||||
limit_config JSONB,
|
||||
callback_config JSONB,
|
||||
created_at BIGINT NOT NULL,
|
||||
updated_at BIGINT NOT NULL,
|
||||
deleted_at BIGINT DEFAULT 0,
|
||||
CONSTRAINT uk_cid_application_app_code UNIQUE (app_code, deleted_at)
|
||||
);
|
||||
|
||||
-- 应用表索引
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_application_tenant ON cid_application(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_application_type ON cid_application(type);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_application_status ON cid_application(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_application_name ON cid_application(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_application_app_code ON cid_application(app_code);
|
||||
|
||||
-- 应用表注释
|
||||
COMMENT ON TABLE cid_application IS '应用管理表';
|
||||
COMMENT ON COLUMN cid_application.id IS '主键ID';
|
||||
COMMENT ON COLUMN cid_application.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN cid_application.name IS '应用名称';
|
||||
COMMENT ON COLUMN cid_application.app_code IS '应用编码(唯一标识)';
|
||||
COMMENT ON COLUMN cid_application.type IS '应用类型';
|
||||
COMMENT ON COLUMN cid_application.status IS '应用状态:active启用/inactive停用';
|
||||
COMMENT ON COLUMN cid_application.description IS '应用描述';
|
||||
COMMENT ON COLUMN cid_application.access_config IS '接入配置';
|
||||
COMMENT ON COLUMN cid_application.limit_config IS '限流配置';
|
||||
COMMENT ON COLUMN cid_application.callback_config IS '回调配置';
|
||||
COMMENT ON COLUMN cid_application.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN cid_application.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN cid_application.deleted_at IS '软删除时间戳,0表示未删除';
|
||||
|
||||
-- 平台管理表
|
||||
CREATE TABLE IF NOT EXISTS cid_platform (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id VARCHAR(64) DEFAULT '',
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||
description TEXT,
|
||||
auth_config JSONB,
|
||||
limit_config JSONB,
|
||||
platform_config JSONB,
|
||||
created_at BIGINT NOT NULL,
|
||||
updated_at BIGINT NOT NULL,
|
||||
deleted_at BIGINT DEFAULT 0
|
||||
);
|
||||
|
||||
-- 平台表索引
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_platform_tenant ON cid_platform(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_platform_type ON cid_platform(type);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_platform_status ON cid_platform(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_platform_name ON cid_platform(name);
|
||||
|
||||
-- 平台表注释
|
||||
COMMENT ON TABLE cid_platform IS '平台管理表';
|
||||
COMMENT ON COLUMN cid_platform.id IS '主键ID';
|
||||
COMMENT ON COLUMN cid_platform.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN cid_platform.name IS '平台名称';
|
||||
COMMENT ON COLUMN cid_platform.type IS '平台类型';
|
||||
COMMENT ON COLUMN cid_platform.status IS '平台状态:active启用/inactive停用';
|
||||
COMMENT ON COLUMN cid_platform.description IS '平台描述';
|
||||
COMMENT ON COLUMN cid_platform.auth_config IS '认证配置';
|
||||
COMMENT ON COLUMN cid_platform.limit_config IS '限流配置';
|
||||
COMMENT ON COLUMN cid_platform.platform_config IS '平台专用配置';
|
||||
COMMENT ON COLUMN cid_platform.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN cid_platform.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN cid_platform.deleted_at IS '软删除时间戳,0表示未删除';
|
||||
|
||||
-- 接口管理表
|
||||
CREATE TABLE IF NOT EXISTS cid_api_interface (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id VARCHAR(64) DEFAULT '',
|
||||
platform_id BIGINT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
code VARCHAR(100) NOT NULL,
|
||||
url VARCHAR(500) NOT NULL,
|
||||
method VARCHAR(10) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||
auth_type VARCHAR(50),
|
||||
request_config JSONB,
|
||||
response_config JSONB,
|
||||
limit_config JSONB,
|
||||
created_at BIGINT NOT NULL,
|
||||
updated_at BIGINT NOT NULL,
|
||||
deleted_at BIGINT DEFAULT 0,
|
||||
CONSTRAINT fk_cid_api_interface_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id)
|
||||
);
|
||||
|
||||
-- 接口表索引
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_tenant ON cid_api_interface(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_platform ON cid_api_interface(platform_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_code ON cid_api_interface(code);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_status ON cid_api_interface(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_name ON cid_api_interface(name);
|
||||
|
||||
-- 接口表注释
|
||||
COMMENT ON TABLE cid_api_interface IS '接口管理表';
|
||||
COMMENT ON COLUMN cid_api_interface.id IS '主键ID';
|
||||
COMMENT ON COLUMN cid_api_interface.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN cid_api_interface.platform_id IS '所属平台ID';
|
||||
COMMENT ON COLUMN cid_api_interface.name IS '接口名称';
|
||||
COMMENT ON COLUMN cid_api_interface.code IS '接口编码';
|
||||
COMMENT ON COLUMN cid_api_interface.url IS '接口地址';
|
||||
COMMENT ON COLUMN cid_api_interface.method IS '请求方法:GET/POST/PUT/DELETE等';
|
||||
COMMENT ON COLUMN cid_api_interface.status IS '接口状态:active启用/inactive停用';
|
||||
COMMENT ON COLUMN cid_api_interface.auth_type IS '认证类型:oauth2/apikey/basic等';
|
||||
COMMENT ON COLUMN cid_api_interface.request_config IS '请求配置';
|
||||
COMMENT ON COLUMN cid_api_interface.response_config IS '响应配置';
|
||||
COMMENT ON COLUMN cid_api_interface.limit_config IS '接口独立限流配置(可选,覆盖平台配置)';
|
||||
COMMENT ON COLUMN cid_api_interface.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN cid_api_interface.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN cid_api_interface.deleted_at IS '软删除时间戳,0表示未删除';
|
||||
|
||||
-- 数据获取日志表
|
||||
CREATE TABLE IF NOT EXISTS cid_data_fetch_log (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id VARCHAR(64) DEFAULT '',
|
||||
platform_id BIGINT NOT NULL,
|
||||
interface_id BIGINT NOT NULL,
|
||||
request_id VARCHAR(100) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
start_time BIGINT NOT NULL,
|
||||
end_time BIGINT DEFAULT 0,
|
||||
duration INT DEFAULT 0,
|
||||
request_config JSONB,
|
||||
response_data TEXT,
|
||||
error_message TEXT,
|
||||
retry_count INT DEFAULT 0,
|
||||
created_at BIGINT NOT NULL,
|
||||
updated_at BIGINT NOT NULL,
|
||||
deleted_at BIGINT DEFAULT 0,
|
||||
CONSTRAINT fk_cid_data_fetch_log_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id),
|
||||
CONSTRAINT fk_cid_data_fetch_log_interface FOREIGN KEY (interface_id) REFERENCES cid_api_interface(id)
|
||||
);
|
||||
|
||||
-- 日志表索引
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_tenant ON cid_data_fetch_log(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_platform ON cid_data_fetch_log(platform_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_interface ON cid_data_fetch_log(interface_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_request_id ON cid_data_fetch_log(request_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_status ON cid_data_fetch_log(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_start_time ON cid_data_fetch_log(start_time);
|
||||
|
||||
-- 日志表注释
|
||||
COMMENT ON TABLE cid_data_fetch_log IS '数据获取日志表';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.id IS '主键ID';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.platform_id IS '平台ID';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.interface_id IS '接口ID';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.request_id IS '请求ID';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.status IS '执行状态:pending/running/success/failed/rate_limit';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.start_time IS '开始时间(时间戳)';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.end_time IS '结束时间(时间戳)';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.duration IS '执行时长(毫秒)';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.request_config IS '请求配置参数';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.response_data IS '响应数据(JSON)';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.error_message IS '错误信息';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.retry_count IS '重试次数';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN cid_data_fetch_log.deleted_at IS '软删除时间戳,0表示未删除';
|
||||
|
||||
-- 数据映射表
|
||||
CREATE TABLE IF NOT EXISTS cid_data_mapping (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id VARCHAR(64) DEFAULT '',
|
||||
platform_id BIGINT NOT NULL,
|
||||
interface_id BIGINT NOT NULL,
|
||||
source_field VARCHAR(255) NOT NULL,
|
||||
target_field VARCHAR(255) NOT NULL,
|
||||
field_type VARCHAR(50) NOT NULL,
|
||||
default_value VARCHAR(500),
|
||||
transform_rule JSONB,
|
||||
priority INT DEFAULT 0,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||
created_at BIGINT NOT NULL,
|
||||
updated_at BIGINT NOT NULL,
|
||||
deleted_at BIGINT DEFAULT 0,
|
||||
CONSTRAINT fk_cid_data_mapping_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id),
|
||||
CONSTRAINT fk_cid_data_mapping_interface FOREIGN KEY (interface_id) REFERENCES cid_api_interface(id),
|
||||
CONSTRAINT uk_cid_data_mapping_interface_target UNIQUE (interface_id, target_field, deleted_at)
|
||||
);
|
||||
|
||||
-- 映射表索引
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_tenant ON cid_data_mapping(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_platform ON cid_data_mapping(platform_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_interface ON cid_data_mapping(interface_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_source_field ON cid_data_mapping(source_field);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_status ON cid_data_mapping(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_priority ON cid_data_mapping(priority);
|
||||
|
||||
-- 映射表注释
|
||||
COMMENT ON TABLE cid_data_mapping IS '数据映射表';
|
||||
COMMENT ON COLUMN cid_data_mapping.id IS '主键ID';
|
||||
COMMENT ON COLUMN cid_data_mapping.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN cid_data_mapping.platform_id IS '平台ID';
|
||||
COMMENT ON COLUMN cid_data_mapping.interface_id IS '接口ID';
|
||||
COMMENT ON COLUMN cid_data_mapping.source_field IS '源字段(接口返回字段)';
|
||||
COMMENT ON COLUMN cid_data_mapping.target_field IS '目标字段(本地表字段)';
|
||||
COMMENT ON COLUMN cid_data_mapping.field_type IS '字段类型:string/int/float/bool/array/object';
|
||||
COMMENT ON COLUMN cid_data_mapping.default_value IS '默认值';
|
||||
COMMENT ON COLUMN cid_data_mapping.transform_rule IS '转换规则';
|
||||
COMMENT ON COLUMN cid_data_mapping.priority IS '优先级(数字越小优先级越高)';
|
||||
COMMENT ON COLUMN cid_data_mapping.status IS '状态:active启用/inactive停用';
|
||||
COMMENT ON COLUMN cid_data_mapping.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN cid_data_mapping.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN cid_data_mapping.deleted_at IS '软删除时间戳,0表示未删除';
|
||||
@@ -0,0 +1,39 @@
|
||||
package utils
|
||||
|
||||
import "time"
|
||||
|
||||
// TimeToMilliseconds 时间转毫秒时间戳
|
||||
func TimeToMilliseconds(t time.Time) int64 {
|
||||
return t.UnixNano() / 1e6
|
||||
}
|
||||
|
||||
// DateToMilliseconds 日期转毫秒时间戳(00:00:00)
|
||||
func DateToMilliseconds(year, month, day int) int64 {
|
||||
t := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
|
||||
return TimeToMilliseconds(t)
|
||||
}
|
||||
|
||||
// TodayMilliseconds 获取今天的时间戳范围
|
||||
func TodayMilliseconds() (int64, int64) {
|
||||
now := time.Now()
|
||||
start := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
end := start.AddDate(0, 0, 1).Add(-time.Second)
|
||||
return TimeToMilliseconds(start), TimeToMilliseconds(end)
|
||||
}
|
||||
|
||||
// YesterdayMilliseconds 获取昨天的时间戳范围
|
||||
func YesterdayMilliseconds() (int64, int64) {
|
||||
now := time.Now()
|
||||
yesterday := now.AddDate(0, 0, -1)
|
||||
start := time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 0, 0, 0, 0, yesterday.Location())
|
||||
end := start.AddDate(0, 0, 1).Add(-time.Second)
|
||||
return TimeToMilliseconds(start), TimeToMilliseconds(end)
|
||||
}
|
||||
|
||||
// Last7DaysMilliseconds 获取过去7天的时间戳范围
|
||||
func Last7DaysMilliseconds() (int64, int64) {
|
||||
now := time.Now()
|
||||
end := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location())
|
||||
start := end.AddDate(0, 0, -7)
|
||||
return TimeToMilliseconds(start), TimeToMilliseconds(end)
|
||||
}
|
||||
Reference in New Issue
Block a user