diff --git a/api-complete.json b/api-complete.json deleted file mode 100644 index caad98b..0000000 --- a/api-complete.json +++ /dev/null @@ -1,1478 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "title": "DataEngine API", - "version": "1.0.0", - "description": "DataEngine 数据引擎 API 文档" - }, - "servers": [ - { - "url": "http://localhost:8080", - "description": "本地环境" - } - ], - "paths": { - "/api/interface/controller/createApiInterface": { - "post": { - "tags": ["接口管理"], - "summary": "创建接口", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "platformId": 1, - "name": "快手广告接口", - "code": "KUAISHOU_AD_API", - "url": "https://ad.e.kuaishou.com/rest/openapi/v1/campaign/list", - "method": "POST", - "status": "active", - "authType": "TOKEN", - "requestConfig": { - "headers": { - "Content-Type": "application/json" - }, - "params": { - "advertiserId": "123456" - } - }, - "responseConfig": { - "dataPath": "data.list", - "totalPath": "data.total" - }, - "limitConfig": { - "rateLimitPerMinute": 60 - } - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/api/interface/controller/listApiInterfaces": { - "get": { - "tags": ["接口管理"], - "summary": "获取接口列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer", "example": 1}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer", "example": 10}}, - {"name": "platformId", "in": "query", "schema": {"type": "integer"}}, - {"name": "keyword", "in": "query", "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/api/interface/controller/getApiInterface": { - "get": { - "tags": ["接口管理"], - "summary": "获取接口详情", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/api/interface/controller/updateApiInterface": { - "put": { - "tags": ["接口管理"], - "summary": "更新接口", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "platformId": 1, - "name": "快手广告接口", - "code": "KUAISHOU_AD_API", - "url": "https://ad.e.kuaishou.com/rest/openapi/v1/campaign/list", - "method": "POST", - "status": "active", - "authType": "TOKEN", - "requestConfig": { - "headers": { - "Content-Type": "application/json" - } - }, - "responseConfig": {}, - "limitConfig": {} - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/api/interface/controller/updateApiInterfaceStatus": { - "put": { - "tags": ["接口管理"], - "summary": "更新接口状态", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "status": "active" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/api/interface/controller/deleteApiInterface": { - "delete": { - "tags": ["接口管理"], - "summary": "删除接口", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/createDatasourcePlatform": { - "post": { - "tags": ["数据源平台管理"], - "summary": "创建数据源平台", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "platformCode": "KUAISHOU", - "platformName": "快手平台", - "description": "快手广告数据源", - "status": "ACTIVE", - "apiBaseUrl": "https://ad.e.kuaishou.com", - "authType": "TOKEN", - "token": "your_token_here", - "rateLimitPerMinute": 60, - "rateLimitPerHour": 1000, - "concurrencyLimit": 10, - "requestTimeoutMs": 30000, - "maxRetries": 3, - "retryDelayMs": 1000, - "createdBy": "admin", - "createdAt": "2026-04-30 10:00:00", - "updatedBy": "admin", - "updatedAt": "2026-04-30 10:00:00" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/listDatasourcePlatforms": { - "get": { - "tags": ["数据源平台管理"], - "summary": "获取数据源平台列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer", "example": 1}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer", "example": 10}}, - {"name": "keyword", "in": "query", "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/getDatasourcePlatform": { - "get": { - "tags": ["数据源平台管理"], - "summary": "获取数据源平台详情", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/getPlatformByCode": { - "get": { - "tags": ["数据源平台管理"], - "summary": "根据编码获取平台信息", - "parameters": [ - {"name": "platformCode", "in": "query", "required": true, "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/updateDatasourcePlatform": { - "put": { - "tags": ["数据源平台管理"], - "summary": "更新数据源平台", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "platformCode": "KUAISHOU", - "platformName": "快手平台", - "description": "快手广告数据源", - "status": "ACTIVE", - "apiBaseUrl": "https://ad.e.kuaishou.com", - "authType": "TOKEN", - "token": "your_token_here", - "rateLimitPerMinute": 60, - "rateLimitPerHour": 1000, - "concurrencyLimit": 10, - "requestTimeoutMs": 30000, - "maxRetries": 3, - "retryDelayMs": 1000, - "updatedBy": "admin", - "updatedAt": "2026-04-30 10:00:00", - "version": "1" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/updateDatasourcePlatformStatus": { - "put": { - "tags": ["数据源平台管理"], - "summary": "更新数据源平台状态", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "status": "ACTIVE", - "updatedBy": "admin" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/deleteDatasourcePlatform": { - "delete": { - "tags": ["数据源平台管理"], - "summary": "删除数据源平台", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/testPlatformConnection": { - "post": { - "tags": ["数据源平台管理"], - "summary": "测试平台连接", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "platformCode": "KUAISHOU", - "apiBaseUrl": "https://ad.e.kuaishou.com", - "authType": "TOKEN", - "token": "your_token_here" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/datasource/platform/controller/getPlatformStatistics": { - "get": { - "tags": ["数据源平台管理"], - "summary": "获取平台统计信息", - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs": { - "post": { - "tags": ["字段映射配置"], - "summary": "创建字段映射配置", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "configName": "快手广告计划ID映射", - "vendorName": "KUAISHOU", - "apiName": "campaign.list", - "apiVersion": "v1", - "sourceField": "campaign_id", - "sourceFieldType": "string", - "sourceFieldDesc": "快手广告计划ID", - "targetField": "campaignId", - "targetFieldType": "bigint", - "targetFieldDesc": "系统广告计划ID", - "transformType": "direct", - "transformParams": {}, - "validationRules": { - "pattern": "^[0-9]+$" - }, - "defaultValue": "", - "isRequired": true, - "isActive": true, - "priority": 0, - "businessDomain": "advertising", - "fieldGroup": "basic", - "configVersion": 1, - "createdBy": "admin" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs": { - "get": { - "tags": ["字段映射配置"], - "summary": "获取字段映射配置列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer", "example": 1}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer", "example": 10}}, - {"name": "vendorName", "in": "query", "schema": {"type": "string"}}, - {"name": "apiName", "in": "query", "schema": {"type": "string"}}, - {"name": "keyword", "in": "query", "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/{id}": { - "get": { - "tags": ["字段映射配置"], - "summary": "获取字段映射配置详情", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/{id}": { - "put": { - "tags": ["字段映射配置"], - "summary": "更新字段映射配置", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "configName": "快手广告计划ID映射", - "vendorName": "KUAISHOU", - "apiName": "campaign.list", - "sourceField": "campaign_id", - "targetField": "campaignId", - "targetFieldType": "bigint", - "transformType": "direct", - "isActive": true - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/{id}/status": { - "put": { - "tags": ["字段映射配置"], - "summary": "更新字段映射配置状态", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "id": 1, - "isActive": true - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/{id}": { - "delete": { - "tags": ["字段映射配置"], - "summary": "删除字段映射配置", - "parameters": [ - {"name": "id", "in": "query", "required": true, "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/query": { - "get": { - "tags": ["字段映射配置"], - "summary": "根据厂商和接口查询字段映射", - "parameters": [ - {"name": "vendorName", "in": "query", "required": true, "schema": {"type": "string"}}, - {"name": "apiName", "in": "query", "required": true, "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/field/mapping/config/controller/field-mapping-configs/validate": { - "post": { - "tags": ["字段映射配置"], - "summary": "验证字段映射配置", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "configName": "测试映射配置", - "vendorName": "KUAISHOU", - "apiName": "campaign.list", - "sourceField": "campaign_id", - "targetField": "campaignId", - "testValue": "123456" - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/createCidAccountReportDetail": { - "post": { - "tags": ["广告账户数据"], - "summary": "创建广告数据报表详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "dataType": "detail", - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "liveName": "测试直播间", - "photoId": "photo_001", - "photoName": "测试视频", - "creativeMaterialType": "VERTICAL_SCREEN", - "costTotal": 1000.50, - "t0OrderPaymentAmt": 5000.00, - "t0Gmv": 5000.00, - "t0Roi": 5.0, - "t0OrderCnt": 50, - "adEffectivePlayNum": 10000, - "click": 500, - "adShow": 10000, - "impression": 10000, - "conversionNum": 100, - "merchantRecoFans": 200 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/batchCreateCidAccountReportDetail": { - "post": { - "tags": ["广告账户数据"], - "summary": "批量创建广告数据报表详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "dataType": "detail", - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "liveName": "测试直播间", - "photoId": "photo_001", - "photoName": "测试视频", - "creativeMaterialType": "VERTICAL_SCREEN", - "costTotal": 1000.50, - "t0OrderPaymentAmt": 5000.00, - "t0Gmv": 5000.00, - "t0Roi": 5.0, - "t0OrderCnt": 50, - "adEffectivePlayNum": 10000, - "click": 500, - "adShow": 10000 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/listCidAccountReportDetail": { - "get": { - "tags": ["广告账户数据"], - "summary": "获取广告数据报表详情列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/createCidAccountReportSum": { - "post": { - "tags": ["广告账户数据"], - "summary": "创建广告账户数据汇总", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "dataType": "sum", - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "liveName": "测试直播间", - "costTotal": 1000.50, - "t0OrderPaymentAmt": 5000.00, - "t0Gmv": 5000.00, - "t0Roi": 5.0, - "t0OrderCnt": 50, - "adShow": 10000, - "click": 500, - "impression": 10000, - "conversionNum": 100 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/batchCreateCidAccountReportSum": { - "post": { - "tags": ["广告账户数据"], - "summary": "批量创建广告账户数据汇总", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "dataType": "sum", - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "liveName": "测试直播间", - "costTotal": 1000.50, - "t0OrderPaymentAmt": 5000.00, - "t0Gmv": 5000.00, - "t0Roi": 5.0, - "t0OrderCnt": 50, - "adShow": 10000, - "click": 500 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/account/report/listCidAccountReportSum": { - "get": { - "tags": ["广告账户数据"], - "summary": "获取广告账户数据汇总列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/createCampaignReportSum": { - "post": { - "tags": ["广告计划报表"], - "summary": "创建广告计划效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "campaignName": "测试计划", - "unitId": 789, - "unitName": "测试单元", - "costTotal": 1000.50, - "t0Gmv": 5000.00, - "t0Roi": 5.0, - "t0OrderCnt": 50, - "adShow": 10000, - "click": 500, - "impression": 10000 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/batchCreateCampaignReportSum": { - "post": { - "tags": ["广告计划报表"], - "summary": "批量创建广告计划效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "campaignName": "测试计划", - "costTotal": 1000.50, - "t0Gmv": 5000.00, - "t0Roi": 5.0 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/listCampaignReportSum": { - "get": { - "tags": ["广告计划报表"], - "summary": "获取广告计划效果指标表列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/createCampaignReportDetail": { - "post": { - "tags": ["广告计划报表"], - "summary": "创建广告效果指标表明细", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "campaignName": "测试计划", - "unitId": 789, - "unitName": "测试单元", - "ageSegment": "24-30", - "gender": "女", - "province": "广东", - "costTotal": 1000.50, - "t0Gmv": 5000.00, - "t0Roi": 5.0 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/batchCreateCampaignReportDetail": { - "post": { - "tags": ["广告计划报表"], - "summary": "批量创建广告效果指标表明细", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "unitId": 789, - "costTotal": 1000.50, - "t0Gmv": 5000.00 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/campaign/report/listCampaignReportDetail": { - "get": { - "tags": ["广告计划报表"], - "summary": "获取广告效果指标表明细列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/createUnitReportSum": { - "post": { - "tags": ["广告单元报表"], - "summary": "创建广告效果指标", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "unitId": 789, - "unitName": "测试单元", - "costTotal": 1000.50, - "t0Gmv": 5000.00, - "t0Roi": 5.0 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/batchCreateUnitReportSum": { - "post": { - "tags": ["广告单元报表"], - "summary": "批量创建广告效果指标", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "unitId": 789, - "costTotal": 1000.50, - "t0Gmv": 5000.00 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/listUnitReportSum": { - "get": { - "tags": ["广告单元报表"], - "summary": "获取广告效果指标列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/createUnitReportDetail": { - "post": { - "tags": ["广告单元报表"], - "summary": "创建广告效果指标详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "unitId": 789, - "ageSegment": "24-30", - "gender": "男", - "costTotal": 1000.50 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/batchCreateUnitReportDetail": { - "post": { - "tags": ["广告单元报表"], - "summary": "批量创建广告效果指标详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "unitId": 789, - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/unit/report/listUnitReportDetail": { - "get": { - "tags": ["广告单元报表"], - "summary": "获取广告效果指标详情列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/createCreativeReportSum": { - "post": { - "tags": ["广告创意报表"], - "summary": "创建广告效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "creativeId": 111, - "creativeName": "测试创意", - "costTotal": 1000.50, - "t0Gmv": 5000.00 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/batchCreateCreativeReportSum": { - "post": { - "tags": ["广告创意报表"], - "summary": "批量创建广告效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "creativeId": 111, - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/listCreativeReportSum": { - "get": { - "tags": ["广告创意报表"], - "summary": "获取广告效果指标表列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/createCreativeReportDetail": { - "post": { - "tags": ["广告创意报表"], - "summary": "创建广告创意详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "creativeId": 111, - "creativeMaterialType": "VERTICAL_SCREEN", - "costTotal": 1000.50 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/batchCreateCreativeReportDetail": { - "post": { - "tags": ["广告创意报表"], - "summary": "批量创建广告创意详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "creativeId": 111, - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/creative/report/listCreativeReportDetail": { - "get": { - "tags": ["广告创意报表"], - "summary": "获取广告创意详情列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/createStorewideReportSum": { - "post": { - "tags": ["全站数据报表"], - "summary": "创建广告效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "costTotal": 1000.50, - "t0Gmv": 5000.00 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/batchCreateStorewideReportSum": { - "post": { - "tags": ["全站数据报表"], - "summary": "批量创建广告效果指标表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/listStorewideReportSum": { - "get": { - "tags": ["全站数据报表"], - "summary": "获取广告效果指标表列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/createStorewideReportDetail": { - "post": { - "tags": ["全站数据报表"], - "summary": "创建广告效果指标表详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "ageSegment": "24-30", - "costTotal": 1000.50 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/batchCreateStorewideReportDetail": { - "post": { - "tags": ["全站数据报表"], - "summary": "批量创建广告效果指标表详情", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/storewide/report/listStorewideReportDetail": { - "get": { - "tags": ["全站数据报表"], - "summary": "获取广告效果指标表详情列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer"}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/material/report/createMaterialReport": { - "post": { - "tags": ["素材报表"], - "summary": "创建素材报表数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "photoId": "photo_001", - "photoName": "测试素材", - "costTotal": 1000.50, - "t0Gmv": 5000.00 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/material/report/batchCreateMaterialReport": { - "post": { - "tags": ["素材报表"], - "summary": "批量创建素材报表数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "authorId": "123456789", - "photoId": "photo_001", - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/material/report/listMaterialReport": { - "get": { - "tags": ["素材报表"], - "summary": "获取素材报表数据列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer", "example": 1}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer", "example": 10}}, - {"name": "reportDateStr", "in": "query", "schema": {"type": "string"}}, - {"name": "authorId", "in": "query", "schema": {"type": "string"}}, - {"name": "keyword", "in": "query", "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/population/report/createPopulationReport": { - "post": { - "tags": ["人群报表"], - "summary": "创建人群报表数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "ageSegment": "24-30", - "gender": "女", - "province": "广东", - "costTotal": 1000.50 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/population/report/batchCreatePopulationReport": { - "post": { - "tags": ["人群报表"], - "summary": "批量创建人群报表数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "campaignId": 123456, - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/population/report/listPopulationReport": { - "post": { - "tags": ["人群报表"], - "summary": "查询人群报表数据列表", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "page": 1, - "pageSize": 10, - "reportDateStr": "2026-04-30", - "campaignId": 123456 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/task/report/createTaskReport": { - "post": { - "tags": ["调控任务报表"], - "summary": "创建调控任务数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "reportDateStr": "2026-04-30", - "taskId": "task_001", - "taskName": "测试任务", - "photoId": "photo_001", - "costTotal": 1000.50 - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/task/report/batchCreateTaskReport": { - "post": { - "tags": ["调控任务报表"], - "summary": "批量创建调控任务数据", - "requestBody": { - "required": true, - "content": { - "application/json": { - "example": { - "items": [ - { - "reportDateStr": "2026-04-30", - "taskId": "task_001", - "costTotal": 1000.50 - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "成功" - } - } - } - }, - "/task/report/listTaskReport": { - "get": { - "tags": ["调控任务报表"], - "summary": "获取调控任务数据列表", - "parameters": [ - {"name": "page", "in": "query", "schema": {"type": "integer", "example": 1}}, - {"name": "pageSize", "in": "query", "schema": {"type": "integer", "example": 10}}, - {"name": "reportDateStr", "in": "query", "schema": {"type": "string"}}, - {"name": "photoId", "in": "query", "schema": {"type": "string"}}, - {"name": "keyword", "in": "query", "schema": {"type": "string"}} - ], - "responses": { - "200": { - "description": "成功" - } - } - } - } - }, - "components": { - "schemas": {} - } -} diff --git a/config.yml b/config.yml index 7477794..f88ec5e 100644 --- a/config.yml +++ b/config.yml @@ -9,6 +9,15 @@ rate: limit: 200 burst: 300 +# 数据同步配置 +sync: + page_size: 100 # 每次分页请求条数 + concurrency: 5 # 同步并发数 + retry_count: 3 # 最大重试次数 + sync_interval_minutes: 60 # 自动同步间隔(分钟) + compensation_interval_seconds: 300 # 补偿调度器扫描间隔(秒) + auto_sync_enabled: true # 是否启用自动同步 + # Database. database: default: @@ -17,7 +26,7 @@ database: port: "5432" user: "postgres" pass: "root" - name: "data-engine" + name: "engine" role: "master" maxIdle: "5" maxOpen: "20" @@ -53,9 +62,12 @@ consul: jaeger: #链路追踪 addr: 116.204.74.41:4318 +# 平台认证信息(已迁移到 api_datasource_platform 表中管理) +# 保留此处仅作参考,系统启动后从数据库读取 tencent: oauth: client_id: "1112038234" client_secret: "GxyjXFbZAs5dnsNQ" - refresh_token: "afd77374e4b0a305a1a5c1ce349f7105" - access_token: "55c1371d16c65921b1448b91ce688a49" \ No newline at end of file + refresh_token: "d15b37363a42449026d337708516e95e" + access_token: "4bacfc7c9b0a31f70ec0eb4771f8b542" + diff --git a/consts/public/collections.go b/consts/public/collections.go index 576bcb8..76d7dc7 100644 --- a/consts/public/collections.go +++ b/consts/public/collections.go @@ -2,25 +2,8 @@ package public // PostgreSQL表名常量 const ( - ApiInterfaceTable = "api_interface" // 接口管理表 - CidAccountReportDetailTable = "cid_account_report_detail" // 广告账户数据明细表 - CidAccountReportSumTable = "cid_account_report_sum" // 广告账户数据汇总表 - FieldMappingConfigTable = "api_field_mapping_config" // 字段映射表 - DatasourcePlatformTable = "api_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表 - CampaignReportSumTable = "campaign_report_sum" // 广告计划数据detail表 - CampaignReportDetailTable = "campaign_report_detail" // 广告计划数据detail表 - SyncTaskLogTable = "sync_task_log" // 同步任务日志表 - TencentAccountRelationTable = "tencent_account_relation" // 腾讯广告账户关系表 - TencentAudioTable = "tencent_audio" // 腾讯广告音乐素材表 - TencentImageTable = "tencent_image" // 腾讯广告图片素材表 - TencentVideoTable = "tencent_video" // 腾讯广告视频素材表 + ApiInterfaceTable = "api_interface" // 接口管理表 + DatasourcePlatformTable = "api_datasource_platform" // 数据源平台表 + SyncTaskLogTable = "sync_task_log" // 同步任务日志表 + SyncTrackerTable = "sync_tracker" // 同步跟踪表(增量同步时间记录) ) diff --git a/controller/copydata/api_account_report_controller.go b/controller/copydata/api_account_report_controller.go deleted file mode 100644 index 38b6787..0000000 --- a/controller/copydata/api_account_report_controller.go +++ /dev/null @@ -1,32 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" -) - -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) -} diff --git a/controller/copydata/campaign_report_controller.go b/controller/copydata/campaign_report_controller.go deleted file mode 100644 index e3a7852..0000000 --- a/controller/copydata/campaign_report_controller.go +++ /dev/null @@ -1,35 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" - - "gitea.com/red-future/common/beans" -) - -type campaignReport struct{} - -var CampaignReport = new(campaignReport) - -// CreateCampaignReportSum 创建广告计划效果指标表 -func (c *campaignReport) CreateCampaignReportSum(ctx context.Context, req *dto.CreateCampaignReportSumReq) (res *dto.CreateCampaignReportSumRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.CampaignReportSum.Create(ctx, req.CampaignReportSumItem) -} - -// BatchCreateCampaignReportSum 批量创建广告计划效果指标表 -func (c *campaignReport) BatchCreateCampaignReportSum(ctx context.Context, req *dto.BatchCreateCampaignReportSumReq) (res *dto.BatchCreateCampaignReportSumRes, err error) { - return service.CampaignReportSum.BatchCreate(ctx, req) -} - -// CreateCampaignReportDetail 创建广告效果指标表 -func (c *campaignReport) CreateCampaignReportDetail(ctx context.Context, req *dto.CreateCampaignReportDetailReq) (res *dto.CreateCampaignReportDetailRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.CampaignReportSum.CreateDetail(ctx, req.CampaignReportDetailItem) -} - -// BatchCreateCampaignReportDetail 批量创建广告效果指标表 -func (c *campaignReport) BatchCreateCampaignReportDetail(ctx context.Context, req *dto.BatchCreateCampaignReportDetailReq) (res *dto.BatchCreateCampaignReportDetailRes, err error) { - return service.CampaignReportSum.BatchCreateDetail(ctx, req) -} diff --git a/controller/copydata/creative_report_sum_controller.go b/controller/copydata/creative_report_sum_controller.go deleted file mode 100644 index 60f908c..0000000 --- a/controller/copydata/creative_report_sum_controller.go +++ /dev/null @@ -1,30 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" -) - -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) -} diff --git a/controller/copydata/material_report_controller.go b/controller/copydata/material_report_controller.go deleted file mode 100644 index cf10d85..0000000 --- a/controller/copydata/material_report_controller.go +++ /dev/null @@ -1,27 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" -) - -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) -} diff --git a/controller/copydata/population_report_controller.go b/controller/copydata/population_report_controller.go deleted file mode 100644 index 8919360..0000000 --- a/controller/copydata/population_report_controller.go +++ /dev/null @@ -1,29 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" - - "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) -} diff --git a/controller/copydata/storewide_report_sum_controller.go b/controller/copydata/storewide_report_sum_controller.go deleted file mode 100644 index c827e78..0000000 --- a/controller/copydata/storewide_report_sum_controller.go +++ /dev/null @@ -1,32 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" -) - -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) -} diff --git a/controller/copydata/task_report_controller.go b/controller/copydata/task_report_controller.go deleted file mode 100644 index 9959ca8..0000000 --- a/controller/copydata/task_report_controller.go +++ /dev/null @@ -1,27 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - service "dataengine/service/copydata" -) - -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) -} diff --git a/controller/copydata/unit_report_controller.go b/controller/copydata/unit_report_controller.go deleted file mode 100644 index 0d2160b..0000000 --- a/controller/copydata/unit_report_controller.go +++ /dev/null @@ -1,35 +0,0 @@ -package copydata - -import ( - "context" - dto "dataengine/model/dto/copydata" - "dataengine/service/copydata" - - "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) -} diff --git a/controller/dict/api_field_mapping_config_controller.go b/controller/dict/api_field_mapping_config_controller.go deleted file mode 100644 index 13d7052..0000000 --- a/controller/dict/api_field_mapping_config_controller.go +++ /dev/null @@ -1,65 +0,0 @@ -package dict - -import ( - "context" - dto "dataengine/model/dto/dict" - service "dataengine/service/dict" - - "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) -} diff --git a/controller/sync/platform_sync_controller.go b/controller/sync/platform_sync_controller.go new file mode 100644 index 0000000..d84821d --- /dev/null +++ b/controller/sync/platform_sync_controller.go @@ -0,0 +1,92 @@ +package sync + +import ( + "context" + svc "dataengine/service/sync" + + "github.com/gogf/gf/v2/frame/g" + "github.com/sirupsen/logrus" +) + +var PlatformSyncController = new(syncCtrl) + +type syncCtrl struct{} + +// TriggerSyncReq 触发同步请求 +type TriggerSyncReq struct { + g.Meta `path:"/trigger" method:"post" tags:"平台同步" summary:"触发同步" dc:"根据平台编码和接口编码触发数据同步"` + PlatformCode string `json:"platformCode" v:"required" dc:"平台编码"` + InterfaceCode string `json:"interfaceCode" v:"required" dc:"接口编码"` + FullSync bool `json:"fullSync" dc:"是否全量同步,true=全量 false=增量"` +} + +// TriggerSyncRes 触发同步响应 +type TriggerSyncRes struct { + Success bool `json:"success"` + TableName string `json:"tableName"` + TotalRows int `json:"totalRows"` + InsertedRows int `json:"insertedRows"` + Duration string `json:"duration"` +} + +// TriggerSync 触发同步 +func (c *syncCtrl) TriggerSync(ctx context.Context, req *TriggerSyncReq) (*TriggerSyncRes, error) { + logrus.Infof("触发同步: platform=%s, interface=%s, fullSync=%v", req.PlatformCode, req.InterfaceCode, req.FullSync) + result, err := svc.SyncByConfig(ctx, req.PlatformCode, req.InterfaceCode, req.FullSync) + if err != nil { + return nil, err + } + return &TriggerSyncRes{ + Success: true, TableName: result.TableName, + TotalRows: result.TotalRows, InsertedRows: result.InsertedRows, + Duration: result.Duration, + }, nil +} + +// QueryPlatformConfigReq 查询平台配置请求 +type QueryPlatformConfigReq struct { + g.Meta `path:"/config" method:"get" tags:"平台同步" summary:"查询平台配置" dc:"查看平台和接口配置"` + PlatformCode string `json:"platformCode" v:"required" dc:"平台编码"` +} + +// QueryPlatformConfigRes 查询平台配置响应 +type QueryPlatformConfigRes struct { + PlatformName string `json:"platformName"` + PlatformCode string `json:"platformCode"` + ApiBaseUrl string `json:"apiBaseUrl"` + AuthType string `json:"authType"` + HasToken bool `json:"hasToken"` + InterfaceCount int `json:"interfaceCount"` + Interfaces []struct { + Code string `json:"code"` + Name string `json:"name"` + Url string `json:"url"` + HasTableDef bool `json:"hasTableDef"` + } `json:"interfaces"` +} + +// QueryConfig 查询配置 +func (c *syncCtrl) QueryConfig(ctx context.Context, req *QueryPlatformConfigReq) (*QueryPlatformConfigRes, error) { + pm := &svc.PlatformManager{} + platform, interfaces, err := pm.GetPlatformWithInterfaces(ctx, req.PlatformCode) + if err != nil { + return nil, err + } + res := &QueryPlatformConfigRes{ + PlatformName: platform.PlatformName, PlatformCode: platform.PlatformCode, + ApiBaseUrl: platform.ApiBaseUrl, AuthType: platform.AuthType, + HasToken: platform.AccessToken != "", InterfaceCount: len(interfaces), + } + for _, iface := range interfaces { + res.Interfaces = append(res.Interfaces, struct { + Code string `json:"code"` + Name string `json:"name"` + Url string `json:"url"` + HasTableDef bool `json:"hasTableDef"` + }{ + Code: iface.Code, Name: iface.Name, Url: iface.Url, + HasTableDef: iface.TableDefinition != nil && len(iface.TableDefinition) > 0, + }) + } + return res, nil +} diff --git a/controller/tencent/oauth_controller.go b/controller/tencent/oauth_controller.go deleted file mode 100644 index 164963a..0000000 --- a/controller/tencent/oauth_controller.go +++ /dev/null @@ -1,121 +0,0 @@ -package tencent - -import ( - "context" - dto "dataengine/model/dto/tencent" - entity "dataengine/model/entity/tencent" - service "dataengine/service/tencent" - - "gitea.com/red-future/common/beans" -) - -type oauthController struct{} - -// OauthController OAuth控制器 -var OauthController = new(oauthController) - -// RefreshToken 刷新腾讯广告Token -func (c *oauthController) RefreshToken(ctx context.Context, req *dto.RefreshTokenReq) (res *dto.RefreshTokenRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.OauthService.RefreshToken(ctx, req) -} - -// SyncAccountRelation 同步账户关系(自动分页获取所有数据) -func (c *oauthController) SyncAccountRelation(ctx context.Context, req *dto.SyncAccountRelationReq) (res *dto.SyncAccountRelationRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.AccountRelationService.SyncAll(ctx, req) -} - -// ListAccountRelation 获取所有账户关系 -func (c *oauthController) ListAccountRelation(ctx context.Context, req *dto.ListAccountRelationReq) (res *dto.ListAccountRelationRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - - list, err := service.AccountRelationService.ListAll(ctx) - if err != nil { - return nil, err - } - - // 转换为DTO - items := make([]dto.AccountRelationItem, 0, len(list)) - for _, item := range list { - items = append(items, dto.AccountRelationItem{ - ID: item.Id, - AccountID: item.AccountID, - CorporationName: item.CorporationName, - IsAdx: item.IsAdx, - IsBid: item.IsBid, - IsMp: item.IsMp, - }) - } - - res = &dto.ListAccountRelationRes{ - List: items, - } - return res, nil -} - -// SyncAudio 同步音乐素材(自动分页获取所有数据) -func (c *oauthController) SyncAudio(ctx context.Context, req *dto.SyncAudioReq) (res *dto.SyncAudioRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.AudioService.SyncAll(ctx, req) -} - -// ListAudio 获取所有音乐素材 -func (c *oauthController) ListAudio(ctx context.Context, req *dto.ListAudioReq) (res []entity.Audio, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.AudioService.ListAll(ctx) -} - -// SyncImage 同步图片素材(遍历所有账户,自动分页) -func (c *oauthController) SyncImage(ctx context.Context, req *dto.SyncImageReq) (res *dto.SyncImageRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.ImageService.SyncAll(ctx, req) -} - -// ListImage 获取所有图片素材(旧接口,保留兼容) -func (c *oauthController) ListImage(ctx context.Context, req *dto.ListImageReq) (res []entity.Image, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.ImageService.ListAll(ctx) -} - -// ListImagePage 分页查询图片素材(支持时间过滤) -func (c *oauthController) ListImagePage(ctx context.Context, req *dto.ListImagePageReq) (res *dto.ListImageRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - // 转换请求参数为Service层使用的类型 - queryReq := &dto.ListImageQueryReq{ - Page: req.Page, - PageSize: req.PageSize, - AccountId: req.AccountId, - StartTime: req.StartTime, - EndTime: req.EndTime, - Status: req.Status, - } - return service.ImageService.ListWithPage(ctx, queryReq) -} - -// SyncVideo 同步视频素材(遍历所有账户,自动分页) -func (c *oauthController) SyncVideo(ctx context.Context, req *dto.SyncVideoReq) (res *dto.SyncVideoRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.VideoService.SyncAll(ctx, req) -} - -// ListVideo 获取所有视频素材(旧接口,保留兼容) -func (c *oauthController) ListVideo(ctx context.Context, req *dto.ListVideoReq) (res []entity.Video, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - return service.VideoService.ListAll(ctx) -} - -// ListVideoPage 分页查询视频素材(支持时间过滤) -func (c *oauthController) ListVideoPage(ctx context.Context, req *dto.ListVideoPageReq) (res *dto.ListVideoRes, err error) { - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - // 转换请求参数为Service层使用的类型 - queryReq := &dto.ListVideoQueryReq{ - Page: req.Page, - PageSize: req.PageSize, - AccountId: req.AccountId, - StartTime: req.StartTime, - EndTime: req.EndTime, - Status: req.Status, - } - return service.VideoService.ListWithPage(ctx, queryReq) -} diff --git a/dao/copydata/api_account_report_detail_dao.go b/dao/copydata/api_account_report_detail_dao.go deleted file mode 100644 index efce28f..0000000 --- a/dao/copydata/api_account_report_detail_dao.go +++ /dev/null @@ -1,160 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "errors" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/util/gconv" - "github.com/sirupsen/logrus" -) - -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 批量插入广告数据报表详情(使用 OnConflict 实现幂等性) -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 - } - - // 执行批量插入,使用 OnConflict 实现幂等性 - _, err = gfdb.DB(ctx).Model(ctx, consts.CidAccountReportDetailTable). - Data(entityList). - OnConflict( - "report_date_str", - "page_number", - "campaign_id", - "creative_id", - ). - Save() - - if err != nil { - logrus.Warnf("批量插入失败,尝试逐条插入: %v", err) - // 批量插入失败,尝试逐条插入 - 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 -} - -// DeleteByDateRange 按日期范围删除数据(用于补偿前去重) -func (d *cidAccountReportDetailDao) DeleteByDateRange(ctx context.Context, advertiserID int64, startDateStr, endDateStr string) (int64, error) { - cols := (&entity.CidAccountReportDetail{}).GetCols() - - result, err := gfdb.DB(ctx).Model(ctx, consts.CidAccountReportDetailTable). - Where(cols.ReportDateStr+" >= ? AND "+cols.ReportDateStr+" <= ?", startDateStr, endDateStr). - Delete() - - if err != nil { - return 0, err - } - - affected, _ := result.RowsAffected() - return affected, nil -} - -// BatchInsertInTx 在事务中批量插入 -func (d *cidAccountReportDetailDao) BatchInsertInTx(ctx context.Context, tx interface{}, reqs []*dto.CidAccountReportDetailItem) (successCount int64, failCount int64, err error) { - if len(reqs) == 0 { - return 0, 0, errors.New("批量插入数据不能为空") - } - - batchSize := 100 - successCount = 0 - failCount = 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, 0, len(batch)) - - for _, req := range batch { - var entityData entity.CidAccountReportDetail - if err = gconv.Struct(req, &entityData); err != nil { - failCount++ - logrus.Errorf("数据转换失败: %v", err) - continue - } - entityList = append(entityList, &entityData) - } - - if len(entityList) == 0 { - continue - } - - _, txErr := gfdb.DB(ctx).Model(ctx, consts.CidAccountReportDetailTable).Data(entityList).Insert() - if txErr != nil { - logrus.Errorf("批量插入失败 batch[%d:%d]: %v", i, end, txErr) - failCount += int64(len(entityList)) - err = txErr - continue - } - - successCount += int64(len(entityList)) - } - - return successCount, failCount, err -} diff --git a/dao/copydata/api_account_report_sum_dao.go b/dao/copydata/api_account_report_sum_dao.go deleted file mode 100644 index dec0c25..0000000 --- a/dao/copydata/api_account_report_sum_dao.go +++ /dev/null @@ -1,113 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "errors" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/util/gconv" - "github.com/sirupsen/logrus" -) - -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 批量插入广告数据报表汇总(使用 OnConflict 实现幂等性) -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 - } - - // 执行批量插入,使用 OnConflict 实现幂等性 - _, err = gfdb.DB(ctx).Model(ctx, consts.CidAccountReportSumTable). - Data(entityList). - OnConflict( - "report_date_str", - "page_number", - "campaign_id", - "creative_id", - ). - Save() - - if err != nil { - logrus.Warnf("批量插入失败,尝试逐条插入: %v", err) - // 批量插入失败,尝试逐条插入 - 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 -} - -// DeleteByDateRange 按日期范围删除数据(用于补偿前去重) -func (d *CidAccountReportSumDao) DeleteByDateRange(ctx context.Context, advertiserID int64, startDateStr, endDateStr string) (int64, error) { - cols := (&entity.CidAccountReportSum{}).GetCols() - - result, err := gfdb.DB(ctx).Model(ctx, consts.CidAccountReportSumTable). - Where(cols.ReportDateStr+" >= ? AND "+cols.ReportDateStr+" <= ?", startDateStr, endDateStr). - Delete() - - if err != nil { - return 0, err - } - - affected, _ := result.RowsAffected() - return affected, nil -} diff --git a/dao/copydata/campaign_report_detail_dao.go b/dao/copydata/campaign_report_detail_dao.go deleted file mode 100644 index cd6fb92..0000000 --- a/dao/copydata/campaign_report_detail_dao.go +++ /dev/null @@ -1,81 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "errors" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/util/gconv" -) - -var CampaignReportDetail = new(CampaignReportDetailDao) - -type CampaignReportDetailDao struct{} - -func (d *CampaignReportDetailDao) Insert(ctx context.Context, req *dto.CampaignReportDetailItem) (id int64, err error) { - var entityData *entity.CampaignReportDetail - if err = gconv.Struct(req, &entityData); err != nil { - return - } - - r, err := gfdb.DB(ctx).Model(ctx, consts.CampaignReportDetailTable).Data(&entityData).Insert() - if err != nil { - return - } - return r.LastInsertId() -} - -func (d *CampaignReportDetailDao) BatchInsert(ctx context.Context, reqs []*dto.CampaignReportDetailItem) (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.CampaignReportDetail, len(batch)) - - for j, req := range batch { - var entityData entity.CampaignReportDetail - 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.CampaignReportDetailTable).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 -} diff --git a/dao/copydata/campaign_report_sum_dao.go b/dao/copydata/campaign_report_sum_dao.go deleted file mode 100644 index cd677ab..0000000 --- a/dao/copydata/campaign_report_sum_dao.go +++ /dev/null @@ -1,86 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "errors" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/util/gconv" -) - -var CampaignReportSum = new(CampaignReportSumDao) - -type CampaignReportSumDao struct{} - -// Insert 插入广告计划效果指标表 -func (d *CampaignReportSumDao) Insert(ctx context.Context, req *dto.CampaignReportSumItem) (id int64, err error) { - var entityData *entity.CampaignReportSum - if err = gconv.Struct(req, &entityData); err != nil { - return - } - - r, err := gfdb.DB(ctx).Model(ctx, consts.CampaignReportSumTable).Data(&entityData).Insert() - if err != nil { - return - } - return r.LastInsertId() -} - -// BatchInsert 批量插入广告计划效果指标表 -func (d *CampaignReportSumDao) BatchInsert(ctx context.Context, reqs []*dto.CampaignReportSumItem) (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.CampaignReportSum, len(batch)) - - for j, req := range batch { - var entityData entity.CampaignReportSum - 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.CampaignReportSumTable).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 -} diff --git a/dao/copydata/creative_report_detail_dao.go b/dao/copydata/creative_report_detail_dao.go deleted file mode 100644 index 6f69443..0000000 --- a/dao/copydata/creative_report_detail_dao.go +++ /dev/null @@ -1,81 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/creative_report_sum_dao.go b/dao/copydata/creative_report_sum_dao.go deleted file mode 100644 index 3e90154..0000000 --- a/dao/copydata/creative_report_sum_dao.go +++ /dev/null @@ -1,86 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/material_report_dao.go b/dao/copydata/material_report_dao.go deleted file mode 100644 index 4a168bc..0000000 --- a/dao/copydata/material_report_dao.go +++ /dev/null @@ -1,128 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/population_report_dao.go b/dao/copydata/population_report_dao.go deleted file mode 100644 index 6baad39..0000000 --- a/dao/copydata/population_report_dao.go +++ /dev/null @@ -1,124 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/storewide_report_detail_dao.go b/dao/copydata/storewide_report_detail_dao.go deleted file mode 100644 index e5853d2..0000000 --- a/dao/copydata/storewide_report_detail_dao.go +++ /dev/null @@ -1,86 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/storewide_report_sum_dao.go b/dao/copydata/storewide_report_sum_dao.go deleted file mode 100644 index 42f48c0..0000000 --- a/dao/copydata/storewide_report_sum_dao.go +++ /dev/null @@ -1,86 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/sync_task_log_dao.go b/dao/copydata/sync_task_log_dao.go index c407804..0beb92a 100644 --- a/dao/copydata/sync_task_log_dao.go +++ b/dao/copydata/sync_task_log_dao.go @@ -28,6 +28,8 @@ func (d *SyncTaskLogDao) Create(ctx context.Context, req *dto.CreateSyncTaskLogR data := map[string]interface{}{ "task_id": req.TaskID, "task_type": req.TaskType, + "platform_code": req.PlatformCode, + "interface_code": req.InterfaceCode, "advertiser_id": req.AdvertiserID, "start_time": req.StartTime, "end_time": req.EndTime, diff --git a/dao/copydata/task_report_dao.go b/dao/copydata/task_report_dao.go deleted file mode 100644 index 19321ae..0000000 --- a/dao/copydata/task_report_dao.go +++ /dev/null @@ -1,124 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/unit_report_detail_dao.go b/dao/copydata/unit_report_detail_dao.go deleted file mode 100644 index a55a6fd..0000000 --- a/dao/copydata/unit_report_detail_dao.go +++ /dev/null @@ -1,83 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/copydata/unit_report_sum_dao.go b/dao/copydata/unit_report_sum_dao.go deleted file mode 100644 index 84e95dd..0000000 --- a/dao/copydata/unit_report_sum_dao.go +++ /dev/null @@ -1,83 +0,0 @@ -package copydata - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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 -} diff --git a/dao/dict/api_field_mapping_config_dao.go b/dao/dict/api_field_mapping_config_dao.go deleted file mode 100644 index bd12b7a..0000000 --- a/dao/dict/api_field_mapping_config_dao.go +++ /dev/null @@ -1,274 +0,0 @@ -package dict - -import ( - "context" - consts "dataengine/consts/public" - dto "dataengine/model/dto/dict" - entity "dataengine/model/entity/dict" - "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 -} diff --git a/dao/tencent/account_relation_dao.go b/dao/tencent/account_relation_dao.go deleted file mode 100644 index 966376d..0000000 --- a/dao/tencent/account_relation_dao.go +++ /dev/null @@ -1,118 +0,0 @@ -package tencent - -import ( - "context" - consts "dataengine/consts/public" - entity "dataengine/model/entity/tencent" - "time" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type accountRelationDao struct{} - -var AccountRelation = new(accountRelationDao) - -// Upsert 插入或更新账户关系(根据account_id判断) -func (d *accountRelationDao) Upsert(ctx context.Context, item *entity.AccountRelation) error { - now := time.Now() - - // 检查是否已存在 - var existing entity.AccountRelation - err := gfdb.DB(ctx).Model(ctx, consts.TencentAccountRelationTable). - Where("tenant_id", item.TenantId). - Where(entity.AccountRelationCols.AccountID, item.AccountID). - WhereNull(entity.AccountRelationCols.DeletedAt). - Scan(&existing) - - // Scan找不到记录时err不为nil,但这是正常情况,需要继续执行插入 - if err != nil && existing.Id == 0 { - // 记录不存在,执行插入 - item.CreatedAt = &now - item.UpdatedAt = &now - - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentAccountRelationTable). - Data(item). - Insert() - - return err - } - - // 记录存在,执行更新 - item.UpdatedAt = &now - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentAccountRelationTable). - Where("id", existing.Id). - Data(g.Map{ - entity.AccountRelationCols.CorporationName: item.CorporationName, - entity.AccountRelationCols.CommentDataList: item.CommentDataList, - entity.AccountRelationCols.IsAdx: item.IsAdx, - entity.AccountRelationCols.IsBid: item.IsBid, - entity.AccountRelationCols.IsMp: item.IsMp, - entity.AccountRelationCols.UpdatedAt: now, - }). - Update() - - return err -} - -// BatchUpsert 批量插入或更新(使用 OnConflict 实现 Upsert) -func (d *accountRelationDao) BatchUpsert(ctx context.Context, items []*entity.AccountRelation) (successCount int, err error) { - if len(items) == 0 { - return 0, nil - } - - logrus.Infof("开始批量Upsert: %d 条记录", len(items)) - - // 分批处理,每批100条 - batchSize := 100 - successCount = 0 - - for i := 0; i < len(items); i += batchSize { - end := i + batchSize - if end > len(items) { - end = len(items) - } - - batch := items[i:end] - - logrus.Infof("处理第 %d-%d 条记录", i+1, end) - - // 执行批量插入,使用 OnConflict 实现 Upsert - result, err := gfdb.DB(ctx).Model(ctx, consts.TencentAccountRelationTable). - Data(batch). - OnConflict(entity.AccountRelationCols.AccountID). - Save() - - if err != nil { - logrus.Errorf("批量Upsert失败: %v,尝试逐条处理", err) - // 批量失败,逐条处理 - for _, item := range batch { - if upsertErr := d.Upsert(ctx, item); upsertErr != nil { - logrus.Errorf("逐条Upsert失败: account_id=%d, err=%v", item.AccountID, upsertErr) - continue - } - successCount++ - } - } else { - affected, _ := result.RowsAffected() - successCount += int(affected) - logrus.Infof("批量Upsert成功: 影响 %d 条记录", affected) - } - } - - logrus.Infof("批量Upsert完成: 成功 %d 条", successCount) - return successCount, nil -} - -// ListAll 获取所有账户关系 -func (d *accountRelationDao) ListAll(ctx context.Context) ([]entity.AccountRelation, error) { - var list []entity.AccountRelation - err := gfdb.DB(ctx).Model(ctx, consts.TencentAccountRelationTable). - WhereNull(entity.AccountRelationCols.DeletedAt). - OrderAsc(entity.AccountRelationCols.AccountID). - Scan(&list) - - return list, err -} diff --git a/dao/tencent/audio_dao.go b/dao/tencent/audio_dao.go deleted file mode 100644 index d57bb72..0000000 --- a/dao/tencent/audio_dao.go +++ /dev/null @@ -1,111 +0,0 @@ -package tencent - -import ( - "context" - consts "dataengine/consts/public" - entity "dataengine/model/entity/tencent" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type audioDao struct{} - -var Audio = new(audioDao) - -// BatchUpsert 批量插入或更新(使用 OnConflict 实现 Upsert) -func (d *audioDao) BatchUpsert(ctx context.Context, items []*entity.Audio) (successCount int, err error) { - if len(items) == 0 { - return 0, nil - } - - logrus.Infof("开始批量Upsert音乐素材: %d 条记录", len(items)) - - // 分批处理,每批100条 - batchSize := 100 - successCount = 0 - - for i := 0; i < len(items); i += batchSize { - end := i + batchSize - if end > len(items) { - end = len(items) - } - - batch := items[i:end] - - logrus.Infof("处理第 %d-%d 条音乐素材记录", i+1, end) - - // 执行批量插入,使用 OnConflict 实现 Upsert - result, err := gfdb.DB(ctx).Model(ctx, consts.TencentAudioTable). - Data(batch). - OnConflict(entity.AudioCols.AudioId). - Save() - - if err != nil { - logrus.Errorf("批量Upsert音乐素材失败: %v,尝试逐条处理", err) - // 批量失败,逐条处理 - for _, item := range batch { - if upsertErr := d.upsertSingle(ctx, item); upsertErr != nil { - logrus.Errorf("逐条Upsert音乐素材失败: audio_id=%s, err=%v", item.AudioId, upsertErr) - continue - } - successCount++ - } - } else { - affected, _ := result.RowsAffected() - successCount += int(affected) - logrus.Infof("批量Upsert音乐素材成功: 影响 %d 条记录", affected) - } - } - - logrus.Infof("批量Upsert音乐素材完成: 成功 %d 条", successCount) - return successCount, nil -} - -// upsertSingle 单条插入或更新 -func (d *audioDao) upsertSingle(ctx context.Context, item *entity.Audio) error { - var existing entity.Audio - err := gfdb.DB(ctx).Model(ctx, consts.TencentAudioTable). - Where("tenant_id", item.TenantId). - Where(entity.AudioCols.AudioId, item.AudioId). - WhereNull(entity.AudioCols.DeletedAt). - Scan(&existing) - - if err != nil && existing.Id == 0 { - // 记录不存在,执行插入 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentAudioTable). - Data(item). - Insert() - return err - } - - // 记录存在,执行更新 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentAudioTable). - Where("id", existing.Id). - Data(g.Map{ - entity.AudioCols.CoverImageUrl: item.CoverImageUrl, - entity.AudioCols.AudioName: item.AudioName, - entity.AudioCols.Author: item.Author, - entity.AudioCols.Duration: item.Duration, - entity.AudioCols.ExpireTime: item.ExpireTime, - entity.AudioCols.FeelTags: item.FeelTags, - entity.AudioCols.GenreTags: item.GenreTags, - entity.AudioCols.Updater: item.Updater, - entity.AudioCols.UpdatedAt: item.UpdatedAt, - }). - Update() - - return err -} - -// ListAll 获取所有音乐素材 -func (d *audioDao) ListAll(ctx context.Context) ([]entity.Audio, error) { - var list []entity.Audio - err := gfdb.DB(ctx).Model(ctx, consts.TencentAudioTable). - WhereNull(entity.AudioCols.DeletedAt). - OrderAsc(entity.AudioCols.AudioId). - Scan(&list) - - return list, err -} diff --git a/dao/tencent/image_dao.go b/dao/tencent/image_dao.go deleted file mode 100644 index e697cdc..0000000 --- a/dao/tencent/image_dao.go +++ /dev/null @@ -1,159 +0,0 @@ -package tencent - -import ( - "context" - consts "dataengine/consts/public" - entity "dataengine/model/entity/tencent" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type imageDao struct{} - -var Image = new(imageDao) - -// BatchUpsert 批量插入或更新(使用 OnConflict 实现 Upsert) -func (d *imageDao) BatchUpsert(ctx context.Context, items []*entity.Image) (successCount int, err error) { - if len(items) == 0 { - return 0, nil - } - - logrus.Infof("开始批量Upsert图片素材: %d 条记录", len(items)) - - // 分批处理,每批100条 - batchSize := 100 - successCount = 0 - - for i := 0; i < len(items); i += batchSize { - end := i + batchSize - if end > len(items) { - end = len(items) - } - - batch := items[i:end] - - logrus.Infof("处理第 %d-%d 条图片素材记录", i+1, end) - - // 执行批量插入,使用 OnConflict 实现 Upsert - result, err := gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - Data(batch). - OnConflict("(image_id, account_id)"). - Save() - - if err != nil { - logrus.Errorf("批量Upsert图片素材失败: %v,尝试逐条处理", err) - // 批量失败,逐条处理 - for _, item := range batch { - if upsertErr := d.upsertSingle(ctx, item); upsertErr != nil { - logrus.Errorf("逐条Upsert图片素材失败: image_id=%s, account_id=%d, err=%v", item.ImageId, item.AccountId, upsertErr) - } else { - successCount++ - } - } - } else { - affected, _ := result.RowsAffected() - successCount += int(affected) - logrus.Infof("批量Upsert图片素材成功: 影响 %d 条记录", affected) - } - } - - logrus.Infof("批量Upsert图片素材完成: 成功 %d 条", successCount) - return successCount, nil -} - -// upsertSingle 单条插入或更新 -func (d *imageDao) upsertSingle(ctx context.Context, item *entity.Image) error { - var existing entity.Image - err := gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - Where(entity.ImageCols.ImageId, item.ImageId). - Where(entity.ImageCols.AccountId, item.AccountId). - WhereNull("deleted_at"). - Scan(&existing) - - if err != nil && existing.Id == 0 { - // 记录不存在,执行插入 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - Data(item). - Insert() - return err - } - - // 记录存在,执行更新 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - Where("id", existing.Id). - Data(g.Map{ - entity.ImageCols.Width: item.Width, - entity.ImageCols.Height: item.Height, - entity.ImageCols.FileSize: item.FileSize, - entity.ImageCols.Type: item.Type, - entity.ImageCols.Signature: item.Signature, - entity.ImageCols.Description: item.Description, - entity.ImageCols.PreviewUrl: item.PreviewUrl, - entity.ImageCols.ThumbPreviewUrl: item.ThumbPreviewUrl, - entity.ImageCols.Status: item.Status, - entity.ImageCols.LastModifiedTime: item.LastModifiedTime, - }). - Update() - - return err -} - -// ListAll 获取所有图片素材 -func (d *imageDao) ListAll(ctx context.Context) ([]entity.Image, error) { - var list []entity.Image - err := gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - WhereNull("deleted_at"). - OrderAsc(entity.ImageCols.ImageId). - Scan(&list) - - return list, err -} - -// ListWithPage 分页查询图片素材(支持时间过滤) -func (d *imageDao) ListWithPage(ctx context.Context, page, pageSize int, accountId *int64, startTime, endTime *int64, status string) ([]entity.Image, int, error) { - model := gfdb.DB(ctx).Model(ctx, consts.TencentImageTable). - WhereNull("deleted_at") - - // 账户ID过滤 - if accountId != nil && *accountId > 0 { - model = model.Where(entity.ImageCols.AccountId, *accountId) - } - - // 状态过滤 - if status != "" { - model = model.Where(entity.ImageCols.Status, status) - } - - // 时间范围过滤(根据 last_modified_time) - if startTime != nil && *startTime > 0 { - model = model.WhereGTE(entity.ImageCols.LastModifiedTime, *startTime) - } - if endTime != nil && *endTime > 0 { - model = model.WhereLTE(entity.ImageCols.LastModifiedTime, *endTime) - } - - // 设置排序(按最后修改时间降序) - model = model.OrderDesc(entity.ImageCols.LastModifiedTime) - - // 获取总数 - total, err := model.Count() - if err != nil { - return nil, 0, err - } - - // 分页查询 - var list []entity.Image - if page > 0 && pageSize > 0 { - err = model.Page(page, pageSize).Scan(&list) - } else { - err = model.Scan(&list) - } - - if err != nil { - return nil, 0, err - } - - return list, total, nil -} diff --git a/dao/tencent/video_dao.go b/dao/tencent/video_dao.go deleted file mode 100644 index cdfa78f..0000000 --- a/dao/tencent/video_dao.go +++ /dev/null @@ -1,158 +0,0 @@ -package tencent - -import ( - "context" - consts "dataengine/consts/public" - entity "dataengine/model/entity/tencent" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type videoDao struct{} - -var Video = new(videoDao) - -// BatchUpsert 批量插入或更新(使用 OnConflict 实现 Upsert) -func (d *videoDao) BatchUpsert(ctx context.Context, items []*entity.Video) (successCount int, err error) { - if len(items) == 0 { - return 0, nil - } - - logrus.Infof("开始批量Upsert视频素材: %d 条记录", len(items)) - - // 分批处理,每批100条 - batchSize := 100 - successCount = 0 - - for i := 0; i < len(items); i += batchSize { - end := i + batchSize - if end > len(items) { - end = len(items) - } - - batch := items[i:end] - - logrus.Infof("处理第 %d-%d 条视频素材记录", i+1, end) - - // 执行批量插入,使用 OnConflict 实现 Upsert - result, err := gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - Data(batch). - OnConflict("(video_id, account_id)"). - Save() - - if err != nil { - logrus.Errorf("批量Upsert视频素材失败: %v,尝试逐条处理", err) - // 批量失败,逐条处理 - for _, item := range batch { - if upsertErr := d.upsertSingle(ctx, item); upsertErr != nil { - logrus.Errorf("逐条Upsert视频素材失败: video_id=%s, account_id=%d, err=%v", item.VideoId, item.AccountId, upsertErr) - } else { - successCount++ - } - } - } else { - affected, _ := result.RowsAffected() - successCount += int(affected) - logrus.Infof("批量Upsert视频素材成功: 影响 %d 条记录", affected) - } - } - - logrus.Infof("批量Upsert视频素材完成: 成功 %d 条", successCount) - return successCount, nil -} - -// upsertSingle 单条插入或更新 -func (d *videoDao) upsertSingle(ctx context.Context, item *entity.Video) error { - var existing entity.Video - err := gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - Where(entity.VideoCols.VideoId, item.VideoId). - Where(entity.VideoCols.AccountId, item.AccountId). - WhereNull("deleted_at"). - Scan(&existing) - - if err != nil && existing.Id == 0 { - // 记录不存在,执行插入 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - Data(item). - Insert() - return err - } - - // 记录存在,执行更新 - _, err = gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - Where("id", existing.Id). - Data(g.Map{ - entity.VideoCols.Width: item.Width, - entity.VideoCols.Height: item.Height, - entity.VideoCols.FileSize: item.FileSize, - entity.VideoCols.Type: item.Type, - entity.VideoCols.Signature: item.Signature, - entity.VideoCols.Description: item.Description, - entity.VideoCols.PreviewUrl: item.PreviewUrl, - entity.VideoCols.Status: item.Status, - entity.VideoCols.LastModifiedTime: item.LastModifiedTime, - }). - Update() - - return err -} - -// ListAll 获取所有视频素材 -func (d *videoDao) ListAll(ctx context.Context) ([]entity.Video, error) { - var list []entity.Video - err := gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - WhereNull("deleted_at"). - OrderAsc(entity.VideoCols.VideoId). - Scan(&list) - - return list, err -} - -// ListWithPage 分页查询视频素材(支持时间过滤) -func (d *videoDao) ListWithPage(ctx context.Context, page, pageSize int, accountId *int64, startTime, endTime *int64, status string) ([]entity.Video, int, error) { - model := gfdb.DB(ctx).Model(ctx, consts.TencentVideoTable). - WhereNull("deleted_at") - - // 账户ID过滤 - if accountId != nil && *accountId > 0 { - model = model.Where(entity.VideoCols.AccountId, *accountId) - } - - // 状态过滤 - if status != "" { - model = model.Where(entity.VideoCols.Status, status) - } - - // 时间范围过滤(根据 last_modified_time) - if startTime != nil && *startTime > 0 { - model = model.WhereGTE(entity.VideoCols.LastModifiedTime, *startTime) - } - if endTime != nil && *endTime > 0 { - model = model.WhereLTE(entity.VideoCols.LastModifiedTime, *endTime) - } - - // 设置排序(按最后修改时间降序) - model = model.OrderDesc(entity.VideoCols.LastModifiedTime) - - // 获取总数 - total, err := model.Count() - if err != nil { - return nil, 0, err - } - - // 分页查询 - var list []entity.Video - if page > 0 && pageSize > 0 { - err = model.Page(page, pageSize).Scan(&list) - } else { - err = model.Scan(&list) - } - - if err != nil { - return nil, 0, err - } - - return list, total, nil -} diff --git a/deploy-k3s.ps1 b/deploy-k3s.ps1 deleted file mode 100644 index 296bb66..0000000 --- a/deploy-k3s.ps1 +++ /dev/null @@ -1,162 +0,0 @@ -Write-Host "=== Data Engine K3s Deploy ===" -ForegroundColor Cyan - -$ErrorActionPreference = "Stop" - -Write-Host "`n[1/7] Handle private dependencies..." -ForegroundColor Yellow -if (Test-Path "..\common") { - Copy-Item -Path "..\common" -Destination ".\common" -Recurse -Force - $content = Get-Content go.mod -Raw - $content = $content -replace 'replace gitea\.com/red-future/common => \.\./common', 'replace gitea.com/red-future/common => ./common' - Set-Content go.mod $content -NoNewline - Write-Host "[OK] Dependencies ready" -ForegroundColor Green -} else { - Write-Host "[ERROR] common directory not found" -ForegroundColor Red - exit 1 -} - -if (-not (Test-Path "k8s")) { - New-Item -ItemType Directory -Path "k8s" | Out-Null -} - -Write-Host "`n[2/7] Build Docker image..." -ForegroundColor Yellow -docker build -t data-engine:latest . -if ($LASTEXITCODE -ne 0) { - Write-Host "[ERROR] Build failed" -ForegroundColor Red - exit 1 -} -Write-Host "[OK] Image built" -ForegroundColor Green - -Write-Host "`n[3/7] Import image to k3s container..." -ForegroundColor Yellow -$tarPath = "$PWD\data-engine.tar" -Write-Host "Saving image to tar..." -ForegroundColor Cyan -docker save -o $tarPath data-engine:latest - -$k3sContainer = "k3s-server" -Write-Host "Copying to k3s container..." -ForegroundColor Cyan -docker cp $tarPath "${k3sContainer}:/tmp/data-engine.tar" - -Write-Host "Importing in container..." -ForegroundColor Cyan -docker exec $k3sContainer ctr -n k8s.io images import /tmp/data-engine.tar - -docker exec $k3sContainer rm /tmp/data-engine.tar -Remove-Item $tarPath -ErrorAction SilentlyContinue - -if ($LASTEXITCODE -ne 0) { - Write-Host "[ERROR] Import failed" -ForegroundColor Red - exit 1 -} - -Write-Host "[OK] Image imported" -ForegroundColor Green - -Write-Host "`n[3.5/7] Check and fix metrics-server..." -ForegroundColor Yellow -$metricsPod = kubectl -n kube-system get pods -l k8s-app=metrics-server -o jsonpath='{.items[0].metadata.name}' 2>$null -if ($metricsPod) { - $podStatus = kubectl -n kube-system get pod $metricsPod -o jsonpath='{.status.phase}' 2>$null - if ($podStatus -ne "Running") { - Write-Host " metrics-server status: $podStatus, attempting to fix..." -ForegroundColor Yellow - - $podDetail = kubectl -n kube-system describe pod $metricsPod 2>&1 - if ($podDetail -match "ImagePullBackOff|ErrImagePull") { - Write-Host " Detected image pull issue, using domestic registry..." -ForegroundColor Cyan - - try { - docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3 2>$null - if ($LASTEXITCODE -eq 0) { - docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3 rancher/mirrored-metrics-server:v0.8.0 - $msTarPath = "$PWD\metrics-server.tar" - docker save -o $msTarPath rancher/mirrored-metrics-server:v0.8.0 - if ($LASTEXITCODE -eq 0) { - docker cp $msTarPath "${k3sContainer}:/tmp/metrics-server.tar" - docker exec $k3sContainer ctr -n k8s.io images import /tmp/metrics-server.tar - docker exec $k3sContainer rm /tmp/metrics-server.tar - Remove-Item $msTarPath -ErrorAction SilentlyContinue - - kubectl -n kube-system delete pod $metricsPod --force --grace-period=0 - Write-Host " [OK] metrics-server image imported and pod restarted" -ForegroundColor Green - } - } - } catch { - Write-Host " [WARN] Failed to import metrics-server image" -ForegroundColor Yellow - } - } else { - kubectl -n kube-system delete pod $metricsPod - Write-Host " [OK] metrics-server pod restarted" -ForegroundColor Green - } - } else { - Write-Host " [OK] metrics-server is running" -ForegroundColor Green - } -} else { - Write-Host " metrics-server not found, deploying..." -ForegroundColor Yellow - kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 2>$null -} - -Write-Host " Waiting for metrics-server to be ready..." -ForegroundColor Cyan -$retryCount = 0 -$maxRetries = 40 -while ($retryCount -lt $maxRetries) { - $msPod = kubectl -n kube-system get pods -l k8s-app=metrics-server -o jsonpath='{.items[0].status.phase}' 2>$null - $msReady = kubectl -n kube-system get pods -l k8s-app=metrics-server -o jsonpath="{.items[0].status.conditions[?(@.type=='Ready')].status}" 2>$null - - if ($msPod -eq "Running" -and $msReady -eq "True") { - Write-Host " [OK] metrics-server is ready" -ForegroundColor Green - break - } - - Start-Sleep -Seconds 5 - $retryCount++ - if ($retryCount % 8 -eq 0) { - Write-Host " Still waiting... ($retryCount/$maxRetries) - Status: $msPod" -ForegroundColor Gray - } -} - -if ($retryCount -eq $maxRetries) { - Write-Host " [WARN] metrics-server may not be ready yet, HPA might not work immediately" -ForegroundColor Yellow - Write-Host " Run '.\fix-metrics-server.ps1' manually if needed" -ForegroundColor Gray -} - -Write-Host "`n[4/7] Deploy to K3s..." -ForegroundColor Yellow -kubectl apply -f k8s/configmap.yaml -kubectl apply -f k8s/pvc.yaml -kubectl apply -f k8s/deployment.yaml -kubectl apply -f k8s/service.yaml -kubectl apply -f k8s/hpa.yaml -Write-Host "[OK] Resources created" -ForegroundColor Green - -Write-Host "`n[5/7] Wait for Pod ready..." -ForegroundColor Yellow -kubectl wait --for=condition=ready --timeout=180s pod -l app=data-engine -Write-Host "[OK] Pod is ready" -ForegroundColor Green - -Write-Host "`n[6/7] Status:" -ForegroundColor Yellow -kubectl get pods -l app=data-engine -kubectl get svc data-engine-service - -Write-Host "`n[7/7] Logs:" -ForegroundColor Yellow -kubectl logs -l app=data-engine --tail=50 - -Write-Host "`nHPA Status:" -ForegroundColor Cyan -try { - $hpaExists = kubectl get hpa data-engine-hpa 2>&1 - if ($LASTEXITCODE -eq 0) { - Write-Host $hpaExists -ForegroundColor Green - kubectl describe hpa data-engine-hpa | Select-String "Metrics|Conditions" -Context 0,2 - } else { - Write-Host "[WARN] HPA not available yet, please check manually later" -ForegroundColor Yellow - } -} catch { - Write-Host "[WARN] HPA status check failed, please check manually later" -ForegroundColor Yellow -} - -Write-Host "`n=== Deployment Success ===" -ForegroundColor Green -Write-Host "Access: http://:30301" -ForegroundColor Cyan -Write-Host "`nCommands:" -ForegroundColor Yellow -Write-Host " Logs: kubectl logs -l app=data-engine -f" -ForegroundColor White -Write-Host " Status: kubectl get pods -l app=data-engine" -ForegroundColor White -Write-Host " HPA: kubectl get hpa data-engine-hpa -w" -ForegroundColor White -Write-Host " Delete: kubectl delete -f k8s/" -ForegroundColor White - -Write-Host "`nCleanup..." -ForegroundColor Yellow -if (Test-Path ".\common") { - Remove-Item -Path ".\common" -Recurse -Force -} -git checkout go.mod 2>$null -Write-Host "[OK] Done" -ForegroundColor Green diff --git a/docs/USAGE.md b/docs/USAGE.md new file mode 100644 index 0000000..426ac64 --- /dev/null +++ b/docs/USAGE.md @@ -0,0 +1,363 @@ +# Data Engine 通用数据同步引擎 - 使用文档 + +## 一、概述 + +本系统是一个**配置驱动的通用数据同步引擎**,核心思想是:**平台管理 + 接口管理**。 + +您只需要通过 API 维护好平台和接口的配置信息(认证方式、请求参数、响应解析、目标表结构),系统就会自动: + +1. **创建目标表**(根据 `table_definition` 自动建表) +2. **拉取数据**(分页请求、多步骤请求、并发处理) +3. **写入数据库**(批量 upsert) +4. **增量同步**(通过 `filtering` 按最后修改时间过滤) +5. **自动调度**(按配置的时间间隔循环执行) +6. **补偿重试**(失败的同步任务自动重试,退避递增) + +**不需要为每个平台写一行业务代码。** + +--- + +## 二、数据库初始化 + +### 2.1 核心表 + +首次使用需执行 `sql/init_core_tables.sql`,创建以下 4 张表: + +| 表名 | 说明 | +|------|------| +| `api_datasource_platform` | 数据源平台配置(认证信息、限流等) | +| `api_interface` | 接口配置(URL、请求参数、表结构等) | +| `sync_task_log` | 同步任务日志(记录状态,用于补偿) | +| `sync_tracker` | 同步跟踪(记录每个接口的最后同步时间) | + +### 2.2 初始化数据 + +执行 `sql/seed_data.sql` 创建腾讯广告平台+接口配置。如需清空重来: + +```sql +ALTER SEQUENCE api_datasource_platform_id_seq RESTART WITH 1; +ALTER SEQUENCE api_interface_id_seq RESTART WITH 1; +DELETE FROM api_interface; +DELETE FROM api_datasource_platform; +\i sql/seed_data.sql +``` + +--- + +## 三、配置说明 + +### 3.1 平台管理 (`api_datasource_platform`) + +| 字段 | 说明 | 示例 | +|------|------|------| +| `platform_code` | 平台编码(唯一) | `tencent` | +| `platform_name` | 平台名称 | `腾讯广告` | +| `api_base_url` | API 基础地址 | `https://api.e.qq.com/v3.0` | +| `auth_type` | 认证类型 | `OAUTH2` / `TOKEN` / `API_KEY` / `BASIC` | +| `token` | access_token | `xxxxx` | +| `client_id` / `client_secret` | OAuth2 凭证 | `xxxxx` | +| `auth_config` | 自定义认证配置(JSONB) | 详见 3.1.1 | + +#### 3.1.1 `auth_config` 字段详解 + +```json +{ + "token_in_query": true, // token 放在 URL 查询参数 + "query_key": "access_token", // 参数名,默认 "access_token" + "header_name": "Authorization", // token 放请求头时的头名 + "header_format": "Bearer {token}", + "extra_query_params": { // 额外查询参数 + "timestamp": "{timestamp}", // {timestamp} 自动替换为当前时间戳 + "nonce": "{nonce}" // {nonce} 自动替换为随机字符串 + } +} +``` + +### 3.2 接口管理 (`api_interface`) + +| 字段 | 说明 | 示例 | +|------|------|------| +| `platform_id` | 所属平台 ID | `1` | +| `name` / `code` | 接口名称 / 唯一编码 | `图片素材` / `image` | +| `url` | 接口地址(相对路径) | `/images/get` | +| `method` | 请求方法 | `GET` / `POST` | +| `request_config` | 请求配置(JSONB) | 详见 3.2.1 | +| `response_config` | 响应配置(JSONB) | 详见 3.2.2 | +| `table_definition` | 表结构定义(JSONB) | 详见 3.3 | + +#### 3.2.1 `request_config` 字段详解 + +```json +{ + "parameters_location": "query", // 参数位置: "query"(URL) / "body"(默认) + "page": 1, + "page_size": 100, + "page_param": "page", // 分页参数名(自定义) + "page_size_param": "page_size", + "time_field": "last_modified_time", // 增量时间字段 + "fields": ["field1", "field2"], // 请求字段(如音频的 fields) + "prefetch": { ... } // 预取配置(见下文) +} +``` + +**`parameters_location` 说明**: +- 未设置或 `"body"` → 参数放在 JSON body 中(POST 请求) +- `"query"` → 参数放在 URL 查询字符串中(GET 请求用) +- 当 `method=GET` 时,即使不设置也默认走 query + +**预取(prefetch)**:某些接口需要"先拿列表→遍历每个元素查数据"(如先拉账户列表,再遍历拉图片)。 + +```json +"prefetch": { + "url": "/advertiser/get", // 预取接口地址 + "method": "GET", + "response_path": "data.list", // 从响应中取值路径 + "target_param": "account_id", // 注入主请求的参数名 + "value_field": "account_id" // 从预取结果取哪个字段 +} +``` + +**并发处理**:有 prefetch 的接口会并发处理每个实体,并发数由 `config.yml` 的 `sync.concurrency` 控制。 + +**增量同步**:配置了 `time_field` 的接口,增量同步时会自动生成 `filtering` 参数: +```json +{"field": "last_modified_time", "operator": "GREATER_EQUALS", "values": [""]} +``` + +#### 3.2.2 `response_config` 字段详解 + +系统默认解析的响应格式: + +```json +{ "code": 0, "message": "success", "data": { "list": [...], "page_info": { "total_page": N } } } +``` + +可通过 `response_config` 自定义数据路径: +```json +{ "list_path": "data.list" } +``` + +### 3.3 `table_definition` 字段详解 + +```json +{ + "table_name": "tencent_image", + "columns": [ + { "name": "image_id", "type": "VARCHAR(100)", "comment": "图片ID" }, + { "name": "account_id", "type": "BIGINT", "comment": "账户ID" } + ], + "conflict_keys": ["image_id", "account_id"] +} +``` + +**自动添加的列**(无需声明): + +| 列名 | 类型 | 说明 | +|------|------|------| +| `id` | BIGSERIAL PRIMARY KEY | 自增主键 | +| `tenant_id` | BIGINT | 租户 ID | +| `creator` | VARCHAR(64) | 创建人 | +| `created_at` | TIMESTAMPTZ | 创建时间 | +| `updater` | VARCHAR(64) | 更新人 | +| `updated_at` | TIMESTAMPTZ | 更新时间 | +| `deleted_at` | TIMESTAMPTZ | 软删除 | +| `raw_data` | JSONB | 原始响应数据 | + +--- + +## 四、API 接口 + +基础地址:`http://localhost:3002` + +### 4.1 平台管理 + +| 方法 | 路径 | 说明 | +|------|------|------| +| POST | `/api/datasourcePlatform/createDatasourcePlatform` | 创建平台 | +| GET | `/api/datasourcePlatform/listDatasourcePlatforms` | 列表 | +| GET | `/api/datasourcePlatform/getDatasourcePlatform` | 详情 | +| GET | `/api/datasourcePlatform/getPlatformByCode` | 按编码查 | +| PUT | `/api/datasourcePlatform/updateDatasourcePlatform` | 更新 | +| PUT | `/api/datasourcePlatform/updateDatasourcePlatformStatus` | 更新状态 | +| DELETE | `/api/datasourcePlatform/deleteDatasourcePlatform` | 删除 | +| GET | `/api/datasourcePlatform/getPlatformStatistics` | 统计 | + +### 4.2 接口管理 + +| 方法 | 路径 | 说明 | +|------|------|------| +| POST | `/api/apiInterface/createApiInterface` | 创建接口 | +| GET | `/api/apiInterface/listApiInterfaces` | 列表 | +| GET | `/api/apiInterface/getApiInterface` | 详情 | +| PUT | `/api/apiInterface/updateApiInterface` | 更新 | +| PUT | `/api/apiInterface/updateApiInterfaceStatus` | 更新状态 | +| DELETE | `/api/apiInterface/deleteApiInterface` | 删除 | + +### 4.3 同步控制 + +| 方法 | 路径 | 说明 | +|------|------|------| +| POST | `/api/sync/ctrl/trigger` | 触发同步 | +| GET | `/api/sync/ctrl/config` | 查询配置 | + +**触发同步示例:** + +```bash +curl -X POST http://localhost:3002/api/sync/ctrl/trigger \ + -H 'Content-Type: application/json' \ + -d '{"platformCode":"tencent","interfaceCode":"image","fullSync":true}' +``` + +响应: +```json +{ + "success": true, + "tableName": "tencent_image", + "totalRows": 1500, + "insertedRows": 1450, + "duration": "12.3s" +} +``` + +--- + +## 五、配置文件 (`config.yml`) + +```yaml +sync: + page_size: 100 # 每次分页请求条数 + concurrency: 5 # 并发处理数(prefetch 遍历实体时) + retry_count: 3 # 最大重试次数 + sync_interval_minutes: 60 # 自动同步间隔(分钟) + compensation_interval_seconds: 300 # 补偿扫描间隔(秒) + auto_sync_enabled: true # 是否启用自动同步 + +tencent: + oauth: + client_id: "1112038234" + client_secret: "GxyjXFbZAs5dnsNQ" + access_token: "4bacfc7c9b0a31f70ec0eb4771f8b542" + refresh_token: "d15b37363a42449026d337708516e95e" +``` + +--- + +## 六、自动同步机制 + +### 6.1 启动流程 + +1. 服务启动 → `InitAndStartAutoSync` 在 goroutine 中启动调度器 +2. 自动扫描所有 ACTIVE 平台下有 `table_definition` 的接口 +3. 无 `sync_tracker` 记录 → 全量拉取;有记录 → 增量拉取 + +### 6.2 增量同步原理 + +- `sync_tracker` 表记录每个接口的最后同步时间 +- 配置了 `time_field` 的接口,增量时生成 `filtering=[{"field":"last_modified_time","operator":"GREATER_EQUALS","values":["<时间戳>"]}]` +- 不支持时间过滤的接口(如 audio/advertiser)每次全量,`ON CONFLICT` 去重 + +### 6.3 异常中断恢复 + +- 同步开始前写 `sync_tracker.sync_status='running'` +- 同步完成后写 `'success'` +- 重启检测到 `'running'` → 日志告警 → 重新全量 + +--- + +## 七、补偿机制 + +### 7.1 工作原理 + +1. 同步失败 → 自动写入 `sync_task_log`(status=failed) +2. 补偿调度器(随主服务自动启动)每 N 秒扫描 failed 记录 +3. 对未达最大重试次数的任务,调用 `SyncByConfig` 重试 +4. 重试间隔按退避策略递增:5min → 15min → 30min → 60min → 120min +5. 达最大次数 → 标记 `manual_review`,等待人工介入 + +### 7.2 配置 + +```yaml +sync: + compensation_interval_seconds: 300 # 扫描间隔 + retry_count: 3 # 最大重试次数 +``` + +补偿调度器随主服务自动启动,无需手动运行。 + +--- + +## 八、当前已配置接口(腾讯广告) + +| 接口编码 | 名称 | 方法+路径 | 类型 | 增量 | +|------|------|------|------|------| +| `account_relation` | 账户列表 | `GET /advertiser/get` | 单接口分页 | 不支持 | +| `image` | 图片素材 | `GET /images/get` | prefetch 遍历账户 | ✅ `last_modified_time` | +| `video` | 视频素材 | `GET /videos/get` | prefetch 遍历账户 | ✅ `last_modified_time` | +| `audio` | 音频素材 | `POST /muse_audios/get` | 单接口 POST | 不支持 | + +三个素材表自动包含 `verify_status DEFAULT 'PENDING'`、`verified_at`、`verified_by` 校验字段。 + +### 图片/视频同步流程 + +``` +SyncByConfig("tencent", "image") + ├── ① 预取: 分页拉取 /advertiser/get → 774 个 account_id + │ 数据同时存入 tencent_account_relation 表 + ├── ② 并发遍历账户(config.yml concurrency=5) + │ 每个 account_id → GET /images/get?account_id=xxx&page=1&page_size=100 + │ 自动补充 filtering(增量时) + │ 结果 upsert 到 tencent_image + └── ③ 更新 sync_tracker 记录同步时间 +``` + +### 音频同步流程 + +``` +单次 POST /muse_audios/get → 分页拉全量 → upsert 到 tencent_audio +``` + +--- + +## 九、快速开始 + +```bash +# 1. 建表 +psql -h localhost -U postgres -d data-engine -f sql/init_core_tables.sql + +# 2. 初始化数据 +psql -h localhost -U postgres -d data-engine -f sql/seed_data.sql + +# 3. 启动 +go run main.go +``` + +启动后自动同步和补偿调度器自动运行。也可手动触发: + +```bash +# 触发图片全量同步 +curl -X POST http://localhost:3002/api/sync/ctrl/trigger \ + -H 'Content-Type: application/json' \ + -d '{"platformCode":"tencent","interfaceCode":"image","fullSync":true}' +``` + +--- + +## 十、常见问题 + +**Q: 响应格式不符合 `{code: 0, data: {list: [...]}}` 怎么办?** + +修改 `dynamic_sync.go` 的 `parseResp` 函数。 + +**Q: 如何添加新平台?** + +调用平台管理 API 创建平台 → 调用接口管理 API 创建接口(带 `table_definition`)→ 系统自动建表并同步。 + +**Q: prefetch 的响应格式要求?** + +必须是 JSON,`response_path` 指向一个数组。如 `response_path: "data.list"` 从 `data.list` 取值。 + +**Q: 如何排查同步失败?** + +1. `GET /api/sync/ctrl/config?platformCode=xxx` 查看配置 +2. 查询 `sync_task_log` 表看失败记录 +3. 补偿调度器会自动重试,日志会打印重试过程 diff --git a/fix-metrics-server.ps1 b/fix-metrics-server.ps1 deleted file mode 100644 index 494392e..0000000 --- a/fix-metrics-server.ps1 +++ /dev/null @@ -1,60 +0,0 @@ -Write-Host "=== Fix metrics-server ===" -ForegroundColor Cyan -Write-Host "" - -$k3sContainer = "k3s-server" -$TARGET_IMAGE = "rancher/mirrored-metrics-server:v0.8.0" - -Write-Host "[Step 1] Pull image from domestic registry..." -ForegroundColor Yellow -docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3 -if ($LASTEXITCODE -ne 0) { - Write-Host "[ERROR] Failed to pull image" -ForegroundColor Red - exit 1 -} - -Write-Host "[Step 2] Tag image to match K3s requirement..." -ForegroundColor Yellow -docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3 $TARGET_IMAGE -Write-Host "[OK] Image tagged as $TARGET_IMAGE" -ForegroundColor Green - -Write-Host "[Step 3] Save to tar file..." -ForegroundColor Yellow -$tarPath = "$PWD\metrics-server.tar" -docker save -o $tarPath $TARGET_IMAGE -Write-Host "[OK] Saved: $([math]::Round((Get-Item $tarPath).Length / 1MB, 2)) MB" -ForegroundColor Green - -Write-Host "[Step 4] Copy to K3s container..." -ForegroundColor Yellow -docker cp $tarPath "${k3sContainer}:/tmp/metrics-server.tar" -Write-Host "[OK] Copied" -ForegroundColor Green - -Write-Host "[Step 5] Import in K3s..." -ForegroundColor Yellow -docker exec $k3sContainer ctr -n k8s.io images import /tmp/metrics-server.tar -docker exec $k3sContainer rm /tmp/metrics-server.tar -Remove-Item $tarPath -Write-Host "[OK] Imported" -ForegroundColor Green - -Write-Host "[Step 6] Restart metrics-server pod..." -ForegroundColor Yellow -kubectl -n kube-system delete pod -l k8s-app=metrics-server --force --grace-period=0 - -Write-Host "Waiting for pod to start..." -ForegroundColor Cyan -Start-Sleep -Seconds 15 - -for ($i = 1; $i -le 30; $i++) { - $status = kubectl -n kube-system get pods -l k8s-app=metrics-server -o jsonpath='{.items[0].status.phase}' 2>$null - $ready = kubectl -n kube-system get pods -l k8s-app=metrics-server -o jsonpath='{.items[0].status.conditions[?(@.type=="Ready")].status}' 2>$null - - if ($status -eq "Running" -and $ready -eq "True") { - Write-Host "[SUCCESS] metrics-server is ready!" -ForegroundColor Green - break - } - - if ($i % 5 -eq 0) { - Write-Host " Waiting... ($i/30) Current: $status" -ForegroundColor Gray - } - Start-Sleep -Seconds 5 -} - -Write-Host "" -Write-Host "Testing metrics API..." -ForegroundColor Cyan -Start-Sleep -Seconds 5 -kubectl top pods - -Write-Host "" -Write-Host "=== Done ===" -ForegroundColor Green \ No newline at end of file diff --git a/main.go b/main.go index 39e2494..744594b 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,9 @@ package main import ( - "dataengine/controller/copydata" "dataengine/controller/dict" - "dataengine/controller/tencent" + syncCtrl "dataengine/controller/sync" + syncSvc "dataengine/service/sync" "gitea.com/red-future/common/http" "gitea.com/red-future/common/jaeger" @@ -17,21 +17,15 @@ func main() { ctx := context.Background() defer jaeger.ShutDown(ctx) + // 启动自动同步(后台循环执行,首次全量后续增量) + syncSvc.InitAndStartAutoSync(ctx) + http.RouteRegister([]interface{}{ // 接口管理 dict.ApiInterface, - dict.FieldMappingConfig, dict.DatasourcePlatform, - copydata.AccountReportDetail, - copydata.TaskReport, - copydata.PopulationReport, - copydata.MaterialReport, - copydata.StorewideReport, - copydata.CreativeReport, - copydata.UnitReport, - copydata.CampaignReport, - // 腾讯广告OAuth - tencent.OauthController, + // 平台同步引擎 + syncCtrl.PlatformSyncController, }) select {} } diff --git a/model/dto/copydata/api_account_report_detail_dto.go b/model/dto/copydata/api_account_report_detail_dto.go deleted file mode 100644 index afb4f45..0000000 --- a/model/dto/copydata/api_account_report_detail_dto.go +++ /dev/null @@ -1,321 +0,0 @@ -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:"时间"` - - // 分页字段 - PageNumber int `json:"pageNumber" 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:"总数"` -} diff --git a/model/dto/copydata/api_account_report_sum_dto.go b/model/dto/copydata/api_account_report_sum_dto.go deleted file mode 100644 index f1b194e..0000000 --- a/model/dto/copydata/api_account_report_sum_dto.go +++ /dev/null @@ -1,321 +0,0 @@ -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:"时间"` - - // 分页字段 - PageNumber int `json:"pageNumber" 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:"总数"` -} diff --git a/model/dto/copydata/campaign_report_detail_dto.go b/model/dto/copydata/campaign_report_detail_dto.go deleted file mode 100644 index 60fa187..0000000 --- a/model/dto/copydata/campaign_report_detail_dto.go +++ /dev/null @@ -1,230 +0,0 @@ -package copydata - -import ( - "gitea.com/red-future/common/beans" - "github.com/gogf/gf/v2/frame/g" -) - -type CreateCampaignReportDetailReq struct { - g.Meta `path:"/createCampaignReportDetail" method:"post" tags:"广告效果明细报表" summary:"创建广告效果指标明细表" dc:"创建新的广告效果指标明细表"` - *CampaignReportDetailItem -} - -type CreateCampaignReportDetailRes struct { - Id int64 `json:"id" dc:"广告效果明细 ID"` -} - -type BatchCreateCampaignReportDetailReq struct { - g.Meta `path:"/batchCreateCampaignReportDetail" method:"post" tags:"广告效果明细报表" summary:"批量创建广告效果指标明细表" dc:"批量创建广告效果指标明细表"` - Items []*CampaignReportDetailItem `json:"items" v:"required" dc:"广告效果明细列表"` -} - -type BatchCreateCampaignReportDetailRes struct { - SuccessCount int64 `json:"successCount" dc:"成功数量"` - FailCount int64 `json:"failCount" dc:"失败数量"` - FailedItems []int64 `json:"failedItems" dc:"失败项索引"` -} - -type CampaignReportDetailItem 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 ListCampaignReportDetailReq struct { - g.Meta `path:"/listCampaignReportDetail" 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 ListCampaignReportDetailRes struct { - List []*CampaignReportDetailItem `json:"list" dc:"广告效果明细列表"` - Total int `json:"total" dc:"总数"` -} diff --git a/model/dto/copydata/campaign_report_sum_dto.go b/model/dto/copydata/campaign_report_sum_dto.go deleted file mode 100644 index df4896a..0000000 --- a/model/dto/copydata/campaign_report_sum_dto.go +++ /dev/null @@ -1,237 +0,0 @@ -package copydata - -import ( - "gitea.com/red-future/common/beans" - "github.com/gogf/gf/v2/frame/g" -) - -// CreateCampaignReportSumReq 创建广告计划效果指标表请求 -type CreateCampaignReportSumReq struct { - g.Meta `path:"/createCampaignReportSum" method:"post" tags:"广告计划报表" summary:"创建广告计划效果指标表" dc:"创建新的广告计划效果指标表"` - *CampaignReportSumItem -} - -// CreateCampaignReportSumRes 创建广告计划效果指标表响应 -type CreateCampaignReportSumRes struct { - Id int64 `json:"id" dc:"广告计划效果 ID"` -} - -// BatchCreateCampaignReportSumReq 批量创建广告计划效果指标表请求 -type BatchCreateCampaignReportSumReq struct { - g.Meta `path:"/batchCreateCampaignReportSum" method:"post" tags:"广告计划报表" summary:"批量创建广告计划效果指标表" dc:"批量创建广告计划效果指标表"` - Items []*CampaignReportSumItem `json:"items" v:"required" dc:"广告计划效果列表"` -} - -// BatchCreateCampaignReportSumRes 批量创建广告计划效果指标表响应 -type BatchCreateCampaignReportSumRes struct { - SuccessCount int64 `json:"successCount" dc:"成功数量"` - FailCount int64 `json:"failCount" dc:"失败数量"` - FailedItems []int64 `json:"failedItems" dc:"失败项索引"` -} - -// CampaignReportSumItem 广告计划效果指标表项 -type CampaignReportSumItem 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"` - 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:"券成本"` -} - -// ListCampaignReportSumReq 获取广告计划效果指标表列表请求 -type ListCampaignReportSumReq struct { - g.Meta `path:"/listCampaignReportSum" 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:"关键字(搜索直播间名称、视频名称等)"` -} - -// ListCampaignReportSumRes 获取广告计划效果指标表列表响应 -type ListCampaignReportSumRes struct { - List []*CampaignReportSumItem `json:"list" dc:"广告计划效果列表"` - Total int `json:"total" dc:"总数"` -} diff --git a/model/dto/copydata/creative_report_detail_dto.go b/model/dto/copydata/creative_report_detail_dto.go deleted file mode 100644 index ef7d580..0000000 --- a/model/dto/copydata/creative_report_detail_dto.go +++ /dev/null @@ -1,230 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/creative_report_sum_dto.go b/model/dto/copydata/creative_report_sum_dto.go deleted file mode 100644 index 1a2699e..0000000 --- a/model/dto/copydata/creative_report_sum_dto.go +++ /dev/null @@ -1,342 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/material_report_dto.go b/model/dto/copydata/material_report_dto.go deleted file mode 100644 index e074260..0000000 --- a/model/dto/copydata/material_report_dto.go +++ /dev/null @@ -1,234 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/population_report_dto.go b/model/dto/copydata/population_report_dto.go deleted file mode 100644 index 34338ae..0000000 --- a/model/dto/copydata/population_report_dto.go +++ /dev/null @@ -1,210 +0,0 @@ -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"` -} diff --git a/model/dto/copydata/storewide_report_detail_dto.go b/model/dto/copydata/storewide_report_detail_dto.go deleted file mode 100644 index dc6f352..0000000 --- a/model/dto/copydata/storewide_report_detail_dto.go +++ /dev/null @@ -1,132 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/storewide_report_sum_dto.go b/model/dto/copydata/storewide_report_sum_dto.go deleted file mode 100644 index cfdf030..0000000 --- a/model/dto/copydata/storewide_report_sum_dto.go +++ /dev/null @@ -1,92 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/sync_task_log_dto.go b/model/dto/copydata/sync_task_log_dto.go index dac0cfa..5c4940e 100644 --- a/model/dto/copydata/sync_task_log_dto.go +++ b/model/dto/copydata/sync_task_log_dto.go @@ -4,6 +4,8 @@ package copydata type CreateSyncTaskLogReq struct { TaskID string `json:"taskId"` TaskType string `json:"taskType"` + PlatformCode string `json:"platformCode"` + InterfaceCode string `json:"interfaceCode"` AdvertiserID int64 `json:"advertiserId"` StartTime interface{} `json:"startTime"` EndTime interface{} `json:"endTime"` @@ -39,6 +41,8 @@ type SyncTaskLogItem struct { Id int64 `json:"id"` TaskID string `json:"taskId"` TaskType string `json:"taskType"` + PlatformCode string `json:"platformCode"` + InterfaceCode string `json:"interfaceCode"` AdvertiserID int64 `json:"advertiserId"` StartTime interface{} `json:"startTime"` EndTime interface{} `json:"endTime"` diff --git a/model/dto/copydata/task_report_dto.go b/model/dto/copydata/task_report_dto.go deleted file mode 100644 index 089bef7..0000000 --- a/model/dto/copydata/task_report_dto.go +++ /dev/null @@ -1,92 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/unit_report_detail_dto.go b/model/dto/copydata/unit_report_detail_dto.go deleted file mode 100644 index 2ae6da5..0000000 --- a/model/dto/copydata/unit_report_detail_dto.go +++ /dev/null @@ -1,237 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/copydata/unit_report_sum_dto.go b/model/dto/copydata/unit_report_sum_dto.go deleted file mode 100644 index 34abb3c..0000000 --- a/model/dto/copydata/unit_report_sum_dto.go +++ /dev/null @@ -1,237 +0,0 @@ -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:"总数"` -} diff --git a/model/dto/dict/api_datasource_platform_dto.go b/model/dto/dict/api_datasource_platform_dto.go index dedf01a..f52a1bb 100644 --- a/model/dto/dict/api_datasource_platform_dto.go +++ b/model/dto/dict/api_datasource_platform_dto.go @@ -27,6 +27,7 @@ type CreateDatasourcePlatformReq struct { RequestTimeoutMs int `json:"requestTimeoutMs" dc:"请求超时时间(毫秒)" d:"30000"` MaxRetries int `json:"maxRetries" dc:"最大重试次数" d:"3"` RetryDelayMs int `json:"retryDelayMs" dc:"重试延迟(毫秒)" d:"1000"` + AuthConfig map[string]interface{} `json:"authConfig" dc:"自定义认证配置(JSON),支持各平台特有认证方式"` CreatedBy string `json:"createdBy" v:"required" dc:"创建人"` CreatedAt string `json:"createdAt" v:"required" dc:"创建时间"` UpdatedBy string `json:"updatedBy" v:"required" dc:"修改人"` @@ -108,6 +109,7 @@ type UpdateDatasourcePlatformReq struct { RequestTimeoutMs int `json:"requestTimeoutMs" dc:"请求超时时间(毫秒)"` MaxRetries int `json:"maxRetries" dc:"最大重试次数"` RetryDelayMs int `json:"retryDelayMs" dc:"重试延迟(毫秒)"` + AuthConfig map[string]interface{} `json:"authConfig" dc:"自定义认证配置(JSON)"` UpdatedBy string `json:"updatedBy" v:"required" dc:"更新人"` UpdatedAt string `json:"updatedAt" v:"required" dc:"更新时间"` Version string `json:"version" v:"required" dc:"版本"` diff --git a/model/dto/dict/api_field_mapping_config_dto.go b/model/dto/dict/api_field_mapping_config_dto.go deleted file mode 100644 index 95261eb..0000000 --- a/model/dto/dict/api_field_mapping_config_dto.go +++ /dev/null @@ -1,221 +0,0 @@ -package api_feature - -import ( - entity "dataengine/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:"警告信息"` -} diff --git a/model/dto/dict/api_interface_dto.go b/model/dto/dict/api_interface_dto.go index 82b440d..80da7bf 100644 --- a/model/dto/dict/api_interface_dto.go +++ b/model/dto/dict/api_interface_dto.go @@ -10,17 +10,18 @@ import ( // 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:"接口独立限流配置"` + 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:"接口独立限流配置"` + TableDefinition map[string]interface{} `json:"tableDefinition" dc:"表结构定义(JSON),用于自动建表"` } // CreateApiInterfaceRes 创建接口响应 @@ -74,18 +75,19 @@ type GetApiInterfaceRes struct { // 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:"接口独立限流配置"` + 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:"接口独立限流配置"` + TableDefinition map[string]interface{} `json:"tableDefinition" dc:"表结构定义(JSON),用于自动建表"` } // DeleteApiInterfaceReq 删除接口请求 diff --git a/model/dto/tencent/account_relation_dto.go b/model/dto/tencent/account_relation_dto.go deleted file mode 100644 index b64e411..0000000 --- a/model/dto/tencent/account_relation_dto.go +++ /dev/null @@ -1,48 +0,0 @@ -package tencent - -import "github.com/gogf/gf/v2/frame/g" - -// GetAccountRelationReq 获取账户关系请求 -type GetAccountRelationReq struct { - g.Meta `path:"/getAccountRelation" method:"post" tags:"腾讯广告账户关系" summary:"获取账户关系列表" dc:"从腾讯广告API获取账户关系数据"` - AccessToken string `json:"access_token" dc:"访问令牌"` - Timestamp int64 `json:"timestamp" dc:"时间戳"` - Nonce string `json:"nonce" dc:"随机字符串"` - PaginationMode string `json:"pagination_mode" dc:"分页模式" d:"PAGINATION_MODE_NORMAL"` - Page int `json:"page" dc:"页码" d:"1"` - PageSize int `json:"page_size" dc:"每页数量" d:"100"` -} - -// SyncAccountRelationReq 同步账户关系请求 -type SyncAccountRelationReq struct { - g.Meta `path:"/syncAccountRelation" method:"post" tags:"腾讯广告账户关系" summary:"同步账户关系" dc:"自动分页获取所有账户关系并保存到数据库"` - AccessToken string `json:"access_token" dc:"访问令牌(可选,不传则从配置读取)"` -} - -// SyncAccountRelationRes 同步账户关系响应 -type SyncAccountRelationRes struct { - TotalNumber int `json:"total_number" dc:"总记录数"` - TotalPage int `json:"total_page" dc:"总页数"` - SyncedCount int `json:"synced_count" dc:"同步成功数量"` - Message string `json:"message" dc:"消息"` -} - -// ListAccountRelationReq 获取账户关系列表请求 -type ListAccountRelationReq struct { - g.Meta `path:"/listAccountRelation" method:"post" tags:"腾讯广告账户关系" summary:"获取账户关系列表" dc:"从本地数据库查询账户关系列表"` -} - -// ListAccountRelationRes 获取账户关系列表响应 -type ListAccountRelationRes struct { - List []AccountRelationItem `json:"list" dc:"账户关系列表"` -} - -// AccountRelationItem 账户关系项 -type AccountRelationItem struct { - ID int64 `json:"id" dc:"主键ID"` - AccountID int64 `json:"account_id" dc:"账户ID"` - CorporationName string `json:"corporation_name" dc:"公司名称"` - IsAdx bool `json:"is_adx" dc:"是否ADX"` - IsBid bool `json:"is_bid" dc:"是否BID"` - IsMp bool `json:"is_mp" dc:"是否MP"` -} diff --git a/model/dto/tencent/audio_dto.go b/model/dto/tencent/audio_dto.go deleted file mode 100644 index 66ddc14..0000000 --- a/model/dto/tencent/audio_dto.go +++ /dev/null @@ -1,22 +0,0 @@ -package tencent - -import "github.com/gogf/gf/v2/frame/g" - -// SyncAudioReq 同步音乐素材请求 -type SyncAudioReq struct { - g.Meta `path:"/syncAudio" method:"post" tags:"腾讯广告音乐素材" summary:"同步音乐素材" dc:"自动分页获取所有音乐素材并保存到数据库"` - AccessToken string `json:"access_token" dc:"访问令牌(可选,不传则从配置读取)"` -} - -// ListAudioReq 获取音乐素材列表请求 -type ListAudioReq struct { - g.Meta `path:"/listAudio" method:"post" tags:"腾讯广告音乐素材" summary:"获取音乐素材列表" dc:"从本地数据库查询音乐素材列表"` -} - -// SyncAudioRes 同步音乐素材响应 -type SyncAudioRes struct { - TotalNumber int `json:"total_number" dc:"总记录数"` - TotalPage int `json:"total_page" dc:"总页数"` - SyncedCount int `json:"synced_count" dc:"同步成功数量"` - Message string `json:"message" dc:"消息"` -} diff --git a/model/dto/tencent/image_dto.go b/model/dto/tencent/image_dto.go deleted file mode 100644 index e574f90..0000000 --- a/model/dto/tencent/image_dto.go +++ /dev/null @@ -1,72 +0,0 @@ -package tencent - -import "github.com/gogf/gf/v2/frame/g" - -// SyncImageReq 同步图片素材请求 -type SyncImageReq struct { - g.Meta `path:"/syncImage" method:"post" tags:"腾讯广告图片素材" summary:"同步图片素材" dc:"遍历所有账户,自动分页获取图片素材并保存到数据库"` - AccessToken string `json:"access_token" dc:"访问令牌(可选,不传则从配置读取)"` -} - -// SyncImageRes 同步图片素材响应 -type SyncImageRes struct { - TotalAccounts int `json:"total_accounts" dc:"处理的账户数"` - TotalImages int `json:"total_images" dc:"总图片数"` - SyncedCount int `json:"synced_count" dc:"同步成功数量"` - Message string `json:"message" dc:"消息"` -} - -// ListImageReq 获取图片素材列表请求(旧接口,无分页) -type ListImageReq struct { - g.Meta `path:"/listImage" method:"post" tags:"腾讯广告图片素材" summary:"获取图片素材列表" dc:"从本地数据库查询所有图片素材(无分页)"` -} - -// ListImagePageReq 分页查询图片素材请求 -type ListImagePageReq struct { - g.Meta `path:"/listImagePage" method:"post" tags:"腾讯广告图片素材" summary:"分页查询图片素材" dc:"支持分页、时间过滤、账户过滤等条件查询"` - Page int `json:"page" dc:"页码" d:"1"` - PageSize int `json:"page_size" dc:"每页数量" d:"20"` - AccountId *int64 `json:"account_id,omitempty" dc:"账户ID(可选)"` - StartTime *int64 `json:"start_time,omitempty" dc:"开始时间戳(秒,可选)"` - EndTime *int64 `json:"end_time,omitempty" dc:"结束时间戳(秒,可选)"` - Status string `json:"status,omitempty" dc:"状态筛选(可选)"` -} - -// ListImageQueryReq 图片素材查询请求(Service层使用) -type ListImageQueryReq struct { - Page int `json:"page" dc:"页码"` - PageSize int `json:"page_size" dc:"每页数量"` - AccountId *int64 `json:"account_id,omitempty" dc:"账户ID(可选)"` - StartTime *int64 `json:"start_time,omitempty" dc:"开始时间戳(秒,可选)"` - EndTime *int64 `json:"end_time,omitempty" dc:"结束时间戳(秒,可选)"` - Status string `json:"status,omitempty" dc:"状态筛选(可选)"` -} - -// ListImageRes 获取图片素材列表响应 -type ListImageRes struct { - List []ImageItem `json:"list" dc:"图片素材列表"` - Total int `json:"total" dc:"总记录数"` - Page int `json:"page" dc:"当前页码"` - PageSize int `json:"page_size" dc:"每页数量"` - TotalPages int `json:"total_pages" dc:"总页数"` -} - -// ImageItem 图片素材项 -type ImageItem struct { - Id int64 `json:"id" dc:"主键ID"` - ImageId string `json:"image_id" dc:"图片ID"` - AccountId int64 `json:"account_id" dc:"账户ID"` - Width int `json:"width" dc:"宽度"` - Height int `json:"height" dc:"高度"` - FileSize int64 `json:"file_size" dc:"文件大小"` - Type string `json:"type" dc:"图片类型"` - Signature string `json:"signature" dc:"签名"` - Description string `json:"description" dc:"描述"` - PreviewUrl string `json:"preview_url" dc:"预览URL"` - ThumbPreviewUrl string `json:"thumb_preview_url" dc:"缩略图URL"` - Status string `json:"status" dc:"状态"` - CreatedTime int64 `json:"created_time" dc:"创建时间戳"` - LastModifiedTime int64 `json:"last_modified_time" dc:"最后修改时间戳"` - CreatedAt string `json:"created_at" dc:"数据库创建时间"` - UpdatedAt string `json:"updated_at" dc:"数据库更新时间"` -} diff --git a/model/dto/tencent/oauth_dto.go b/model/dto/tencent/oauth_dto.go deleted file mode 100644 index aab8678..0000000 --- a/model/dto/tencent/oauth_dto.go +++ /dev/null @@ -1,19 +0,0 @@ -package tencent - -import "github.com/gogf/gf/v2/frame/g" - -// RefreshTokenReq 刷新Token请求 -type RefreshTokenReq struct { - g.Meta `path:"/refreshToken" method:"post" tags:"腾讯广告OAuth" summary:"刷新访问令牌" dc:"使用refresh_token获取新的access_token"` - ClientID string `json:"client_id" dc:"客户端ID"` - ClientSecret string `json:"client_secret" dc:"客户端密钥"` - RefreshToken string `json:"refresh_token" dc:"刷新令牌"` -} - -// RefreshTokenRes 刷新Token响应 -type RefreshTokenRes struct { - AccessToken string `json:"access_token" dc:"访问令牌"` - RefreshToken string `json:"refresh_token" dc:"新的刷新令牌"` - AccessTokenExpiresIn int64 `json:"access_token_expires_in" dc:"访问令牌过期时间(秒)"` - RefreshTokenExpiresIn int64 `json:"refresh_token_expires_in" dc:"刷新令牌过期时间(秒)"` -} diff --git a/model/dto/tencent/video_dto.go b/model/dto/tencent/video_dto.go deleted file mode 100644 index 3da1351..0000000 --- a/model/dto/tencent/video_dto.go +++ /dev/null @@ -1,73 +0,0 @@ -package tencent - -import "github.com/gogf/gf/v2/frame/g" - -// SyncVideoReq 同步视频素材请求 -type SyncVideoReq struct { - g.Meta `path:"/syncVideo" method:"post" tags:"腾讯广告视频素材" summary:"同步视频素材" dc:"遍历所有账户,自动分页获取视频素材并保存到数据库"` - AccessToken string `json:"access_token" dc:"访问令牌(可选,不传则从配置读取)"` -} - -// SyncVideoRes 同步视频素材响应 -type SyncVideoRes struct { - TotalAccounts int `json:"total_accounts" dc:"处理的账户数"` - TotalVideos int `json:"total_videos" dc:"总视频数"` - SyncedCount int `json:"synced_count" dc:"同步成功数量"` - Message string `json:"message" dc:"消息"` -} - -// ListVideoReq 获取视频素材列表请求(旧接口,无分页) -type ListVideoReq struct { - g.Meta `path:"/listVideo" method:"post" tags:"腾讯广告视频素材" summary:"获取视频素材列表" dc:"从本地数据库查询所有视频素材(无分页)"` -} - -// ListVideoPageReq 分页查询视频素材请求 -type ListVideoPageReq struct { - g.Meta `path:"/listVideoPage" method:"post" tags:"腾讯广告视频素材" summary:"分页查询视频素材" dc:"支持分页、时间过滤、账户过滤等条件查询"` - Page int `json:"page" dc:"页码" d:"1"` - PageSize int `json:"page_size" dc:"每页数量" d:"20"` - AccountId *int64 `json:"account_id,omitempty" dc:"账户ID(可选)"` - StartTime *int64 `json:"start_time,omitempty" dc:"开始时间戳(秒,可选)"` - EndTime *int64 `json:"end_time,omitempty" dc:"结束时间戳(秒,可选)"` - Status string `json:"status,omitempty" dc:"状态筛选(可选)"` -} - -// ListVideoQueryReq 视频素材查询请求(Service层使用) -type ListVideoQueryReq struct { - Page int `json:"page" dc:"页码"` - PageSize int `json:"page_size" dc:"每页数量"` - AccountId *int64 `json:"account_id,omitempty" dc:"账户ID(可选)"` - StartTime *int64 `json:"start_time,omitempty" dc:"开始时间戳(秒,可选)"` - EndTime *int64 `json:"end_time,omitempty" dc:"结束时间戳(秒,可选)"` - Status string `json:"status,omitempty" dc:"状态筛选(可选)"` -} - -// ListVideoRes 获取视频素材列表响应 -type ListVideoRes struct { - List []VideoItem `json:"list" dc:"视频素材列表"` - Total int `json:"total" dc:"总记录数"` - Page int `json:"page" dc:"当前页码"` - PageSize int `json:"page_size" dc:"每页数量"` - TotalPages int `json:"total_pages" dc:"总页数"` -} - -// VideoItem 视频素材项 -type VideoItem struct { - Id int64 `json:"id" dc:"主键ID"` - VideoId string `json:"video_id" dc:"视频ID"` - AccountId int64 `json:"account_id" dc:"账户ID"` - Width int `json:"width" dc:"宽度"` - Height int `json:"height" dc:"高度"` - VideoFrames int `json:"video_frames" dc:"视频帧数"` - VideoFps int `json:"video_fps" dc:"帧率"` - FileSize int64 `json:"file_size" dc:"文件大小"` - Type string `json:"type" dc:"媒体类型"` - Description string `json:"description" dc:"描述"` - PreviewUrl string `json:"preview_url" dc:"预览URL"` - KeyFrameImageUrl string `json:"key_frame_image_url" dc:"关键帧图片URL"` - Status string `json:"status" dc:"状态"` - CreatedTime int64 `json:"created_time" dc:"创建时间戳"` - LastModifiedTime int64 `json:"last_modified_time" dc:"最后修改时间戳"` - CreatedAt string `json:"created_at" dc:"数据库创建时间"` - UpdatedAt string `json:"updated_at" dc:"数据库更新时间"` -} diff --git a/model/entity/copydata/api_account_report_detail.go b/model/entity/copydata/api_account_report_detail.go deleted file mode 100644 index 5ead3ae..0000000 --- a/model/entity/copydata/api_account_report_detail.go +++ /dev/null @@ -1,667 +0,0 @@ -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 - - // 分页字段 - PageNumber string - - // 广告结构字段 - CampaignId string - CampaignName string - UnitId string - UnitName string - CreativeId string - CreativeName string - - // 补贴相关字段 - CidActualRoiAfterSubsidy *float64 - CidCouponAmount *int64 - CidCouponCallbackPaidRefundAmount *int64 - CidVoucherCost *float64 -} - -// 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", - } -} diff --git a/model/entity/copydata/api_account_report_sum.go b/model/entity/copydata/api_account_report_sum.go deleted file mode 100644 index 459b4a2..0000000 --- a/model/entity/copydata/api_account_report_sum.go +++ /dev/null @@ -1,670 +0,0 @@ -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:"时间"` - - // 分页字段 - PageNumber int `orm:"page_number" json:"pageNumber" 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 - PageNumber 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", - PageNumber: "page_number", - 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", - } -} diff --git a/model/entity/copydata/campaign_report_detail.go b/model/entity/copydata/campaign_report_detail.go deleted file mode 100644 index aed3089..0000000 --- a/model/entity/copydata/campaign_report_detail.go +++ /dev/null @@ -1,582 +0,0 @@ -package copydata - -import "gitea.com/red-future/common/beans" - -// CampaignReportDetail 广告效果指标明细表实体 -type CampaignReportDetail 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:"券成本"` -} - -// CampaignReportDetailCol 广告效果指标明细表字段定义 -type CampaignReportDetailCol 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 *CampaignReportDetail) TableName() string { - return "campaign_report_detail" -} - -// GetCols 获取所有字段名 -func (e *CampaignReportDetail) GetCols() *CampaignReportDetailCol { - return &CampaignReportDetailCol{ - 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", - } -} diff --git a/model/entity/copydata/campaign_report_sum.go b/model/entity/copydata/campaign_report_sum.go deleted file mode 100644 index d5f0d42..0000000 --- a/model/entity/copydata/campaign_report_sum.go +++ /dev/null @@ -1,582 +0,0 @@ -package copydata - -import "gitea.com/red-future/common/beans" - -// CampaignReportSum 广告计划效果指标表实体 -type CampaignReportSum 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"` - 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:"券成本"` -} - -// CampaignReportSumCol 广告计划效果指标表字段定义 -type CampaignReportSumCol 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 *CampaignReportSum) TableName() string { - return "campaign_report_sum" -} - -// GetCols 获取所有字段名 -func (e *CampaignReportSum) GetCols() *CampaignReportSumCol { - return &CampaignReportSumCol{ - 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", - } -} diff --git a/model/entity/copydata/creative_report_detail.go b/model/entity/copydata/creative_report_detail.go deleted file mode 100644 index 4951b44..0000000 --- a/model/entity/copydata/creative_report_detail.go +++ /dev/null @@ -1,582 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/creative_report_sum.go b/model/entity/copydata/creative_report_sum.go deleted file mode 100644 index 871fca5..0000000 --- a/model/entity/copydata/creative_report_sum.go +++ /dev/null @@ -1,687 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/material_report.go b/model/entity/copydata/material_report.go deleted file mode 100644 index 9eeb1f5..0000000 --- a/model/entity/copydata/material_report.go +++ /dev/null @@ -1,576 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/population_report.go b/model/entity/copydata/population_report.go deleted file mode 100644 index 9220a62..0000000 --- a/model/entity/copydata/population_report.go +++ /dev/null @@ -1,578 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/storewide_report_detail.go b/model/entity/copydata/storewide_report_detail.go deleted file mode 100644 index 371cc7f..0000000 --- a/model/entity/copydata/storewide_report_detail.go +++ /dev/null @@ -1,181 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/storewide_report_sum.go b/model/entity/copydata/storewide_report_sum.go deleted file mode 100644 index aefa6ca..0000000 --- a/model/entity/copydata/storewide_report_sum.go +++ /dev/null @@ -1,141 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/sync_task_log.go b/model/entity/copydata/sync_task_log.go index 7c9d8a5..c9ef82b 100644 --- a/model/entity/copydata/sync_task_log.go +++ b/model/entity/copydata/sync_task_log.go @@ -8,6 +8,8 @@ type SyncTaskLog struct { Id int64 `orm:"Id" json:"Id" description:"主键id"` TaskID string `orm:"task_id" json:"taskId" description:"任务唯一标识"` TaskType string `orm:"task_type" json:"taskType" description:"任务类型"` + PlatformCode string `orm:"platform_code" json:"platformCode" description:"平台编码"` + InterfaceCode string `orm:"interface_code" json:"interfaceCode" description:"接口编码"` AdvertiserID int64 `orm:"advertiser_id" json:"advertiserId" description:"广告主ID"` StartTime interface{} `orm:"start_time" json:"startTime" description:"数据开始时间"` EndTime interface{} `orm:"end_time" json:"endTime" description:"数据结束时间"` diff --git a/model/entity/copydata/task_report.go b/model/entity/copydata/task_report.go deleted file mode 100644 index 63fb884..0000000 --- a/model/entity/copydata/task_report.go +++ /dev/null @@ -1,133 +0,0 @@ -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", - } -} diff --git a/model/entity/copydata/unit_report_detail.go b/model/entity/copydata/unit_report_detail.go deleted file mode 100644 index 34fca66..0000000 --- a/model/entity/copydata/unit_report_detail.go +++ /dev/null @@ -1,198 +0,0 @@ -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" -} diff --git a/model/entity/copydata/unit_report_sum.go b/model/entity/copydata/unit_report_sum.go deleted file mode 100644 index fa7fb14..0000000 --- a/model/entity/copydata/unit_report_sum.go +++ /dev/null @@ -1,199 +0,0 @@ -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" -} diff --git a/model/entity/dict/api_datasource_platform.go b/model/entity/dict/api_datasource_platform.go index 61d43f6..ecb92df 100644 --- a/model/entity/dict/api_datasource_platform.go +++ b/model/entity/dict/api_datasource_platform.go @@ -33,6 +33,9 @@ type DatasourcePlatform struct { MaxRetries int `orm:"max_retries" json:"maxRetries" description:"最大重试次数"` RetryDelayMs int `orm:"retry_delay_ms" json:"retryDelayMs" description:"重试延迟(毫秒)"` + // 自定义认证配置 (JSONB) + AuthConfig map[string]interface{} `orm:"auth_config" json:"authConfig" description:"自定义认证配置,支持各平台特有的认证方式"` + // 元数据 CreatedBy string `orm:"created_by" json:"createdBy" description:"创建人"` CreatedAt *time.Time `orm:"created_at" json:"createdAt" description:"创建时间"` @@ -60,6 +63,7 @@ type DatasourcePlatformCol struct { RequestTimeoutMs string MaxRetries string RetryDelayMs string + AuthConfig string CreatedBy string CreatedAt string UpdatedBy string @@ -86,6 +90,7 @@ var DatasourcePlatformCols = DatasourcePlatformCol{ RequestTimeoutMs: "request_timeout_ms", MaxRetries: "max_retries", RetryDelayMs: "retry_delay_ms", + AuthConfig: "auth_config", CreatedBy: "created_by", CreatedAt: "created_at", UpdatedBy: "updated_by", diff --git a/model/entity/dict/api_field_mapping_config.go b/model/entity/dict/api_field_mapping_config.go deleted file mode 100644 index 535d098..0000000 --- a/model/entity/dict/api_field_mapping_config.go +++ /dev/null @@ -1,98 +0,0 @@ -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", -} diff --git a/model/entity/dict/api_interface.go b/model/entity/dict/api_interface.go index c114d53..614cc00 100644 --- a/model/entity/dict/api_interface.go +++ b/model/entity/dict/api_interface.go @@ -24,34 +24,38 @@ type ApiInterface struct { ResponseConfig map[string]interface{} `orm:"response_config" json:"responseConfig" description:"响应配置"` // 独立限流配置 (JSONB) LimitConfig map[string]interface{} `orm:"limit_config" json:"limitConfig" description:"接口独立限流配置(可选,覆盖平台配置)"` + // 表结构定义 (JSONB) - 描述目标表的字段结构,用于自动建表 + TableDefinition map[string]interface{} `orm:"table_definition" json:"tableDefinition" 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 + PlatformId string + Name string + Code string + Url string + Method string + Status string + AuthType string + RequestConfig string + ResponseConfig string + LimitConfig string + TableDefinition 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", + 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", + TableDefinition: "table_definition", } diff --git a/model/entity/tencent/account_relation.go b/model/entity/tencent/account_relation.go deleted file mode 100644 index 9fa796b..0000000 --- a/model/entity/tencent/account_relation.go +++ /dev/null @@ -1,56 +0,0 @@ -package tencent - -import ( - "time" -) - -// AccountRelation 腾讯广告账户关系实体 -type AccountRelation struct { - Id int64 `orm:"id" json:"id" description:"主键ID"` - TenantId int64 `orm:"tenant_id" json:"tenantId" description:"租户ID"` - Creator string `orm:"creator" json:"creator" description:"创建人"` - CreatedAt *time.Time `orm:"created_at" json:"createdAt" description:"创建时间"` - Updater string `orm:"updater" json:"updater" description:"更新人"` - UpdatedAt *time.Time `orm:"updated_at" json:"updatedAt" description:"更新时间"` - DeletedAt *time.Time `orm:"deleted_at" json:"deletedAt" description:"软删除时间"` - AccountID int64 `orm:"account_id" json:"accountId" description:"账户ID"` - CorporationName string `orm:"corporation_name" json:"corporationName" description:"公司名称"` - CommentDataList string `orm:"comment_data_list" json:"commentDataList" description:"备注数据列表JSON"` - IsAdx bool `orm:"is_adx" json:"isAdx" description:"是否ADX"` - IsBid bool `orm:"is_bid" json:"isBid" description:"是否BID"` - IsMp bool `orm:"is_mp" json:"isMp" description:"是否MP"` -} - -// AccountRelationCol 账户关系表字段定义 -type AccountRelationCol struct { - ID string - TenantID string - Creator string - CreatedAt string - Updater string - UpdatedAt string - DeletedAt string - AccountID string - CorporationName string - CommentDataList string - IsAdx string - IsBid string - IsMp string -} - -// AccountRelationCols 账户关系表字段常量 -var AccountRelationCols = AccountRelationCol{ - ID: "id", - TenantID: "tenant_id", - Creator: "creator", - CreatedAt: "created_at", - Updater: "updater", - UpdatedAt: "updated_at", - DeletedAt: "deleted_at", - AccountID: "account_id", - CorporationName: "corporation_name", - CommentDataList: "comment_data_list", - IsAdx: "is_adx", - IsBid: "is_bid", - IsMp: "is_mp", -} diff --git a/model/entity/tencent/audio.go b/model/entity/tencent/audio.go deleted file mode 100644 index ddb9836..0000000 --- a/model/entity/tencent/audio.go +++ /dev/null @@ -1,73 +0,0 @@ -package tencent - -import ( - "time" -) - -// Audio 腾讯广告音乐素材实体 -type Audio struct { - Id int64 `orm:"id" json:"id" description:"主键ID"` - TenantId int64 `orm:"tenant_id" json:"tenantId" description:"租户ID"` - Creator string `orm:"creator" json:"creator" description:"创建人"` - CreatedAt *time.Time `orm:"created_at" json:"createdAt" description:"创建时间"` - Updater string `orm:"updater" json:"updater" description:"更新人"` - UpdatedAt *time.Time `orm:"updated_at" json:"updatedAt" description:"更新时间"` - DeletedAt *time.Time `orm:"deleted_at" json:"deletedAt" description:"软删除时间"` - AudioId string `orm:"audio_id" json:"audioId" description:"音乐ID"` - CoverImageUrl string `orm:"cover_image_url" json:"coverImageUrl" description:"封面图片URL"` - AudioName string `orm:"audio_name" json:"audioName" description:"音乐名称"` - Author string `orm:"author" json:"author" description:"作者"` - Duration float64 `orm:"duration" json:"duration" description:"时长(秒)"` - ExpireTime int64 `orm:"expire_time" json:"expireTime" description:"过期时间戳"` - FeelTags string `orm:"feel_tags" json:"feelTags" description:"情感标签数组JSON"` - GenreTags string `orm:"genre_tags" json:"genreTags" description:"风格标签数组JSON"` - - // 本地校验状态 - VerifyStatus string `orm:"verify_status" json:"verifyStatus" description:"校验状态(PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝)"` - VerifiedAt string `orm:"verified_at" json:"verifiedAt" description:"校验时间"` - VerifiedBy string `orm:"verified_by" json:"verifiedBy" description:"校验人"` -} - -// AudioCol 音乐素材表字段定义 -type AudioCol struct { - Id string - TenantId string - Creator string - CreatedAt string - Updater string - UpdatedAt string - DeletedAt string - AudioId string - CoverImageUrl string - AudioName string - Author string - Duration string - ExpireTime string - FeelTags string - GenreTags string - VerifyStatus string - VerifiedAt string - VerifiedBy string -} - -// AudioCols 音乐素材表字段常量 -var AudioCols = AudioCol{ - Id: "id", - TenantId: "tenant_id", - Creator: "creator", - CreatedAt: "created_at", - Updater: "updater", - UpdatedAt: "updated_at", - DeletedAt: "deleted_at", - AudioId: "audio_id", - CoverImageUrl: "cover_image_url", - AudioName: "audio_name", - Author: "author", - Duration: "duration", - ExpireTime: "expire_time", - FeelTags: "feel_tags", - GenreTags: "genre_tags", - VerifyStatus: "verify_status", - VerifiedAt: "verified_at", - VerifiedBy: "verified_by", -} diff --git a/model/entity/tencent/image.go b/model/entity/tencent/image.go deleted file mode 100644 index 4ea4dab..0000000 --- a/model/entity/tencent/image.go +++ /dev/null @@ -1,128 +0,0 @@ -package tencent - -import ( - "gitea.com/red-future/common/beans" -) - -// Image 腾讯广告图片素材实体 -type Image struct { - beans.SQLBaseDO `orm:",inherit"` - - ImageId string `orm:"image_id" json:"imageId" description:"图片ID"` - AccountId int64 `orm:"account_id" json:"accountId" description:"账户ID"` - Width int `orm:"width" json:"width" description:"宽度"` - Height int `orm:"height" json:"height" description:"高度"` - FileSize int64 `orm:"file_size" json:"fileSize" description:"文件大小"` - Type string `orm:"type" json:"type" description:"图片类型"` - Signature string `orm:"signature" json:"signature" description:"签名"` - Description string `orm:"description" json:"description" description:"描述"` - SourceSignature string `orm:"source_signature" json:"sourceSignature" description:"源签名"` - PreviewUrl string `orm:"preview_url" json:"previewUrl" description:"预览URL"` - ThumbPreviewUrl string `orm:"thumb_preview_url" json:"thumbPreviewUrl" description:"缩略图URL"` - SourceType string `orm:"source_type" json:"sourceType" description:"来源类型"` - ImageUsage string `orm:"image_usage" json:"imageUsage" description:"图片用途"` - CreatedTime int64 `orm:"created_time" json:"createdTime" description:"创建时间戳"` - LastModifiedTime int64 `orm:"last_modified_time" json:"lastModifiedTime" description:"最后修改时间戳"` - ProductCatalogId int64 `orm:"product_catalog_id" json:"productCatalogId" description:"产品目录ID"` - ProductOuterId string `orm:"product_outer_id" json:"productOuterId" description:"产品外部ID"` - SourceReferenceId string `orm:"source_reference_id" json:"sourceReferenceId" description:"源引用ID"` - OwnerAccountId string `orm:"owner_account_id" json:"ownerAccountId" description:"所有者账户ID"` - Status string `orm:"status" json:"status" description:"状态"` - SampleAspectRatio string `orm:"sample_aspect_ratio" json:"sampleAspectRatio" description:"示例宽高比"` - SourceMaterialId string `orm:"source_material_id" json:"sourceMaterialId" description:"源素材ID"` - NewSourceType string `orm:"new_source_type" json:"newSourceType" description:"新来源类型"` - FirstPublicationStatus string `orm:"first_publication_status" json:"firstPublicationStatus" description:"首次发布状态"` - QualityStatus string `orm:"quality_status" json:"qualityStatus" description:"质量状态"` - SimilarityStatus string `orm:"similarity_status" json:"similarityStatus" description:"相似度状态"` - UserAigcStatus string `orm:"user_aigc_status" json:"userAigcStatus" description:"用户AIGC状态"` - SystemAigcStatus string `orm:"system_aigc_status" json:"systemAigcStatus" description:"系统AIGC状态"` - AigcSource string `orm:"aigc_source" json:"aigcSource" description:"AIGC来源"` - AigcFlag string `orm:"aigc_flag" json:"aigcFlag" description:"AIGC标志"` - MuseAigcVersion int `orm:"muse_aigc_version" json:"museAigcVersion" description:"Muse AIGC版本"` - AigcType int `orm:"aigc_type" json:"aigcType" description:"AIGC类型"` - - // 本地校验状态 - VerifyStatus string `orm:"verify_status" json:"verifyStatus" description:"校验状态(PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝)"` - VerifiedAt string `orm:"verified_at" json:"verifiedAt" description:"校验时间"` - VerifiedBy string `orm:"verified_by" json:"verifiedBy" description:"校验人"` -} - -// ImageCol 图片素材表字段定义 -type ImageCol struct { - beans.SQLBaseCol - ImageId string - AccountId string - Width string - Height string - FileSize string - Type string - Signature string - Description string - SourceSignature string - PreviewUrl string - ThumbPreviewUrl string - SourceType string - ImageUsage string - CreatedTime string - LastModifiedTime string - ProductCatalogId string - ProductOuterId string - SourceReferenceId string - OwnerAccountId string - Status string - SampleAspectRatio string - SourceMaterialId string - NewSourceType string - FirstPublicationStatus string - QualityStatus string - SimilarityStatus string - UserAigcStatus string - SystemAigcStatus string - AigcSource string - AigcFlag string - MuseAigcVersion string - AigcType string - VerifyStatus string - VerifiedAt string - VerifiedBy string -} - -// ImageCols 图片素材表字段常量 -var ImageCols = ImageCol{ - SQLBaseCol: beans.DefSQLBaseCol, - ImageId: "image_id", - AccountId: "account_id", - Width: "width", - Height: "height", - FileSize: "file_size", - Type: "type", - Signature: "signature", - Description: "description", - SourceSignature: "source_signature", - PreviewUrl: "preview_url", - ThumbPreviewUrl: "thumb_preview_url", - SourceType: "source_type", - ImageUsage: "image_usage", - CreatedTime: "created_time", - LastModifiedTime: "last_modified_time", - ProductCatalogId: "product_catalog_id", - ProductOuterId: "product_outer_id", - SourceReferenceId: "source_reference_id", - OwnerAccountId: "owner_account_id", - Status: "status", - SampleAspectRatio: "sample_aspect_ratio", - SourceMaterialId: "source_material_id", - NewSourceType: "new_source_type", - FirstPublicationStatus: "first_publication_status", - QualityStatus: "quality_status", - SimilarityStatus: "similarity_status", - UserAigcStatus: "user_aigc_status", - SystemAigcStatus: "system_aigc_status", - AigcSource: "aigc_source", - AigcFlag: "aigc_flag", - MuseAigcVersion: "muse_aigc_version", - AigcType: "aigc_type", - VerifyStatus: "verify_status", - VerifiedAt: "verified_at", - VerifiedBy: "verified_by", -} diff --git a/model/entity/tencent/video.go b/model/entity/tencent/video.go deleted file mode 100644 index c7711ba..0000000 --- a/model/entity/tencent/video.go +++ /dev/null @@ -1,170 +0,0 @@ -package tencent - -import ( - "gitea.com/red-future/common/beans" -) - -// Video 腾讯广告视频素材实体 -type Video struct { - beans.SQLBaseDO `orm:",inherit"` - - VideoId string `orm:"video_id" json:"videoId" description:"视频ID"` - AccountId int64 `orm:"account_id" json:"accountId" description:"账户ID"` - Width int `orm:"width" json:"width" description:"宽度"` - Height int `orm:"height" json:"height" description:"高度"` - VideoFrames int `orm:"video_frames" json:"videoFrames" description:"视频帧数"` - VideoFps int `orm:"video_fps" json:"videoFps" description:"帧率"` - VideoCodec string `orm:"video_codec" json:"videoCodec" description:"视频编码"` - VideoBitRate int64 `orm:"video_bit_rate" json:"videoBitRate" description:"视频码率"` - AudioCodec string `orm:"audio_codec" json:"audioCodec" description:"音频编码"` - AudioBitRate int64 `orm:"audio_bit_rate" json:"audioBitRate" description:"音频码率"` - FileSize int64 `orm:"file_size" json:"fileSize" description:"文件大小"` - Type string `orm:"type" json:"type" description:"媒体类型"` - Signature string `orm:"signature" json:"signature" description:"签名"` - SystemStatus string `orm:"system_status" json:"systemStatus" description:"系统状态"` - Description string `orm:"description" json:"description" description:"描述"` - PreviewUrl string `orm:"preview_url" json:"previewUrl" description:"预览URL"` - KeyFrameImageUrl string `orm:"key_frame_image_url" json:"keyFrameImageUrl" description:"关键帧图片URL"` - CreatedTime int64 `orm:"created_time" json:"createdTime" description:"创建时间戳"` - LastModifiedTime int64 `orm:"last_modified_time" json:"lastModifiedTime" description:"最后修改时间戳"` - VideoProfileName string `orm:"video_profile_name" json:"videoProfileName" description:"视频配置名称"` - AudioSampleRate int `orm:"audio_sample_rate" json:"audioSampleRate" description:"音频采样率"` - MaxKeyframeInterval int `orm:"max_keyframe_interval" json:"maxKeyframeInterval" description:"最大关键帧间隔"` - MinKeyframeInterval int `orm:"min_keyframe_interval" json:"minKeyframeInterval" description:"最小关键帧间隔"` - SampleAspectRatio string `orm:"sample_aspect_ratio" json:"sampleAspectRatio" description:"示例宽高比"` - AudioProfileName string `orm:"audio_profile_name" json:"audioProfileName" description:"音频配置名称"` - ScanType string `orm:"scan_type" json:"scanType" description:"扫描类型"` - ImageDurationMillisecond int64 `orm:"image_duration_millisecond" json:"imageDurationMillisecond" description:"图片时长(毫秒)"` - AudioDurationMillisecond int64 `orm:"audio_duration_millisecond" json:"audioDurationMillisecond" description:"音频时长(毫秒)"` - SourceType string `orm:"source_type" json:"sourceType" description:"来源类型"` - ProductCatalogId string `orm:"product_catalog_id" json:"productCatalogId" description:"产品目录ID"` - ProductOuterId string `orm:"product_outer_id" json:"productOuterId" description:"产品外部ID"` - SourceReferenceId string `orm:"source_reference_id" json:"sourceReferenceId" description:"源引用ID"` - OwnerAccountId string `orm:"owner_account_id" json:"ownerAccountId" description:"所有者账户ID"` - Status string `orm:"status" json:"status" description:"状态"` - SourceMaterialId string `orm:"source_material_id" json:"sourceMaterialId" description:"源素材ID"` - NewSourceType string `orm:"new_source_type" json:"newSourceType" description:"新来源类型"` - AigcType int `orm:"aigc_type" json:"aigcType" description:"AIGC类型"` - FirstPublicationStatus string `orm:"first_publication_status" json:"firstPublicationStatus" description:"首次发布状态"` - QualityStatus string `orm:"quality_status" json:"qualityStatus" description:"质量状态"` - CoverId string `orm:"cover_id" json:"coverId" description:"封面ID"` - SimilarityStatus string `orm:"similarity_status" json:"similarityStatus" description:"相似度状态"` - UserAigcStatus string `orm:"user_aigc_status" json:"userAigcStatus" description:"用户AIGC状态"` - SystemAigcStatus string `orm:"system_aigc_status" json:"systemAigcStatus" description:"系统AIGC状态"` - AigcSource string `orm:"aigc_source" json:"aigcSource" description:"AIGC来源"` - AigcFlag string `orm:"aigc_flag" json:"aigcFlag" description:"AIGC标志"` - MuseAigcVersion int `orm:"muse_aigc_version" json:"museAigcVersion" description:"Muse AIGC版本"` - - // 本地校验状态 - VerifyStatus string `orm:"verify_status" json:"verifyStatus" description:"校验状态(PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝)"` - VerifiedAt string `orm:"verified_at" json:"verifiedAt" description:"校验时间"` - VerifiedBy string `orm:"verified_by" json:"verifiedBy" description:"校验人"` -} - -// VideoCol 视频素材表字段定义 -type VideoCol struct { - beans.SQLBaseCol - VideoId string - AccountId string - Width string - Height string - VideoFrames string - VideoFps string - VideoCodec string - VideoBitRate string - AudioCodec string - AudioBitRate string - FileSize string - Type string - Signature string - SystemStatus string - Description string - PreviewUrl string - KeyFrameImageUrl string - CreatedTime string - LastModifiedTime string - VideoProfileName string - AudioSampleRate string - MaxKeyframeInterval string - MinKeyframeInterval string - SampleAspectRatio string - AudioProfileName string - ScanType string - ImageDurationMillisecond string - AudioDurationMillisecond string - SourceType string - ProductCatalogId string - ProductOuterId string - SourceReferenceId string - OwnerAccountId string - Status string - SourceMaterialId string - NewSourceType string - AigcType string - FirstPublicationStatus string - QualityStatus string - CoverId string - SimilarityStatus string - UserAigcStatus string - SystemAigcStatus string - AigcSource string - AigcFlag string - MuseAigcVersion string - VerifyStatus string - VerifiedAt string - VerifiedBy string -} - -// VideoCols 视频素材表字段常量 -var VideoCols = VideoCol{ - SQLBaseCol: beans.DefSQLBaseCol, - VideoId: "video_id", - AccountId: "account_id", - Width: "width", - Height: "height", - VideoFrames: "video_frames", - VideoFps: "video_fps", - VideoCodec: "video_codec", - VideoBitRate: "video_bit_rate", - AudioCodec: "audio_codec", - AudioBitRate: "audio_bit_rate", - FileSize: "file_size", - Type: "type", - Signature: "signature", - SystemStatus: "system_status", - Description: "description", - PreviewUrl: "preview_url", - KeyFrameImageUrl: "key_frame_image_url", - CreatedTime: "created_time", - LastModifiedTime: "last_modified_time", - VideoProfileName: "video_profile_name", - AudioSampleRate: "audio_sample_rate", - MaxKeyframeInterval: "max_keyframe_interval", - MinKeyframeInterval: "min_keyframe_interval", - SampleAspectRatio: "sample_aspect_ratio", - AudioProfileName: "audio_profile_name", - ScanType: "scan_type", - ImageDurationMillisecond: "image_duration_millisecond", - AudioDurationMillisecond: "audio_duration_millisecond", - SourceType: "source_type", - ProductCatalogId: "product_catalog_id", - ProductOuterId: "product_outer_id", - SourceReferenceId: "source_reference_id", - OwnerAccountId: "owner_account_id", - Status: "status", - SourceMaterialId: "source_material_id", - NewSourceType: "new_source_type", - AigcType: "aigc_type", - FirstPublicationStatus: "first_publication_status", - QualityStatus: "quality_status", - CoverId: "cover_id", - SimilarityStatus: "similarity_status", - UserAigcStatus: "user_aigc_status", - SystemAigcStatus: "system_aigc_status", - AigcSource: "aigc_source", - AigcFlag: "aigc_flag", - MuseAigcVersion: "muse_aigc_version", - VerifyStatus: "verify_status", - VerifiedAt: "verified_at", - VerifiedBy: "verified_by", -} diff --git a/resource/log/server/2026-05-06.log b/resource/log/server/2026-05-06.log deleted file mode 100644 index c618c96..0000000 --- a/resource/log/server/2026-05-06.log +++ /dev/null @@ -1,4056 +0,0 @@ -2026-05-06T10:10:09.412+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T10:10:09.455+08:00 [INFO] pid[4571]: all servers shutdown -2026-05-06T10:10:17.973+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T10:10:17.973+08:00 [INFO] pid[5034]: http server started listening on [:3002] -2026-05-06T10:10:18.046+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T12:26:43.379+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T12:26:43.473+08:00 [ERRO] Unexpected response code: 404 (Unknown service ID "data-engine--192.168.3.135:3002". Ensure that the service ID is passed, not the service name.) -2026-05-06T12:26:43.474+08:00 [INFO] pid[5034]: all servers shutdown -2026-05-06T12:38:43.182+08:00 [FATA] invalid handler: dataengine/controller/tencent.(*oauthController).ListAccountRelation defined as "func(context.Context) ([]tencent.AccountRelation, error)", but "func(*ghttp.Request)" or "func(context.Context, *BizReq)(*BizRes, error)" is required -1. invalid handler: dataengine/controller/tencent.(*oauthController).ListAccountRelation defined as "func(context.Context) ([]tencent.AccountRelation, error)", but "func(*ghttp.Request)" or "func(context.Context, *BizReq)(*BizRes, error)" is required - -2026-05-06T12:44:04.625+08:00 [INFO] pid[8072]: http server started listening on [:3002] -2026-05-06T12:44:04.625+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T12:44:04.693+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:01:55.047+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:01:55.087+08:00 [INFO] pid[8072]: all servers shutdown -2026-05-06T13:02:04.609+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:02:04.609+08:00 [INFO] pid[8595]: http server started listening on [:3002] -2026-05-06T13:02:04.668+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:02:41.073+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:02:41.109+08:00 [INFO] pid[8595]: all servers shutdown -2026-05-06T13:02:44.869+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:02:44.869+08:00 [INFO] pid[8619]: http server started listening on [:3002] -2026-05-06T13:02:44.944+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:11:46.447+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:11:46.493+08:00 [INFO] pid[8619]: all servers shutdown -2026-05-06T13:15:43.789+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:15:43.789+08:00 [INFO] pid[9021]: http server started listening on [:3002] -2026-05-06T13:15:43.859+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:23:00.151+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:23:00.194+08:00 [INFO] pid[9021]: all servers shutdown -2026-05-06T13:27:01.872+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:27:01.872+08:00 [INFO] pid[9468]: http server started listening on [:3002] -2026-05-06T13:27:01.939+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:30:55.395+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:30:55.445+08:00 [INFO] pid[9468]: all servers shutdown -2026-05-06T13:30:58.645+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:30:58.645+08:00 [INFO] pid[9574]: http server started listening on [:3002] -2026-05-06T13:30:58.713+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:33:31.544+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:33:31.586+08:00 [INFO] pid[9574]: all servers shutdown -2026-05-06T13:33:42.500+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:33:42.500+08:00 [INFO] pid[9674]: http server started listening on [:3002] -2026-05-06T13:33:42.567+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:34:30.359+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:34:30.409+08:00 [INFO] pid[9674]: all servers shutdown -2026-05-06T13:34:33.044+08:00 [INFO] pid[9697]: http server started listening on [:3002] -2026-05-06T13:34:33.044+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:34:33.114+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:36:08.853+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:36:08.889+08:00 [INFO] pid[9697]: all servers shutdown -2026-05-06T13:36:17.898+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:36:17.898+08:00 [INFO] pid[9809]: http server started listening on [:3002] -2026-05-06T13:36:17.965+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:39:00.863+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:39:00.909+08:00 [INFO] pid[9809]: all servers shutdown -2026-05-06T13:39:10.189+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:39:10.189+08:00 [INFO] pid[9915]: http server started listening on [:3002] -2026-05-06T13:39:10.261+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:42:22.215+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:42:22.263+08:00 [INFO] pid[9915]: all servers shutdown -2026-05-06T13:42:31.685+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:42:31.685+08:00 [INFO] pid[10094]: http server started listening on [:3002] -2026-05-06T13:42:31.745+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:45:01.200+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:45:01.239+08:00 [INFO] pid[10094]: all servers shutdown -2026-05-06T13:45:11.828+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:45:11.828+08:00 [INFO] pid[10178]: http server started listening on [:3002] -2026-05-06T13:45:11.899+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T13:57:09.579+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T13:57:09.650+08:00 [INFO] pid[10178]: all servers shutdown -2026-05-06T13:57:18.200+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T13:57:18.200+08:00 [INFO] pid[10565]: http server started listening on [:3002] -2026-05-06T13:57:18.273+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:00:11.050+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:00:11.082+08:00 [INFO] pid[10565]: all servers shutdown -2026-05-06T14:00:13.883+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:00:13.883+08:00 [INFO] pid[10708]: http server started listening on [:3002] -2026-05-06T14:00:13.989+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:25:03.854+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:25:03.900+08:00 [INFO] pid[10708]: all servers shutdown -2026-05-06T14:25:15.076+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:25:15.076+08:00 [INFO] pid[11475]: http server started listening on [:3002] -2026-05-06T14:25:15.142+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:35:34.617+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:35:34.656+08:00 [INFO] pid[11475]: all servers shutdown -2026-05-06T14:35:38.108+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:35:38.108+08:00 [INFO] pid[11715]: http server started listening on [:3002] -2026-05-06T14:35:38.178+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:36:59.219+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:36:59.261+08:00 [INFO] pid[11715]: all servers shutdown -2026-05-06T14:37:02.372+08:00 [INFO] pid[11769]: http server started listening on [:3002] -2026-05-06T14:37:02.372+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:37:02.437+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:42:04.768+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:42:04.806+08:00 [INFO] pid[11769]: all servers shutdown -2026-05-06T14:42:08.228+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:42:08.228+08:00 [INFO] pid[11866]: http server started listening on [:3002] -2026-05-06T14:42:08.298+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:46:29.974+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:46:30.017+08:00 [INFO] pid[11866]: all servers shutdown -2026-05-06T14:46:39.997+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:46:39.997+08:00 [INFO] pid[12030]: http server started listening on [:3002] -2026-05-06T14:46:40.069+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:48:28.835+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:48:28.875+08:00 [INFO] pid[12030]: all servers shutdown -2026-05-06T14:48:39.383+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:48:39.383+08:00 [INFO] pid[12139]: http server started listening on [:3002] -2026-05-06T14:48:39.452+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:52:15.754+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:52:15.807+08:00 [INFO] pid[12139]: all servers shutdown -2026-05-06T14:52:25.475+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:52:25.475+08:00 [INFO] pid[12282]: http server started listening on [:3002] -2026-05-06T14:52:25.535+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T14:55:50.984+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T14:55:51.024+08:00 [INFO] pid[12282]: all servers shutdown -2026-05-06T14:55:59.658+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T14:55:59.658+08:00 [INFO] pid[12374]: http server started listening on [:3002] -2026-05-06T14:55:59.728+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:02:03.890+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:02:03.934+08:00 [INFO] pid[12374]: all servers shutdown -2026-05-06T15:02:12.180+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:02:12.180+08:00 [INFO] pid[12683]: http server started listening on [:3002] -2026-05-06T15:02:12.252+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:04:09.017+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:04:09.055+08:00 [INFO] pid[12683]: all servers shutdown -2026-05-06T15:04:19.314+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:04:19.314+08:00 [INFO] pid[12745]: http server started listening on [:3002] -2026-05-06T15:04:19.374+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:06:50.617+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:06:50.650+08:00 [INFO] pid[12745]: all servers shutdown -2026-05-06T15:07:00.638+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:07:00.638+08:00 [INFO] pid[12868]: http server started listening on [:3002] -2026-05-06T15:07:00.700+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:09:07.977+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:09:08.032+08:00 [INFO] pid[12868]: all servers shutdown -2026-05-06T15:09:24.510+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:09:24.510+08:00 [INFO] pid[12960]: http server started listening on [:3002] -2026-05-06T15:09:24.572+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:13:10.009+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:13:10.083+08:00 [INFO] pid[12960]: all servers shutdown -2026-05-06T15:13:19.725+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:13:19.725+08:00 [INFO] pid[13084]: http server started listening on [:3002] -2026-05-06T15:13:19.805+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:29:14.464+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:29:14.510+08:00 [INFO] pid[13084]: all servers shutdown -2026-05-06T15:32:48.866+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:32:48.866+08:00 [INFO] pid[13580]: http server started listening on [:3002] -2026-05-06T15:32:48.932+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T15:55:10.090+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T15:55:10.142+08:00 [INFO] pid[13580]: all servers shutdown -2026-05-06T15:55:13.700+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T15:55:13.700+08:00 [INFO] pid[14064]: http server started listening on [:3002] -2026-05-06T15:55:13.769+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-image | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T16:03:50.513+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T16:03:50.557+08:00 [INFO] pid[14064]: all servers shutdown -2026-05-06T16:04:00.140+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T16:04:00.140+08:00 [INFO] pid[14390]: http server started listening on [:3002] -2026-05-06T16:04:00.201+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-account-relation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-audio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/list-image | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/listImagePage | dataengine/controller/tencent.(*oauthController).ListImagePage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/refresh-token | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-account-relation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /oauth/controller/sync-audio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/syncImage | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - -2026-05-06T16:10:15.365+08:00 [DEBU] service deregister: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} -2026-05-06T16:10:15.407+08:00 [INFO] pid[14390]: all servers shutdown -2026-05-06T16:10:24.387+08:00 [FATA] The duplicated route registry [%POST:/oauth/controller/listAccountRelation@default] which is meaning [{hook}%{method}:{path}@{domain}] at -/Users/xujiaqian/GolandProjects/HDWL/common/http/http.go:84 -> dataengine/controller/tencent.(*oauthController).ListAudio , which has already been registered at -/Users/xujiaqian/GolandProjects/HDWL/common/http/http.go:84 -> dataengine/controller/tencent.(*oauthController).ListAccountRelation -You can disable duplicate route detection by modifying the server.routeOverWrite configuration, but this will cause some routes to be overwritten -2026-05-06T16:13:32.190+08:00 [INFO] openapi specification is serving at address: http://127.0.0.1:3002/api.json -2026-05-06T16:13:32.190+08:00 [INFO] pid[14723]: http server started listening on [:3002] -2026-05-06T16:13:32.251+08:00 [DEBU] service register: &{Head: Deployment: Namespace: Name:data-engine Version: Endpoints:192.168.3.135:3002,192.168.139.3:3002,192.168.107.0:3002,192.168.97.0:3002,192.168.215.0:3002 Metadata:map[insecure:true protocol:http]} - ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /* | github.com/gogf/gf/v2/net/ghttp.MiddlewareHandlerResponse | GLOBAL MIDDLEWARE | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/batchCreateCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).BatchCreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportDetail | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /account/report/createCidAccountReportSum | dataengine/controller/copydata.(*AccountReport).CreateCidAccountReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | ALL | /api.json | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec | | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /api/interface/controller/createApiInterface | dataengine/controller/dict.(*apiInterfaceController).CreateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /api/interface/controller/deleteApiInterface | dataengine/controller/dict.(*apiInterfaceController).DeleteApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/getApiInterface | dataengine/controller/dict.(*apiInterfaceController).GetApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /api/interface/controller/listApiInterfaces | dataengine/controller/dict.(*apiInterfaceController).ListApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterface | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterface | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /api/interface/controller/updateApiInterfaceStatus | dataengine/controller/dict.(*apiInterfaceController).UpdateApiInterfaceStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/batchCreateCampaignReportSum | dataengine/controller/copydata.(*campaignReport).BatchCreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportDetail | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /campaign/report/createCampaignReportSum | dataengine/controller/copydata.(*campaignReport).CreateCampaignReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/batchCreateCreativeReportSum | dataengine/controller/copydata.(*creativeReport).BatchCreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportDetail | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /creative/report/createCreativeReportSum | dataengine/controller/copydata.(*creativeReport).CreateCreativeReportSum | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /datasource/platform/controller/createDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).CreateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /datasource/platform/controller/deleteDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).DeleteDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).GetDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformByCode | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformByCode | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/getPlatformStatistics | dataengine/controller/dict.(*datasourcePlatformController).GetPlatformStatistics | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /datasource/platform/controller/listDatasourcePlatforms | dataengine/controller/dict.(*datasourcePlatformController).ListDatasourcePlatforms | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatform | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatform | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /datasource/platform/controller/updateDatasourcePlatformStatus | dataengine/controller/dict.(*datasourcePlatformController).UpdateDatasourcePlatformStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).ListFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs | dataengine/controller/dict.(*fieldMappingConfigController).CreateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/query | dataengine/controller/dict.(*fieldMappingConfigController).QueryFieldMappingByVendorApi | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /field/mapping/config/controller/field-mapping-configs/validate | dataengine/controller/dict.(*fieldMappingConfigController).ValidateFieldMapping | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | DELETE | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).DeleteFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).GetFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id} | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfig | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | PUT | /field/mapping/config/controller/field-mapping-configs/{id}/status | dataengine/controller/dict.(*fieldMappingConfigController).UpdateFieldMappingConfigStatus | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/batchCreateMaterialReport | dataengine/controller/copydata.(*materialReport).BatchCreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /material/report/createMaterialReport | dataengine/controller/copydata.(*materialReport).CreateMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /material/report/listMaterialReport | dataengine/controller/copydata.(*materialReport).ListMaterialReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/listAccountRelation | dataengine/controller/tencent.(*oauthController).ListAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/listAudio | dataengine/controller/tencent.(*oauthController).ListAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/listImage | dataengine/controller/tencent.(*oauthController).ListImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/listImagePage | dataengine/controller/tencent.(*oauthController).ListImagePage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/refreshToken | dataengine/controller/tencent.(*oauthController).RefreshToken | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/syncAccountRelation | dataengine/controller/tencent.(*oauthController).SyncAccountRelation | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/syncAudio | dataengine/controller/tencent.(*oauthController).SyncAudio | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /oauth/controller/syncImage | dataengine/controller/tencent.(*oauthController).SyncImage | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/batchCreatePopulationReport | dataengine/controller/copydata.(*populationReport).BatchCreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/createPopulationReport | dataengine/controller/copydata.(*populationReport).CreatePopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /population/report/listPopulationReport | dataengine/controller/copydata.(*populationReport).ListPopulationReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/batchCreateStorewideReportSum | dataengine/controller/copydata.(*storewideReport).BatchCreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportDetail | dataengine/controller/copydata.(*storewideReport).CreateStorewideReportDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /storewide/report/createStorewideReportSum | dataengine/controller/copydata.(*storewideReport).CreateStorewideReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/batchCreateTaskReport | dataengine/controller/copydata.(*taskReport).BatchCreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /task/report/createTaskReport | dataengine/controller/copydata.(*taskReport).CreateTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | GET | /task/report/listTaskReport | dataengine/controller/copydata.(*taskReport).ListTaskReport | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportDetail | dataengine/controller/copydata.(*unitReport).BatchCreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/batchCreateUnitReportSum | dataengine/controller/copydata.(*unitReport).BatchCreate | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportDetail | dataengine/controller/copydata.(*unitReport).CreateDetail | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- -| data-engine | default | :3002 | POST | /unit/report/createUnitReportSum | dataengine/controller/copydata.(*unitReport).Create | jaeger.NewTracer | ---------------|---------|---------|--------|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------- - diff --git a/scheduler/run_account_report_task.go b/scheduler/run_account_report_task.go deleted file mode 100644 index 165423d..0000000 --- a/scheduler/run_account_report_task.go +++ /dev/null @@ -1,101 +0,0 @@ -package main - -import ( - "context" - "dataengine/syncdata" - "fmt" - "time" - - "gitea.com/red-future/common/beans" - _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" - - "github.com/gogf/gf/v2/os/gctx" - "github.com/sirupsen/logrus" -) - -func main() { - ctx := gctx.New() - syncService := syncdata.NewSyncService() - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - - now := time.Now() - lastHourEnd := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) - lastHourStart := lastHourEnd.Add(-1 * time.Hour) - - req := &syncdata.AccountReportRequest{ - AdvertiserID: 10001, - StartTime: lastHourStart.UnixMilli(), - EndTime: lastHourEnd.UnixMilli(), - SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, - GroupType: 1, - QueryVersion: 1, - PageInfo: &syncdata.PageInfo{ - CurrentPage: 1, - PageSize: 10, - }, - } - - config := syncdata.ConcurrentSyncConfig{ - MaxConcurrency: 5, - UseMock: true, - MaxRetries: 3, - } - - logrus.Infof("=== 开始执行定时同步任务(并发模式)===") - logrus.Infof("时间区间:%s ~ %s", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05")) - logrus.Infof("分页配置:每页大小=%d", req.PageInfo.PageSize) - logrus.Infof("并发配置:最大并发数=%d, 最大重试次数=%d", config.MaxConcurrency, config.MaxRetries) - - result, err := syncService.SyncAccountReportConcurrent(ctx, req, config) - if err != nil { - logrus.Errorf("定时同步任务执行失败:%v", err) - logrus.Infof("主任务日志ID:%d", result.TaskLogID) - return - } - - hasFailedPages := result.DetailFailCount > 0 - if hasFailedPages { - logrus.Warnf("⚠ 定时同步任务完成,但存在失败的页面") - } else { - logrus.Infof("✓ 定时同步任务全部成功") - } - - logrus.Infof("主任务日志ID:%d", result.TaskLogID) - logrus.Infof("汇总数据:已保存=%v, ID=%d", result.SumSuccess, result.SumID) - logrus.Infof("明细统计:总记录数=%d, 成功页数=%d, 失败页数=%d", - result.DetailCount, result.DetailSuccessCount, result.DetailFailCount) - - if hasFailedPages { - logrus.Warnf("失败的页面已记录到 sync_task_log 表,等待补偿调度器处理") - for _, pageResult := range result.PageResults { - if !pageResult.Success { - logrus.Warnf(" - 第 %d 页失败,任务日志ID=%d,错误:%s", - pageResult.PageNumber, pageResult.PageTaskLogID, pageResult.ErrorMessage) - } - } - } - - fmt.Printf("\n=== 同步结果汇总 ===\n") - fmt.Printf("时间区间:%s ~ %s\n", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05")) - fmt.Printf("汇总数据:已保存=%v, ID=%d\n", result.SumSuccess, result.SumID) - fmt.Printf("明细统计:总记录数=%d, 成功页数=%d, 失败页数=%d\n", - result.DetailCount, result.DetailSuccessCount, result.DetailFailCount) - fmt.Printf("主任务日志ID:%d\n", result.TaskLogID) - - if len(result.PageResults) > 0 { - fmt.Printf("\n分页任务详情:\n") - for _, pageResult := range result.PageResults { - status := "✓ 成功" - if !pageResult.Success { - status = fmt.Sprintf("✗ 失败: %s", pageResult.ErrorMessage) - } - fmt.Printf(" - 第 %d 页:任务ID=%d, 记录数=%d, 耗时=%dms, 状态=%s\n", - pageResult.PageNumber, pageResult.PageTaskLogID, - pageResult.RecordCount, pageResult.DurationMs, status) - } - } - - if hasFailedPages { - fmt.Printf("\n⚠ 警告:存在 %d 个失败的页面,请检查日志并触发补偿任务\n", result.DetailFailCount) - } -} diff --git a/scheduler/run_sync_task_log_task.go b/scheduler/run_sync_task_log_task.go index aed1f6e..a504ee9 100644 --- a/scheduler/run_sync_task_log_task.go +++ b/scheduler/run_sync_task_log_task.go @@ -2,372 +2,131 @@ package main import ( "context" + "fmt" + "time" + dao "dataengine/dao/copydata" taskDto "dataengine/model/dto/copydata" - "dataengine/syncdata" - "fmt" - "strings" - "sync" - "sync/atomic" - "time" + syncSvc "dataengine/service/sync" "gitea.com/red-future/common/beans" _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" + "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gctx" "github.com/sirupsen/logrus" - "golang.org/x/sync/semaphore" ) -// CompensationScheduler 补偿调度器,负责扫描和补偿失败的分页同步任务 +// CompensationScheduler 通用补偿调度器 type CompensationScheduler struct { - syncService *syncdata.SyncService + interval time.Duration } -// NewCompensationScheduler 创建补偿调度器实例 +// NewCompensationScheduler 创建调度器 func NewCompensationScheduler() *CompensationScheduler { - return &CompensationScheduler{ - syncService: syncdata.NewSyncService(), - } -} - -// RunCompensationOnce 执行一次补偿任务(用于手动触发或定时任务调用) -func (s *CompensationScheduler) RunCompensationOnce() { ctx := gctx.New() - ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"}) - - logrus.Info("=== 开始执行数据同步补偿任务 ===") - s.processCompensation(ctx) - logrus.Info("=== 补偿任务执行完毕 ===") + sec := g.Cfg().MustGet(ctx, "sync.compensation_interval_seconds", 300).Int() + if sec < 10 { + sec = 300 + } + return &CompensationScheduler{interval: time.Duration(sec) * time.Second} } -// processCompensation 处理补偿逻辑:扫描失败的分页任务并逐个补偿 -func (s *CompensationScheduler) processCompensation(ctx context.Context) { - logrus.Info(">>> 开始扫描需要补偿的失败分页任务...") +// RunOnce 执行一次补偿 +func (s *CompensationScheduler) RunOnce() { + ctx := gctx.New() + ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1}) - queryReq := &taskDto.QueryFailedTasksReq{ - Status: []string{"failed"}, - TaskType: "account_report_page", - Limit: 50, - } + logrus.Info("=== 开始补偿扫描 ===") - failedPageTasks, err := dao.SyncTaskLog.QueryFailedTasks(ctx, queryReq) + // 查询所有 failed 状态的任务,不限类型 + tasks, err := dao.SyncTaskLog.QueryFailedTasks(ctx, &taskDto.QueryFailedTasksReq{ + Status: []string{"failed"}, + Limit: 50, + }) if err != nil { - logrus.Errorf("查询失败的分页任务异常:%v", err) + logrus.Errorf("查询失败任务异常: %v", err) + return + } + if len(tasks) == 0 { + logrus.Info("当前没有需要补偿的任务") return } - if len(failedPageTasks) == 0 { - logrus.Info("✓ 当前没有需要补偿的失败分页任务") - return - } + logrus.Infof("发现 %d 个失败任务", len(tasks)) - logrus.Infof("发现 %d 个需要补偿的失败分页任务,开始并发处理...", len(failedPageTasks)) + for _, task := range tasks { + if task.RetryCount >= task.MaxRetry { + logrus.Warnf("任务 %s 已达最大重试次数 %d", task.TaskID, task.MaxRetry) + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "manual_review", + ErrorMessage: fmt.Sprintf("已达最大重试次数 %d", task.MaxRetry), + }) + continue + } - maxConcurrency := 5 - var successCount int64 - var failCount int64 - var manualReviewCount int64 + platformCode := task.PlatformCode + interfaceCode := task.InterfaceCode + if platformCode == "" || interfaceCode == "" { + logrus.Warnf("任务 %s 缺少 platform_code 或 interface_code,跳过", task.TaskID) + continue + } - sem := semaphore.NewWeighted(int64(maxConcurrency)) - var wg sync.WaitGroup + logrus.Infof("补偿: %s/%s (第 %d 次)", platformCode, interfaceCode, task.RetryCount+1) - for _, pageTask := range failedPageTasks { - wg.Add(1) + // 更新状态为 retrying + retryCount := task.RetryCount + 1 + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "retrying", + RetryCount: &retryCount, + }) - go func(task *taskDto.SyncTaskLogItem) { - defer wg.Done() - - if err := sem.Acquire(ctx, 1); err != nil { - logrus.Errorf("获取信号量失败:%v", err) - atomic.AddInt64(&failCount, 1) - return - } - defer sem.Release(1) - - if task.RetryCount >= task.MaxRetry { - logrus.Warnf("⚠ 分页任务 %s 已达到最大重试次数 %d,标记为需人工处理", task.TaskID, task.MaxRetry) - - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: task.Id, - Status: "manual_review", - ErrorMessage: fmt.Sprintf("已达到最大重试次数 %d 次", task.MaxRetry), - ErrorCode: "MAX_RETRY_EXCEEDED", - } - dao.SyncTaskLog.Update(ctx, updateReq) - - s.sendAlert(task) - atomic.AddInt64(&manualReviewCount, 1) - return - } - - logrus.Infof("▶ 开始补偿分页任务:%s (广告主=%d, 第 %d/%d 次重试)", - task.TaskID, task.AdvertiserID, task.RetryCount+1, task.MaxRetry) - - if s.compensatePageTask(ctx, task) { - atomic.AddInt64(&successCount, 1) - logrus.Infof("✓ 分页任务 %s 补偿成功", task.TaskID) - - parentTaskID := s.extractParentTaskID(task.TaskID) - if parentTaskID != "" { - s.checkAndUpdateParentTaskStatus(ctx, parentTaskID) - } + // 执行补偿(增量同步) + _, err := syncSvc.SyncByConfig(ctx, platformCode, interfaceCode, false) + if err != nil { + logrus.Errorf("补偿失败: %v", err) + // 更新状态为 failed,设置下次重试时间 + backoff := []int{5, 15, 30, 60, 120} + waitMin := 5 + if retryCount <= len(backoff) { + waitMin = backoff[retryCount-1] } else { - atomic.AddInt64(&failCount, 1) - logrus.Warnf("✗ 分页任务 %s 补偿失败", task.TaskID) + waitMin = backoff[len(backoff)-1] } - }(pageTask) - } - - wg.Wait() - - finalSuccess := atomic.LoadInt64(&successCount) - finalFail := atomic.LoadInt64(&failCount) - finalManualReview := atomic.LoadInt64(&manualReviewCount) - - logrus.Infof("=== 补偿任务执行完成:总计=%d, 成功=%d, 失败=%d, 需人工处理=%d ===", - len(failedPageTasks), finalSuccess, finalFail, finalManualReview) -} - -// compensatePageTask 补偿单个分页任务:重新请求API并插入数据 -// 返回 true 表示补偿成功,false 表示补偿失败 -func (s *CompensationScheduler) compensatePageTask(ctx context.Context, pageTask *taskDto.SyncTaskLogItem) bool { - retryCount := pageTask.RetryCount + 1 - - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: pageTask.Id, - Status: "retrying", - RetryCount: &retryCount, - } - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新任务状态为 retrying 失败:%v", err) - return false - } - - startTime := s.parseTime(pageTask.StartTime) - endTime := s.parseTime(pageTask.EndTime) - - pageNumber := s.extractPageNumber(pageTask.TaskID) - if pageNumber == 0 { - logrus.Errorf("无法从任务ID %s 解析页码", pageTask.TaskID) - s.markPageTaskFailed(ctx, pageTask.Id, retryCount, "无法解析页码", "PARSE_PAGE_NUMBER_FAILED") - return false - } - - pageSize := s.extractPageSize(pageTask) - - req := &syncdata.AccountReportRequest{ - AdvertiserID: pageTask.AdvertiserID, - StartTime: startTime.UnixMilli(), - EndTime: endTime.UnixMilli(), - SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, - GroupType: 1, - QueryVersion: 1, - PageInfo: &syncdata.PageInfo{ - CurrentPage: pageNumber, - PageSize: pageSize, - }, - } - - maxRetries := 3 - parentTaskID := s.extractParentTaskID(pageTask.TaskID) - pageTaskID := fmt.Sprintf("%s_page_%d", parentTaskID, pageNumber) - - result, _, err := s.syncService.SyncSinglePageWithTask(ctx, req, true, maxRetries, pageTaskID, pageNumber) - - if err != nil { - logrus.Errorf("补偿分页任务 %s 失败(第 %d 次):%v", pageTask.TaskID, retryCount, err) - s.markPageTaskFailed(ctx, pageTask.Id, retryCount, err.Error(), "PAGE_COMPENSATION_FAILED") - return false - } - - logrus.Infof("✓ 补偿分页任务 %s 成功 - 记录数=%d", pageTask.TaskID, result.DetailCount) - return true -} - -// markPageTaskFailed 标记分页任务为失败状态,并设置下次重试时间(指数退避策略) -func (s *CompensationScheduler) markPageTaskFailed(ctx context.Context, taskID int64, retryCount int, errMsg, errCode string) { - backoffMinutes := s.calculateBackoff(retryCount) - nextRetry := time.Now().Add(time.Duration(backoffMinutes) * time.Minute) - - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: taskID, - Status: "failed", - ErrorMessage: errMsg, - ErrorCode: errCode, - NextRetryTime: nextRetry, - } - dao.SyncTaskLog.Update(ctx, updateReq) -} - -// checkAndUpdateParentTaskStatus 检查主任务的所有分页任务状态,如果全部成功则更新主任务状态 -func (s *CompensationScheduler) checkAndUpdateParentTaskStatus(ctx context.Context, parentTaskID string) { - logrus.Infof(">>> 检查主任务 %s 的所有分页任务状态...", parentTaskID) - - parentTask, err := dao.SyncTaskLog.GetByTaskID(ctx, parentTaskID, "account_report") - if err != nil || parentTask == nil { - logrus.Warnf("未找到主任务 %s,跳过状态更新", parentTaskID) - return - } - - if parentTask.Status == "success" { - logrus.Infof("主任务 %s 已经是成功状态,无需更新", parentTaskID) - return - } - - allPageTasks, err := dao.SyncTaskLog.QueryAllPageTasksByParentID(ctx, parentTaskID, 1000) - if err != nil { - logrus.Errorf("查询主任务 %s 的分页任务失败:%v", parentTaskID, err) - return - } - - if len(allPageTasks) == 0 { - logrus.Warnf("主任务 %s 没有找到任何分页任务", parentTaskID) - return - } - - failedPages := make([]int, 0) - successPages := make([]int, 0) - - for _, pageTask := range allPageTasks { - pageNumber := s.extractPageNumber(pageTask.TaskID) - if pageTask.Status == "success" { - successPages = append(successPages, pageNumber) - } else if pageTask.Status == "failed" || pageTask.Status == "manual_review" { - failedPages = append(failedPages, pageNumber) + nextRetry := time.Now().Add(time.Duration(waitMin) * time.Minute) + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "failed", + ErrorMessage: err.Error(), + ErrorCode: "COMPENSATION_FAILED", + NextRetryTime: nextRetry, + }) + } else { + logrus.Infof("补偿成功: %s/%s", platformCode, interfaceCode) + now := time.Now() + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "success", + CompletedAt: now, + }) } } - logrus.Infof("主任务 %s 分页状态:总数=%d, 成功=%d, 失败=%d", - parentTaskID, len(allPageTasks), len(successPages), len(failedPages)) - - if len(failedPages) == 0 { - logrus.Infof("✓ 主任务 %s 的所有分页任务都已成功,更新主任务状态为 success", parentTaskID) - - summary := map[string]interface{}{ - "total_pages": len(allPageTasks), - "success_pages": len(successPages), - "failed_pages": 0, - "compensated": true, - } - - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: parentTask.Id, - Status: "success", - ResultSummary: summary, - } - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新主任务 %s 状态失败:%v", parentTaskID, err) - } - } else { - logrus.Infof("⚠ 主任务 %s 仍有 %d 个失败的分页任务:%v,保持部分失败状态", - parentTaskID, len(failedPages), failedPages) - } + logrus.Info("=== 补偿扫描完成 ===") } -// extractParentTaskID 从分页任务ID中提取主任务ID -// 例如:从 "12345_1234567890_account_page_2" 提取 "12345_1234567890_account" -func (s *CompensationScheduler) extractParentTaskID(taskID string) string { - if idx := strings.LastIndex(taskID, "_page_"); idx > 0 { - return taskID[:idx] +// Start 启动 +func (s *CompensationScheduler) Start() { + logrus.Infof("补偿调度器启动,间隔: %v", s.interval) + s.RunOnce() + ticker := time.NewTicker(s.interval) + defer ticker.Stop() + for range ticker.C { + s.RunOnce() } - return "" -} - -// extractPageNumber 从分页任务ID中提取页码 -// 例如:从 "12345_1234567890_account_page_2" 提取 2 -func (s *CompensationScheduler) extractPageNumber(taskID string) int { - if idx := strings.LastIndex(taskID, "_page_"); idx > 0 { - var pageNum int - fmt.Sscanf(taskID[idx+6:], "%d", &pageNum) - return pageNum - } - return 0 -} - -// extractPageSize 从任务日志的 PageInfo 或 RequestParams 字段中提取每页大小 -// 优先级:PageInfo.page_size > RequestParams.page_size > 默认值10 -func (s *CompensationScheduler) extractPageSize(pageTask *taskDto.SyncTaskLogItem) int { - logrus.Infof("DEBUG - PageInfo 类型: %T, 值: %+v", pageTask.PageInfo, pageTask.PageInfo) - logrus.Infof("DEBUG - RequestParams 类型: %T, 值: %+v", pageTask.RequestParams, pageTask.RequestParams) - - // 优先从 PageInfo 中提取 - if pageTask.PageInfo != nil { - switch v := pageTask.PageInfo.(type) { - case map[string]interface{}: - // 尝试 float64 类型(JSON 数字默认类型) - if pageSize, ok := v["page_size"].(float64); ok { - return int(pageSize) - } - // 尝试 string 类型 - if pageSizeStr, ok := v["page_size"].(string); ok { - var pageSize int - fmt.Sscanf(pageSizeStr, "%d", &pageSize) - if pageSize > 0 { - return pageSize - } - } - case map[string]string: - if pageSizeStr, ok := v["page_size"]; ok { - var pageSize int - fmt.Sscanf(pageSizeStr, "%d", &pageSize) - if pageSize > 0 { - return pageSize - } - } - } - } - - // 其次从 RequestParams 中提取 - if pageTask.RequestParams != nil { - switch v := pageTask.RequestParams.(type) { - case map[string]interface{}: - if pageSize, ok := v["page_size"].(float64); ok { - return int(pageSize) - } - if pageSizeStr, ok := v["page_size"].(string); ok { - var pageSize int - fmt.Sscanf(pageSizeStr, "%d", &pageSize) - if pageSize > 0 { - return pageSize - } - } - } - } - - // 默认值改为 10 - return 10 -} - -// calculateBackoff 根据重试次数计算退避时间(分钟) -// 重试次数:1->5分钟, 2->15分钟, 3->30分钟, 4->60分钟, 5+->120分钟 -func (s *CompensationScheduler) calculateBackoff(retryCount int) int { - backoffs := []int{5, 15, 30, 60, 120} - if retryCount <= len(backoffs) { - return backoffs[retryCount-1] - } - return backoffs[len(backoffs)-1] -} - -// parseTime 解析时间字段,支持 time.Time 和字符串格式 -func (s *CompensationScheduler) parseTime(t interface{}) time.Time { - switch v := t.(type) { - case time.Time: - return v - case string: - if parsed, err := time.Parse("2006-01-02 15:04:05", v); err == nil { - return parsed - } - } - return time.Now() -} - -// sendAlert 发送告警通知(当前仅记录错误日志) -func (s *CompensationScheduler) sendAlert(task *taskDto.SyncTaskLogItem) { - logrus.Errorf("【告警】分页任务 %s 需要人工介入:广告主=%d, 错误=%s", - task.TaskID, task.AdvertiserID, task.ErrorMessage) } func main() { - scheduler := NewCompensationScheduler() - scheduler.RunCompensationOnce() + NewCompensationScheduler().Start() } diff --git a/service/api_service.go b/service/api_service.go deleted file mode 100644 index 15d776f..0000000 --- a/service/api_service.go +++ /dev/null @@ -1,396 +0,0 @@ -package service - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "math" - "net/http" - "time" - - entities "dataengine/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 -} diff --git a/service/copydata/api_account_report_service.go b/service/copydata/api_account_report_service.go deleted file mode 100644 index 88c1421..0000000 --- a/service/copydata/api_account_report_service.go +++ /dev/null @@ -1,113 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - "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 -} - -// CreateSum 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 -} - -// BatchCreateSum 批量创建广告数据报表汇总 -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 -} diff --git a/service/copydata/campaign_report_service.go b/service/copydata/campaign_report_service.go deleted file mode 100644 index bd76a81..0000000 --- a/service/copydata/campaign_report_service.go +++ /dev/null @@ -1,97 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - "errors" - - "gitea.com/red-future/common/beans" -) - -type campaignReportSumService struct{} - -// CampaignReportSum 广告计划效果指标表服务 -var CampaignReportSum = new(campaignReportSumService) - -// Create 创建广告计划效果指标表 -func (s *campaignReportSumService) Create(ctx context.Context, req *dto.CampaignReportSumItem) (res *dto.CreateCampaignReportSumRes, err error) { - // 验证必要字段 - if req.ReportDateStr == "" { - return nil, errors.New("报告日期不能为空") - } - - // 插入数据库 - id, err := dao.CampaignReportSum.Insert(ctx, req) - if err != nil { - return nil, err - } - - res = &dto.CreateCampaignReportSumRes{ - Id: id, - } - return -} - -// BatchCreate 批量创建广告计划效果指标表 -func (s *campaignReportSumService) BatchCreate(ctx context.Context, req *dto.BatchCreateCampaignReportSumReq) (res *dto.BatchCreateCampaignReportSumRes, 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.CampaignReportSum.BatchInsert(ctx, req.Items) - if err != nil { - return nil, err - } - - res = &dto.BatchCreateCampaignReportSumRes{ - SuccessCount: successCount, - FailCount: failCount, - FailedItems: failedIndexes, - } - return -} - -// CreateDetail 创建广告效果指标表 -func (s *campaignReportSumService) CreateDetail(ctx context.Context, req *dto.CampaignReportDetailItem) (res *dto.CreateCampaignReportDetailRes, err error) { - // 验证必要字段 - if req.ReportDateStr == "" { - return nil, errors.New("报告日期不能为空") - } - - // 插入数据库 - id, err := dao.CampaignReportDetail.Insert(ctx, req) - if err != nil { - return nil, err - } - - res = &dto.CreateCampaignReportDetailRes{ - Id: id, - } - return -} - -// BatchCreateDetail 批量创建广告效果指标表 -func (s *campaignReportSumService) BatchCreateDetail(ctx context.Context, req *dto.BatchCreateCampaignReportDetailReq) (res *dto.BatchCreateCampaignReportDetailRes, 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.CampaignReportDetail.BatchInsert(ctx, req.Items) - if err != nil { - return nil, err - } - - res = &dto.BatchCreateCampaignReportDetailRes{ - SuccessCount: successCount, - FailCount: failCount, - FailedItems: failedIndexes, - } - return -} diff --git a/service/copydata/creative_report_sum_service.go b/service/copydata/creative_report_sum_service.go deleted file mode 100644 index 14d896f..0000000 --- a/service/copydata/creative_report_sum_service.go +++ /dev/null @@ -1,91 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - "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 -} diff --git a/service/copydata/material_report_service.go b/service/copydata/material_report_service.go deleted file mode 100644 index 939154e..0000000 --- a/service/copydata/material_report_service.go +++ /dev/null @@ -1,261 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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, - } -} diff --git a/service/copydata/population_report_service.go b/service/copydata/population_report_service.go deleted file mode 100644 index cebb458..0000000 --- a/service/copydata/population_report_service.go +++ /dev/null @@ -1,237 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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, - } -} diff --git a/service/copydata/storewide_report_sum_service.go b/service/copydata/storewide_report_sum_service.go deleted file mode 100644 index 432c3bd..0000000 --- a/service/copydata/storewide_report_sum_service.go +++ /dev/null @@ -1,97 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - "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 -} diff --git a/service/copydata/task_report_service.go b/service/copydata/task_report_service.go deleted file mode 100644 index 8d426f6..0000000 --- a/service/copydata/task_report_service.go +++ /dev/null @@ -1,113 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - entity "dataengine/model/entity/copydata" - "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, - } -} diff --git a/service/copydata/unit_report_service.go b/service/copydata/unit_report_service.go deleted file mode 100644 index e13c8ad..0000000 --- a/service/copydata/unit_report_service.go +++ /dev/null @@ -1,90 +0,0 @@ -package copydata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - "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 -} diff --git a/service/dict/api_field_mapping_config_service.go b/service/dict/api_field_mapping_config_service.go deleted file mode 100644 index a7a49ff..0000000 --- a/service/dict/api_field_mapping_config_service.go +++ /dev/null @@ -1,396 +0,0 @@ -package dict - -import ( - "context" - consts "dataengine/consts/dict" - "dataengine/dao/dict" - dto "dataengine/model/dto/dict" - entity "dataengine/model/entity/dict" - "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) -} diff --git a/service/sync/api_client.go b/service/sync/api_client.go new file mode 100644 index 0000000..398c0e7 --- /dev/null +++ b/service/sync/api_client.go @@ -0,0 +1,252 @@ +package sync + +import ( + "bytes" + "context" + "crypto/rand" + "encoding/json" + "fmt" + "io" + "math/big" + "net/http" + "net/url" + "strings" + "time" + + "github.com/sirupsen/logrus" +) + +// ApiResult API 调用结果 +type ApiResult struct { + Body []byte + DurationMs int64 +} + +// ApiClient 通用 API 客户端 +type ApiClient struct { + config *PlatformConfig + client *http.Client +} + +// NewApiClient 创建客户端 +func NewApiClient(config *PlatformConfig) *ApiClient { + timeout := 30 * time.Second + if config.RequestTimeoutMs > 0 { + timeout = time.Duration(config.RequestTimeoutMs) * time.Millisecond + } + return &ApiClient{ + config: config, + client: &http.Client{Timeout: timeout}, + } +} + +// Get 发送 GET 请求(无参数) +func (c *ApiClient) Get(ctx context.Context, path string) (*ApiResult, error) { + return c.doRequest(ctx, "GET", path, nil, false) +} + +// PostJSON 发送 POST JSON 请求 +func (c *ApiClient) PostJSON(ctx context.Context, path string, body interface{}) (*ApiResult, error) { + return c.doRequest(ctx, "POST", path, body, false) +} + +// Request 通用请求方法(支持 GET/POST,支持参数在 query 或 body) +func (c *ApiClient) Request(ctx context.Context, method, path string, params map[string]interface{}, paramsInQuery bool) (*ApiResult, error) { + if paramsInQuery { + return c.doRequest(ctx, method, path, params, true) + } + if method == "GET" { + return c.doRequest(ctx, "GET", path, params, true) + } + return c.doRequest(ctx, method, path, params, false) +} + +func (c *ApiClient) doRequest(ctx context.Context, method, path string, body interface{}, paramsInQuery bool) (result *ApiResult, err error) { + maxRetries := c.config.MaxRetries + if maxRetries <= 0 { + maxRetries = 3 + } + retryDelay := time.Duration(c.config.RetryDelayMs) * time.Millisecond + if retryDelay <= 0 { + retryDelay = 1 * time.Second + } + + for attempt := 0; attempt <= maxRetries; attempt++ { + result, err = c.execute(ctx, method, path, body, paramsInQuery) + if err == nil { + return result, nil + } + logrus.Warnf("请求失败 (attempt %d/%d): %v", attempt+1, maxRetries+1, err) + if attempt < maxRetries { + time.Sleep(retryDelay * time.Duration(attempt+1)) + } + } + return result, fmt.Errorf("请求已重试 %d 次仍失败: %w", maxRetries, err) +} + +func (c *ApiClient) execute(ctx context.Context, method, path string, body interface{}, paramsInQuery bool) (*ApiResult, error) { + start := time.Now() + fullURL := c.config.GetApiUrl(path) + + // 先注入认证参数 + fullURL = c.applyAuthURL(fullURL) + + var reqBody io.Reader + if body != nil && !paramsInQuery { + b, _ := json.Marshal(body) + reqBody = bytes.NewBuffer(b) + } + + // 如果参数在查询字符串中,拼接到 URL + if body != nil && paramsInQuery { + if paramsMap, ok := body.(map[string]interface{}); ok { + fullURL = c.buildQueryURL(fullURL, paramsMap) + } + } + + logrus.Infof("请求 URL: %s", fullURL) + + req, err := http.NewRequestWithContext(ctx, method, fullURL, reqBody) + if err != nil { + return nil, fmt.Errorf("创建请求失败: %w", err) + } + + c.applyAuthHeader(req) + req.Header.Set("User-Agent", "data-engine/1.0") + if body != nil && !paramsInQuery { + req.Header.Set("Content-Type", "application/json") + } + + resp, err := c.client.Do(req) + if err != nil { + return nil, fmt.Errorf("请求失败: %w", err) + } + defer resp.Body.Close() + + respBody, _ := io.ReadAll(resp.Body) + result := &ApiResult{Body: respBody, DurationMs: time.Since(start).Milliseconds()} + + if resp.StatusCode >= 400 { + return result, fmt.Errorf("HTTP %d: %s", resp.StatusCode, string(respBody)) + } + return result, nil +} + +// buildQueryURL 将 params 拼接到 URL 查询参数中 +// 支持数组/对象类型的值自动 JSON 序列化 + URL 编码 +func (c *ApiClient) buildQueryURL(rawURL string, params map[string]interface{}) string { + parsed, _ := url.Parse(rawURL) + q := parsed.Query() + + for k, v := range params { + switch val := v.(type) { + case string: + q.Set(k, val) + case bool: + if val { + q.Set(k, "true") + } else { + q.Set(k, "false") + } + case float64: + // JSON 数字反序列化默认是 float64,转 int 避免科学计数法 + if val == float64(int64(val)) { + q.Set(k, fmt.Sprintf("%d", int64(val))) + } else { + q.Set(k, fmt.Sprintf("%v", val)) + } + case float32: + q.Set(k, fmt.Sprintf("%v", val)) + case int, int8, int16, int32, int64: + q.Set(k, fmt.Sprintf("%d", val)) + case uint, uint8, uint16, uint32, uint64: + q.Set(k, fmt.Sprintf("%d", val)) + case []interface{}, map[string]interface{}: + // 数组或对象需要 JSON 序列化后 URL 编码 + b, _ := json.Marshal(v) + q.Set(k, string(b)) + default: + q.Set(k, fmt.Sprintf("%v", v)) + } + } + + parsed.RawQuery = q.Encode() + return parsed.String() +} + +func (c *ApiClient) applyAuthURL(rawURL string) string { + cfg := c.config.AuthConfig + token := c.config.AccessToken + if cfg == nil { + return rawURL + } + + tokenInQuery, _ := cfg["token_in_query"].(bool) + queryKey, _ := cfg["query_key"].(string) + if queryKey == "" { + queryKey = "access_token" + } + + extraParams := make(map[string]string) + if eq, ok := cfg["extra_query_params"].(map[string]interface{}); ok { + for k, v := range eq { + val := fmt.Sprintf("%v", v) + val = strings.ReplaceAll(val, "{timestamp}", fmt.Sprintf("%d", time.Now().Unix())) + val = strings.ReplaceAll(val, "{nonce}", generateNonce()) + extraParams[k] = val + } + } + + if !tokenInQuery && len(extraParams) == 0 { + return rawURL + } + + parsed, _ := url.Parse(rawURL) + q := parsed.Query() + if tokenInQuery && token != "" { + q.Set(queryKey, token) + } + for k, v := range extraParams { + q.Set(k, v) + } + parsed.RawQuery = q.Encode() + return parsed.String() +} + +func (c *ApiClient) applyAuthHeader(req *http.Request) { + cfg := c.config.AuthConfig + token := c.config.AccessToken + + if cfg != nil { + if tiq, _ := cfg["token_in_query"].(bool); tiq { + return + } + } + if token == "" { + return + } + + if cfg != nil { + if h, ok := cfg["header_name"].(string); ok { + f := cfg["header_format"].(string) + if f == "" { + f = "{token}" + } + req.Header.Set(h, strings.ReplaceAll(f, "{token}", token)) + return + } + } + + switch c.config.AuthType { + case "OAUTH2", "TOKEN": + req.Header.Set("Authorization", "Bearer "+token) + case "API_KEY": + req.Header.Set("X-API-Key", token) + } +} + +func generateNonce() string { + nanoPart := time.Now().UnixNano() % 1000000000000 + r, _ := rand.Int(rand.Reader, big.NewInt(10000)) + return fmt.Sprintf("%012d%04d", nanoPart, r.Int64()) +} diff --git a/service/sync/compensation.go b/service/sync/compensation.go new file mode 100644 index 0000000..060d273 --- /dev/null +++ b/service/sync/compensation.go @@ -0,0 +1,116 @@ +package sync + +import ( + "context" + "fmt" + "time" + + dao "dataengine/dao/copydata" + taskDto "dataengine/model/dto/copydata" + + "gitea.com/red-future/common/beans" + "github.com/gogf/gf/v2/frame/g" + "github.com/sirupsen/logrus" +) + +// StartCompensation 启动补偿调度器(在后台循环执行) +func StartCompensation(ctx context.Context) { + sec := g.Cfg().MustGet(ctx, "sync.compensation_interval_seconds", 300).Int() + if sec < 10 { + sec = 300 + } + interval := time.Duration(sec) * time.Second + logrus.Infof("补偿调度器启动,间隔: %v", interval) + + ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1}) + + runCompensation(ctx) + ticker := time.NewTicker(interval) + defer ticker.Stop() + for { + select { + case <-ticker.C: + runCompensation(ctx) + case <-ctx.Done(): + logrus.Info("补偿调度器已停止") + return + } + } +} + +func runCompensation(ctx context.Context) { + logrus.Info("=== 开始补偿扫描 ===") + + tasks, err := dao.SyncTaskLog.QueryFailedTasks(ctx, &taskDto.QueryFailedTasksReq{ + Status: []string{"failed"}, + Limit: 50, + }) + if err != nil { + logrus.Errorf("查询失败任务异常: %v", err) + return + } + if len(tasks) == 0 { + logrus.Info("当前没有需要补偿的任务") + return + } + + logrus.Infof("发现 %d 个失败任务", len(tasks)) + + for _, task := range tasks { + if task.RetryCount >= task.MaxRetry { + logrus.Warnf("任务 %s 已达最大重试次数 %d", task.TaskID, task.MaxRetry) + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "manual_review", + ErrorMessage: fmt.Sprintf("已达最大重试次数 %d", task.MaxRetry), + }) + continue + } + + platformCode := task.PlatformCode + interfaceCode := task.InterfaceCode + if platformCode == "" || interfaceCode == "" { + logrus.Warnf("任务 %s 缺少 platform_code 或 interface_code,跳过", task.TaskID) + continue + } + + logrus.Infof("补偿: %s/%s (第 %d 次)", platformCode, interfaceCode, task.RetryCount+1) + + retryCount := task.RetryCount + 1 + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "retrying", + RetryCount: &retryCount, + }) + + _, err := SyncByConfig(ctx, platformCode, interfaceCode, false) + if err != nil { + logrus.Errorf("补偿失败: %v", err) + backoff := []int{5, 15, 30, 60, 120} + waitMin := 5 + if retryCount <= len(backoff) { + waitMin = backoff[retryCount-1] + } else { + waitMin = backoff[len(backoff)-1] + } + nextRetry := time.Now().Add(time.Duration(waitMin) * time.Minute) + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "failed", + ErrorMessage: err.Error(), + ErrorCode: "COMPENSATION_FAILED", + NextRetryTime: nextRetry, + }) + } else { + logrus.Infof("补偿成功: %s/%s", platformCode, interfaceCode) + now := time.Now() + dao.SyncTaskLog.Update(ctx, &taskDto.UpdateSyncTaskLogReq{ + ID: task.Id, + Status: "success", + CompletedAt: now, + }) + } + } + + logrus.Info("=== 补偿扫描完成 ===") +} diff --git a/service/sync/data_writer.go b/service/sync/data_writer.go new file mode 100644 index 0000000..e07ee7a --- /dev/null +++ b/service/sync/data_writer.go @@ -0,0 +1,70 @@ +package sync + +import ( + "context" + "time" + + "gitea.com/red-future/common/db/gfdb" + "github.com/sirupsen/logrus" +) + +// InsertRows 批量写入数据 +func InsertRows(ctx context.Context, tableName string, conflictKeys []string, rows []map[string]interface{}) (int, error) { + if len(rows) == 0 { + return 0, nil + } + + now := time.Now() + for i := range rows { + if rows[i] == nil { + rows[i] = make(map[string]interface{}) + } + if _, ok := rows[i]["created_at"]; !ok { + rows[i]["created_at"] = now + } + if _, ok := rows[i]["updated_at"]; !ok { + rows[i]["updated_at"] = now + } + } + + batchSize := 100 + total := 0 + for i := 0; i < len(rows); i += batchSize { + end := i + batchSize + if end > len(rows) { + end = len(rows) + } + batch := rows[i:end] + + m := gfdb.DB(ctx).Model(ctx, tableName).Data(batch) + if len(conflictKeys) > 0 { + keys := make([]interface{}, len(conflictKeys)) + for j, k := range conflictKeys { + keys[j] = k + } + m = m.OnConflict(keys...) + } + _, err := m.Save() + if err != nil { + logrus.Errorf("批量写入 %s 失败: %v", tableName, err) + for _, row := range batch { + mm := gfdb.DB(ctx).Model(ctx, tableName).Data(row) + if len(conflictKeys) > 0 { + keys := make([]interface{}, len(conflictKeys)) + for j, k := range conflictKeys { + keys[j] = k + } + mm = mm.OnConflict(keys...) + } + if _, e := mm.Save(); e != nil { + logrus.Errorf("逐条写入失败: %v", e) + } else { + total++ + } + } + } else { + total += len(batch) + } + } + return total, nil +} diff --git a/service/sync/dynamic_sync.go b/service/sync/dynamic_sync.go new file mode 100644 index 0000000..3accc3c --- /dev/null +++ b/service/sync/dynamic_sync.go @@ -0,0 +1,658 @@ +package sync + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "sync" + "time" + + consts "dataengine/consts/public" + dao "dataengine/dao/copydata" + taskDto "dataengine/model/dto/copydata" + entity "dataengine/model/entity/dict" + + "gitea.com/red-future/common/db/gfdb" + "github.com/sirupsen/logrus" +) + +// SyncResult 同步结果 +type SyncResult struct { + TableName string + TotalPages int + TotalRows int + InsertedRows int + Duration string +} + +// PrefetchConfig 预取配置 +type PrefetchConfig struct { + URL string `json:"url"` + Method string `json:"method"` + ResponsePath string `json:"response_path"` + TargetParam string `json:"target_param"` + ValueField string `json:"value_field"` +} + +// SyncByConfig 执行同步 +func SyncByConfig(ctx context.Context, platformCode, interfaceCode string, isFullSync bool) (*SyncResult, error) { + start := time.Now() + pm := &PlatformManager{} + + platform, ifaces, err := pm.GetPlatformWithInterfaces(ctx, platformCode) + if err != nil { + return nil, fmt.Errorf("读取平台配置失败: %w", err) + } + + var iface *entity.ApiInterface + for i := range ifaces { + if ifaces[i].Code == interfaceCode { + iface = &ifaces[i] + break + } + } + if iface == nil { + return nil, fmt.Errorf("未找到接口 [%s]", interfaceCode) + } + if iface.TableDefinition == nil || len(iface.TableDefinition) == 0 { + return nil, fmt.Errorf("接口 [%s] 未配置 table_definition", interfaceCode) + } + + td, err := ParseTableDefinition(iface.TableDefinition) + if err != nil { + return nil, fmt.Errorf("解析表结构失败: %w", err) + } + if err := EnsureTable(ctx, td); err != nil { + return nil, fmt.Errorf("建表失败: %w", err) + } + + // 检查上次同步状态(在标记 running 之前检查) + prevStatus := getSyncStatus(ctx, platformCode, interfaceCode) + lastSyncTime := int64(0) + if !isFullSync { + lastSyncTime = getLastSyncTime(ctx, platformCode, interfaceCode) + } + if prevStatus == "running" { + logrus.Warnf("检测到上次同步异常中断 [%s/%s],将重新全量同步", platformCode, interfaceCode) + lastSyncTime = 0 + } + + // 标记同步开始(保留 last_sync_time 不变,状态设为 running) + markSyncRunning(ctx, platformCode, interfaceCode, lastSyncTime) + + api := NewApiClient(platform) + + prefetch := parsePrefetchConfig(iface.RequestConfig) + if prefetch != nil { + return syncWithPrefetch(ctx, api, platform, iface, ifaces, td, prefetch, isFullSync, lastSyncTime, start) + } + return syncSingleAPI(ctx, api, platform, iface, td, lastSyncTime, start) +} + +// paramsInQuery 判断参数是否应放在 URL 查询字符串中 +func paramsInQuery(iface *entity.ApiInterface) bool { + if iface.Method == "GET" { + return true + } + if iface.RequestConfig != nil { + if loc, _ := iface.RequestConfig["parameters_location"].(string); loc == "query" { + return true + } + } + return false +} + +// syncSingleAPI 单接口分页同步 +func syncSingleAPI(ctx context.Context, api *ApiClient, platform *PlatformConfig, iface *entity.ApiInterface, td *TableDefinition, lastSyncTime int64, start time.Time) (*SyncResult, error) { + pageSize := GetSyncPageSize(ctx) + if ps, ok := iface.RequestConfig["page_size"].(float64); ok { + pageSize = int(ps) + } + + inQuery := paramsInQuery(iface) + method := string(iface.Method) + + body := buildReqBody(iface, 1, pageSize, lastSyncTime, nil) + resp, err := api.Request(ctx, method, iface.Url, body, inQuery) + if err != nil { + recordFailure(ctx, platform.PlatformCode, iface.Code, err.Error()) + return nil, fmt.Errorf("获取第一页失败: %w", err) + } + + rows, totalPages, maxTime, err := parseResp(resp.Body, iface.ResponseConfig) + if err != nil { + return nil, err + } + + result := &SyncResult{TableName: td.TableName, TotalPages: totalPages} + inserted, _ := savePage(ctx, td, rows) + result.InsertedRows += inserted + result.TotalRows += len(rows) + + for page := 2; page <= totalPages; page++ { + body := buildReqBody(iface, page, pageSize, lastSyncTime, nil) + resp, err := api.Request(ctx, method, iface.Url, body, inQuery) + if err != nil { + logrus.Errorf("第 %d 页失败: %v", page, err) + continue + } + rows, _, mt, err := parseResp(resp.Body, iface.ResponseConfig) + if err != nil { + continue + } + inserted, _ = savePage(ctx, td, rows) + result.InsertedRows += inserted + result.TotalRows += len(rows) + if mt > maxTime { + maxTime = mt + } + time.Sleep(100 * time.Millisecond) + } + + if maxTime <= 0 { + maxTime = time.Now().Unix() + } + updateSyncTime(ctx, platform.PlatformCode, iface.Code, maxTime) + + result.Duration = fmt.Sprintf("%.1fs", time.Since(start).Seconds()) + logrus.Infof("同步完成 - 表:%s, %d条, 写入%d条, 耗时%s", td.TableName, result.TotalRows, result.InsertedRows, result.Duration) + return result, nil +} + +// syncWithPrefetch 预取模式同步(先分页拉取全部实体列表,再并发处理每个实体) +func syncWithPrefetch(ctx context.Context, api *ApiClient, platform *PlatformConfig, iface *entity.ApiInterface, allIfaces []entity.ApiInterface, td *TableDefinition, prefetch *PrefetchConfig, isFullSync bool, lastSyncTime int64, start time.Time) (*SyncResult, error) { + logrus.Infof("预取模式: %s -> %s", prefetch.URL, iface.Url) + + // 1. 查找匹配 prefetch URL 的接口配置(用于获取正确的请求参数) + prefetchIface := findInterfaceByURL(allIfaces, prefetch.URL) + prefetchParams := buildPrefetchParams(iface) + if prefetchIface != nil && prefetchIface.RequestConfig != nil { + // 使用 prefetch 目标接口的 request_config 重建参数(覆盖默认值) + for k, v := range prefetchIface.RequestConfig { + if k == "headers" || k == "prefetch" || k == "page_param" || + k == "page_size_param" || k == "time_field" || k == "parameters_location" || + k == "filtering" || k == "group_by" || k == "date_range" { + continue + } + prefetchParams[k] = v + } + } + method := strings.ToUpper(prefetch.Method) + inQuery := paramsInQuery(iface) + + allEntities := make([]interface{}, 0) + allRows := make([]map[string]interface{}, 0) + prefetchPage := 1 + prefetchTotalPages := 1 + + for prefetchPage <= prefetchTotalPages { + params := make(map[string]interface{}) + for k, v := range prefetchParams { + params[k] = v + } + pageParam := "page" + if p, ok := iface.RequestConfig["page_param"].(string); ok { + pageParam = p + } + params[pageParam] = prefetchPage + + resp, err := api.Request(ctx, method, prefetch.URL, params, true) + if err != nil { + return nil, fmt.Errorf("预取第 %d 页失败: %w", prefetchPage, err) + } + + entities, _, _, err := parseResp(resp.Body, nil) + if err != nil { + return nil, fmt.Errorf("解析预取第 %d 页响应失败: %w", prefetchPage, err) + } + + // 收集完整数据行(用于存库)和提取的 ID 值(用于遍历) + for _, item := range entities { + allRows = append(allRows, item) + if prefetch.ValueField == "" { + allEntities = append(allEntities, item) + } else if v, ok := item[prefetch.ValueField]; ok { + // 将 float64 转 int64,避免后续 URL 参数中出现科学计数法 + if f, ok := v.(float64); ok { + allEntities = append(allEntities, int64(f)) + } else { + allEntities = append(allEntities, v) + } + } + } + + if prefetchPage == 1 { + if tp := getTotalPages(resp.Body); tp > 0 { + prefetchTotalPages = tp + } else { + break + } + } + prefetchPage++ + time.Sleep(50 * time.Millisecond) + } + + if len(allEntities) == 0 { + logrus.Warn("预取结果为空列表,跳过同步") + return &SyncResult{TableName: td.TableName, Duration: fmt.Sprintf("%.1fs", time.Since(start).Seconds())}, nil + } + logrus.Infof("预取到 %d 个实体(共 %d 页)", len(allEntities), prefetchPage-1) + + // 2. 将预取的数据也存入库(如账户列表存入 tencent_account_relation) + if prefetchIface != nil && prefetchIface.TableDefinition != nil { + prefetchTd, err := ParseTableDefinition(prefetchIface.TableDefinition) + if err == nil { + if ensureErr := EnsureTable(ctx, prefetchTd); ensureErr == nil { + saved, _ := savePage(ctx, prefetchTd, allRows) + logrus.Infof("预取数据已存库: %s, %d 条", prefetchTd.TableName, saved) + } + } + } + + // 2. 并发处理每个实体的数据 + result := &SyncResult{TableName: td.TableName} + pageSize := GetSyncPageSize(ctx) + if ps, ok := iface.RequestConfig["page_size"].(float64); ok { + pageSize = int(ps) + } + + dataMethod := string(iface.Method) + concurrency := GetSyncConcurrency(ctx) + + var mu sync.Mutex + var wg sync.WaitGroup + sem := make(chan struct{}, concurrency) + globalMaxTime := lastSyncTime + + for idx, entityVal := range allEntities { + wg.Add(1) + sem <- struct{}{} + + go func(idx int, val interface{}) { + defer wg.Done() + defer func() { <-sem }() + + logrus.Infof(" 处理实体 [%d/%d]: %v", idx+1, len(allEntities), val) + + page := 1 + totalPages := 1 + entityMaxTime := int64(0) + + for page <= totalPages { + body := buildReqBody(iface, page, pageSize, lastSyncTime, map[string]interface{}{ + prefetch.TargetParam: val, + }) + + resp, err := api.Request(ctx, dataMethod, iface.Url, body, inQuery) + if err != nil { + logrus.Errorf(" 实体 %v 第 %d 页失败: %v", val, page, err) + page++ + time.Sleep(200 * time.Millisecond) + continue + } + + rows, tp, mt, parseErr := parseResp(resp.Body, iface.ResponseConfig) + if parseErr != nil { + logrus.Errorf(" 解析响应失败: %v", parseErr) + page++ + continue + } + + if page == 1 { + totalPages = tp + } + + for i := range rows { + rows[i][prefetch.TargetParam] = val + } + + inserted, _ := savePage(ctx, td, rows) + + mu.Lock() + result.InsertedRows += inserted + result.TotalRows += len(rows) + mu.Unlock() + + if mt > entityMaxTime { + entityMaxTime = mt + } + + page++ + time.Sleep(100 * time.Millisecond) + } + + if entityMaxTime > 0 { + mu.Lock() + if entityMaxTime > globalMaxTime { + globalMaxTime = entityMaxTime + } + mu.Unlock() + } + }(idx, entityVal) + } + + wg.Wait() + + if globalMaxTime <= 0 { + globalMaxTime = time.Now().Unix() + } + updateSyncTime(ctx, platform.PlatformCode, iface.Code, globalMaxTime) + + result.Duration = fmt.Sprintf("%.1fs", time.Since(start).Seconds()) + logrus.Infof("同步完成 - 表:%s, %d条, 写入%d条, 耗时%s", td.TableName, result.TotalRows, result.InsertedRows, result.Duration) + return result, nil +} + +// getTotalPages 从响应中提取总页数 +func getTotalPages(raw []byte) int { + var r struct { + Data map[string]interface{} `json:"data"` + } + if err := json.Unmarshal(raw, &r); err != nil { + return 0 + } + if r.Data == nil { + return 0 + } + if pi, ok := r.Data["page_info"].(map[string]interface{}); ok { + if tp, ok := pi["total_page"].(float64); ok { + return int(tp) + } + } + return 0 +} + +// buildPrefetchParams 构建预取接口的请求参数 +func buildPrefetchParams(iface *entity.ApiInterface) map[string]interface{} { + params := make(map[string]interface{}) + + if iface.RequestConfig != nil { + pageParam := "page" + psParam := "page_size" + if p, ok := iface.RequestConfig["page_param"].(string); ok { + pageParam = p + } + if p, ok := iface.RequestConfig["page_size_param"].(string); ok { + psParam = p + } + params[pageParam] = 1 + params[psParam] = 100 + + for k, v := range iface.RequestConfig { + if k == "headers" || k == "prefetch" || k == "page_param" || + k == "page_size_param" || k == "time_field" || k == "parameters_location" || + k == "filtering" || k == "group_by" || k == "date_range" { + continue + } + if k == pageParam || k == psParam { + continue + } + params[k] = v + } + } + + return params +} + +// parsePrefetchConfig 解析预取配置 +func parsePrefetchConfig(requestConfig map[string]interface{}) *PrefetchConfig { + if requestConfig == nil { + return nil + } + raw, ok := requestConfig["prefetch"] + if !ok || raw == nil { + return nil + } + m, ok := raw.(map[string]interface{}) + if !ok { + return nil + } + pc := &PrefetchConfig{} + if u, _ := m["url"].(string); u != "" { + pc.URL = u + } else { + return nil + } + if method, _ := m["method"].(string); method != "" { + pc.Method = method + } else { + pc.Method = "GET" + } + pc.ResponsePath, _ = m["response_path"].(string) + pc.TargetParam, _ = m["target_param"].(string) + pc.ValueField, _ = m["value_field"].(string) + return pc +} + +// extractValues 从 JSON 响应中提取值列表 +func extractValues(raw []byte, path, valueField string) ([]interface{}, error) { + var resp map[string]interface{} + if err := json.Unmarshal(raw, &resp); err != nil { + return nil, fmt.Errorf("JSON解析失败: %w", err) + } + + parts := strings.Split(path, ".") + current := resp + for i, part := range parts { + if i == len(parts)-1 { + list, ok := current[part].([]interface{}) + if !ok { + return nil, fmt.Errorf("路径 %s 不是数组", path) + } + var values []interface{} + for _, item := range list { + if valueField == "" { + values = append(values, item) + } else if m, ok := item.(map[string]interface{}); ok { + if v, exists := m[valueField]; exists { + values = append(values, v) + } + } + } + return values, nil + } + next, ok := current[part].(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("路径 %s 在 %s 处中断", path, part) + } + current = next + } + return nil, fmt.Errorf("路径 %s 不完整", path) +} + +// buildReqBody 构建请求参数 +func buildReqBody(iface *entity.ApiInterface, page, pageSize int, lastSyncTime int64, extraParams map[string]interface{}) map[string]interface{} { + body := make(map[string]interface{}) + if iface.RequestConfig != nil { + for k, v := range iface.RequestConfig { + if k == "time_field" || k == "headers" || k == "prefetch" || + k == "page_param" || k == "page_size_param" || k == "parameters_location" { + continue + } + body[k] = v + } + } + pageParam := "page" + psParam := "page_size" + if iface.RequestConfig != nil { + if p, ok := iface.RequestConfig["page_param"].(string); ok { + pageParam = p + } + if p, ok := iface.RequestConfig["page_size_param"].(string); ok { + psParam = p + } + } + body[pageParam] = page + body[psParam] = pageSize + // 增量同步:将 time_field 转为 API 期望的 filtering 格式 + // 如 filtering=[{"field":"last_modified_time","operator":"GREATER_EQUALS","values":["1780037982"]}] + if lastSyncTime > 0 { + if tf, ok := iface.RequestConfig["time_field"].(string); ok && tf != "" { + timeFilter := map[string]interface{}{ + "field": tf, + "operator": "GREATER_EQUALS", + "values": []interface{}{fmt.Sprintf("%d", lastSyncTime)}, + } + // 合并已有的 filtering(如果 request_config 中已定义其他过滤条件) + if existing, ok := body["filtering"].([]interface{}); ok { + body["filtering"] = append(existing, timeFilter) + } else { + body["filtering"] = []interface{}{timeFilter} + } + } + } + for k, v := range extraParams { + body[k] = v + } + return body +} + +// parseResp 解析同步接口返回值 +func parseResp(raw []byte, responseConfig map[string]interface{}) ([]map[string]interface{}, int, int64, error) { + var r struct { + Code int `json:"code"` + Message string `json:"message"` + Data map[string]interface{} `json:"data"` + } + if err := json.Unmarshal(raw, &r); err != nil { + return nil, 0, 0, fmt.Errorf("解析响应失败: %w", err) + } + if r.Code != 0 { + return nil, 0, 0, fmt.Errorf("API错误: code=%d, message=%s", r.Code, r.Message) + } + + var rows []map[string]interface{} + totalPages := 1 + maxTime := int64(0) + + var listData []interface{} + if lp, ok := r.Data["list"]; ok { + listData, _ = lp.([]interface{}) + } else if lp, ok := r.Data["data"]; ok { + if m, ok := lp.(map[string]interface{}); ok { + if l, ok := m["list"].([]interface{}); ok { + listData = l + } + } + } + + for _, item := range listData { + if m, ok := item.(map[string]interface{}); ok { + j, _ := json.Marshal(m) + m["raw_data"] = string(j) + if t, ok := m["last_modified_time"].(float64); ok && int64(t) > maxTime { + maxTime = int64(t) + } + if t, ok := m["created_time"].(float64); ok && int64(t) > maxTime { + maxTime = int64(t) + } + rows = append(rows, m) + } + } + + if pi, ok := r.Data["page_info"].(map[string]interface{}); ok { + if tp, ok := pi["total_page"].(float64); ok { + totalPages = int(tp) + } else if tp, ok := pi["total_page"].(int); ok { + totalPages = tp + } + } + + return rows, totalPages, maxTime, nil +} + +func savePage(ctx context.Context, td *TableDefinition, rows []map[string]interface{}) (int, error) { + if len(rows) == 0 { + return 0, nil + } + colSet := make(map[string]bool) + for _, c := range td.Columns { + colSet[c.Name] = true + } + var clean []map[string]interface{} + for _, row := range rows { + c := make(map[string]interface{}) + for k, v := range row { + if colSet[k] { + c[k] = v + } + } + if r, ok := row["raw_data"]; ok { + c["raw_data"] = r + } + clean = append(clean, c) + } + return InsertRows(ctx, td.TableName, td.ConflictKeys, clean) +} + +func getLastSyncTime(ctx context.Context, platformCode, interfaceCode string) int64 { + var t int64 + gfdb.DB(ctx).Model(ctx, consts.SyncTrackerTable). + Fields("last_sync_time"). + Where("platform_code", platformCode). + Where("interface_code", interfaceCode). + Scan(&t) + return t +} + +func getSyncStatus(ctx context.Context, platformCode, interfaceCode string) string { + var s string + gfdb.DB(ctx).Model(ctx, consts.SyncTrackerTable). + Fields("sync_status"). + Where("platform_code", platformCode). + Where("interface_code", interfaceCode). + Scan(&s) + return s +} + +func markSyncRunning(ctx context.Context, platformCode, interfaceCode string, lastSyncTime int64) { + gfdb.DB(ctx).Model(ctx, consts.SyncTrackerTable). + Data(map[string]interface{}{ + "platform_code": platformCode, + "interface_code": interfaceCode, + "last_sync_time": lastSyncTime, + "sync_status": "running", + }). + OnConflict("platform_code", "interface_code"). + Save() +} + +func updateSyncTime(ctx context.Context, platformCode, interfaceCode string, t int64) { + gfdb.DB(ctx).Model(ctx, consts.SyncTrackerTable). + Data(map[string]interface{}{ + "platform_code": platformCode, + "interface_code": interfaceCode, + "last_sync_time": t, + "last_sync_at": time.Now(), + "sync_status": "success", + }). + OnConflict("platform_code", "interface_code"). + Save() +} + +func recordFailure(ctx context.Context, platformCode, interfaceCode, errMsg string) { + dao.SyncTaskLog.Create(ctx, &taskDto.CreateSyncTaskLogReq{ + TaskID: fmt.Sprintf("%s_%s_%d", platformCode, interfaceCode, time.Now().UnixNano()), + TaskType: fmt.Sprintf("%s_%s", platformCode, interfaceCode), + PlatformCode: platformCode, + InterfaceCode: interfaceCode, + Status: "failed", + MaxRetry: 3, + RequestParams: map[string]interface{}{ + "platform_code": platformCode, + "interface_code": interfaceCode, + "error": errMsg, + }, + }) +} + +// findInterfaceByURL 在所有接口中查找匹配 URL 的接口 +func findInterfaceByURL(ifaces []entity.ApiInterface, url string) *entity.ApiInterface { + for i := range ifaces { + if ifaces[i].Url == url { + return &ifaces[i] + } + } + return nil +} diff --git a/service/sync/helpers.go b/service/sync/helpers.go new file mode 100644 index 0000000..1c49a1b --- /dev/null +++ b/service/sync/helpers.go @@ -0,0 +1,43 @@ +package sync + +import ( + "context" + + "github.com/gogf/gf/v2/frame/g" +) + +// GetSyncPageSize 获取分页大小(默认100) +func GetSyncPageSize(ctx context.Context) int { + ps := g.Cfg().MustGet(ctx, "sync.page_size", 100).Int() + if ps < 1 || ps > 100 { + return 100 + } + return ps +} + +// GetSyncConcurrency 获取并发数(默认5) +func GetSyncConcurrency(ctx context.Context) int { + c := g.Cfg().MustGet(ctx, "sync.concurrency", 5).Int() + if c < 1 { + return 1 + } + return c +} + +// GetSyncInterval 获取同步间隔(分钟,默认60) +func GetSyncInterval(ctx context.Context) int { + m := g.Cfg().MustGet(ctx, "sync.sync_interval_minutes", 60).Int() + if m < 5 { + return 60 + } + return m +} + +// GetRetryCount 获取重试次数(默认3) +func GetRetryCount(ctx context.Context) int { + r := g.Cfg().MustGet(ctx, "sync.retry_count", 3).Int() + if r < 0 { + return 3 + } + return r +} diff --git a/service/sync/platform_manager.go b/service/sync/platform_manager.go new file mode 100644 index 0000000..86f171d --- /dev/null +++ b/service/sync/platform_manager.go @@ -0,0 +1,111 @@ +package sync + +import ( + "context" + "fmt" + + dao "dataengine/dao/dict" + dto "dataengine/model/dto/dict" + entity "dataengine/model/entity/dict" + + "github.com/sirupsen/logrus" +) + +// PlatformConfig 运行时平台配置 +type PlatformConfig struct { + *entity.DatasourcePlatform + AccessToken string +} + +// GetApiUrl 拼接完整 API URL +func (c *PlatformConfig) GetApiUrl(apiPath string) string { + if c.ApiBaseUrl == "" { + return apiPath + } + return c.ApiBaseUrl + apiPath +} + +// PlatformManager 平台配置管理器 +type PlatformManager struct{} + +// GetPlatform 根据平台编码获取配置 +func (m *PlatformManager) GetPlatform(ctx context.Context, platformCode string) (*PlatformConfig, error) { + platform, err := dao.DatasourcePlatform.GetByPlatformCode(ctx, platformCode) + if err != nil { + return nil, fmt.Errorf("查询平台配置失败 [%s]: %w", platformCode, err) + } + if platform == nil { + return nil, fmt.Errorf("平台不存在 [%s]", platformCode) + } + if platform.Status != "ACTIVE" { + return nil, fmt.Errorf("平台 [%s] 未启用", platformCode) + } + + cfg := &PlatformConfig{DatasourcePlatform: platform} + + switch platform.AuthType { + case "TOKEN": + cfg.AccessToken = platform.Token + case "OAUTH2": + if platform.Token != "" { + cfg.AccessToken = platform.Token + } + case "API_KEY": + cfg.AccessToken = platform.ApiKey + default: + logrus.Warnf("平台 %s 认证类型 %s 未处理", platformCode, platform.AuthType) + } + + return cfg, nil +} + +// GetInterfaces 获取平台下的活跃接口列表 +func (m *PlatformManager) GetInterfaces(ctx context.Context, platformId int64) ([]entity.ApiInterface, error) { + interfaces, _, err := dao.ApiInterface.List(ctx, &dto.ListApiInterfaceReq{ + PlatformId: platformId, + Status: "active", + }) + if err != nil { + return nil, err + } + return interfaces, nil +} + +// GetInterfaceByCode 根据编码获取接口定义 +func (m *PlatformManager) GetInterfaceByCode(ctx context.Context, platformId int64, code string) (*entity.ApiInterface, error) { + all, _, err := dao.ApiInterface.List(ctx, &dto.ListApiInterfaceReq{ + PlatformId: platformId, + Code: code, + Status: "active", + }) + if err != nil { + return nil, err + } + if len(all) == 0 { + return nil, fmt.Errorf("未找到接口 [code=%s]", code) + } + return &all[0], nil +} + +// GetPlatformWithInterfaces 获取平台及所有接口 +func (m *PlatformManager) GetPlatformWithInterfaces(ctx context.Context, platformCode string) (*PlatformConfig, []entity.ApiInterface, error) { + cfg, err := m.GetPlatform(ctx, platformCode) + if err != nil { + return nil, nil, err + } + interfaces, err := m.GetInterfaces(ctx, cfg.ID) + if err != nil { + return nil, nil, err + } + return cfg, interfaces, nil +} + +// FindInterfaceUrl 在接口列表中查找指定编码的 URL +func FindInterfaceUrl(ifaces []entity.ApiInterface, code string) string { + for _, iface := range ifaces { + if iface.Code == code { + return iface.Url + } + } + return "" +} diff --git a/service/sync/sync_scheduler.go b/service/sync/sync_scheduler.go new file mode 100644 index 0000000..a65ccad --- /dev/null +++ b/service/sync/sync_scheduler.go @@ -0,0 +1,93 @@ +package sync + +import ( + "context" + "time" + + dao "dataengine/dao/dict" + dto "dataengine/model/dto/dict" + + "gitea.com/red-future/common/beans" + "github.com/gogf/gf/v2/frame/g" + "github.com/sirupsen/logrus" +) + +// StartAutoSync 启动自动同步(独立 goroutine,启动后自动循环执行) +func StartAutoSync(ctx context.Context) { + interval := GetSyncInterval(ctx) + logrus.Infof("自动同步调度器启动,间隔: %d 分钟", interval) + + // 首次执行:根据 sync_tracker 是否有记录自动判断全量/增量 + // 无记录 → 全量,有记录 → 增量 + runAutoSync(ctx) + + ticker := time.NewTicker(time.Duration(interval) * time.Minute) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + runAutoSync(ctx) + case <-ctx.Done(): + logrus.Info("自动同步调度器已停止") + return + } + } +} + +func runAutoSync(ctx context.Context) { + logrus.Info("=== 开始自动同步 ===") + + // 注入用户上下文(ORM 框架需要用于租户隔离) + ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1}) + + // 查询所有 ACTIVE 平台 + platforms, _, err := dao.DatasourcePlatform.List(ctx, &dto.ListDatasourcePlatformReq{ + Status: "ACTIVE", + }) + if err != nil { + logrus.Errorf("查询平台列表失败: %v", err) + return + } + + for _, p := range platforms { + // 查询该平台下有 table_definition 的接口 + interfaces, _, err := dao.ApiInterface.List(ctx, &dto.ListApiInterfaceReq{ + PlatformId: p.ID, + Status: "active", + }) + if err != nil { + logrus.Errorf("查询接口列表失败 [platform=%s]: %v", p.PlatformCode, err) + continue + } + + for _, iface := range interfaces { + if iface.TableDefinition == nil || len(iface.TableDefinition) == 0 { + continue + } + + logrus.Infof("自动同步: %s / %s", p.PlatformCode, iface.Code) + // isFullSync=false 表示去查 sync_tracker: + // 有记录 → 增量,无记录 → lastSyncTime=0 → 全量 + _, err := SyncByConfig(ctx, p.PlatformCode, iface.Code, false) + if err != nil { + logrus.Errorf("自动同步失败 [%s/%s]: %v", p.PlatformCode, iface.Code, err) + } + } + } + + logrus.Info("=== 自动同步完成 ===") +} + +// InitAndStartAutoSync 在 main 中调用:初始化配置后启动自动同步和补偿 +func InitAndStartAutoSync(ctx context.Context) { + // 读取配置中的同步开关 + enabled := g.Cfg().MustGet(ctx, "sync.auto_sync_enabled", true).Bool() + if enabled { + go StartAutoSync(ctx) + } else { + logrus.Info("自动同步已关闭") + } + // 补偿调度器独立启动,不受 auto_sync_enabled 控制 + go StartCompensation(ctx) +} diff --git a/service/sync/table_manager.go b/service/sync/table_manager.go new file mode 100644 index 0000000..cb70f4d --- /dev/null +++ b/service/sync/table_manager.go @@ -0,0 +1,103 @@ +package sync + +import ( + "context" + "fmt" + "strings" + + "gitea.com/red-future/common/db/gfdb" + "github.com/sirupsen/logrus" +) + +// ColumnDef 列定义 +type ColumnDef struct { + Name string `json:"name"` + Type string `json:"type"` + Comment string `json:"comment,omitempty"` +} + +// TableDefinition 表结构定义 +type TableDefinition struct { + TableName string `json:"table_name"` + Columns []ColumnDef `json:"columns"` + ConflictKeys []string `json:"conflict_keys,omitempty"` +} + +// ParseTableDefinition 解析 table_definition JSON +func ParseTableDefinition(raw map[string]interface{}) (*TableDefinition, error) { + td := &TableDefinition{} + name, _ := raw["table_name"].(string) + if name == "" { + return nil, fmt.Errorf("table_definition 缺少 table_name") + } + td.TableName = name + + colsRaw, _ := raw["columns"].([]interface{}) + for _, c := range colsRaw { + cm, _ := c.(map[string]interface{}) + if cm == nil { + continue + } + n, _ := cm["name"].(string) + t, _ := cm["type"].(string) + comment, _ := cm["comment"].(string) + if n == "" || t == "" { + continue + } + td.Columns = append(td.Columns, ColumnDef{Name: n, Type: t, Comment: comment}) + } + if keys, _ := raw["conflict_keys"].([]interface{}); keys != nil { + for _, k := range keys { + if s, ok := k.(string); ok { + td.ConflictKeys = append(td.ConflictKeys, s) + } + } + } + if len(td.Columns) == 0 { + return nil, fmt.Errorf("table_definition 列定义为空") + } + return td, nil +} + +// EnsureTable 确保表存在 +func EnsureTable(ctx context.Context, td *TableDefinition) error { + sql := buildCreateSQL(td) + logrus.Infof("建表: %s", td.TableName) + _, err := gfdb.DB(ctx).Exec(ctx, sql) + if err != nil { + return fmt.Errorf("建表失败 [%s]: %w", td.TableName, err) + } + logrus.Infof("表 %s 已就绪", td.TableName) + return nil +} + +func buildCreateSQL(td *TableDefinition) string { + cols := []string{ + "id BIGSERIAL PRIMARY KEY", + "tenant_id BIGINT NOT NULL DEFAULT 0", + "creator VARCHAR(64) DEFAULT ''", + "created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()", + "updater VARCHAR(64) DEFAULT ''", + "updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()", + "deleted_at TIMESTAMP WITH TIME ZONE", + } + for _, c := range td.Columns { + cols = append(cols, fmt.Sprintf("%s %s", c.Name, c.Type)) + } + cols = append(cols, "raw_data JSONB DEFAULT '{}'") + + // 添加复合唯一索引(用于 ON CONFLICT upsert,所有 conflict_keys 作为一个复合索引) + var constraints []string + if len(td.ConflictKeys) > 0 { + cols := strings.Join(td.ConflictKeys, ", ") + indexName := fmt.Sprintf("uq_%s_conflict", td.TableName) + constraints = append(constraints, + fmt.Sprintf("CREATE UNIQUE INDEX IF NOT EXISTS %s ON %s (%s)", indexName, td.TableName, cols)) + } + + sql := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s (\n %s\n);\n", td.TableName, strings.Join(cols, ",\n ")) + if len(constraints) > 0 { + sql += strings.Join(constraints, ";\n") + ";" + } + return sql +} diff --git a/service/tencent/account_relation_service.go b/service/tencent/account_relation_service.go deleted file mode 100644 index 834fdc5..0000000 --- a/service/tencent/account_relation_service.go +++ /dev/null @@ -1,186 +0,0 @@ -package tencent - -import ( - "context" - dao "dataengine/dao/tencent" - dto "dataengine/model/dto/tencent" - entity "dataengine/model/entity/tencent" - "encoding/json" - "fmt" - "io" - "net/http" - "time" - - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type accountRelationService struct{} - -var AccountRelationService = new(accountRelationService) - -// API响应结构 -type accountRelationResponse struct { - Code int `json:"code"` - Message string `json:"message"` - Data struct { - List []struct { - AccountID int64 `json:"account_id"` - CorporationName string `json:"corporation_name"` - CommentDataList json.RawMessage `json:"comment_data_list"` - IsAdx bool `json:"is_adx"` - IsBid bool `json:"is_bid"` - IsMp bool `json:"is_mp"` - } `json:"list"` - PageInfo struct { - Page int `json:"page"` - PageSize int `json:"page_size"` - TotalNumber int `json:"total_number"` - TotalPage int `json:"total_page"` - } `json:"page_info"` - } `json:"data"` - TraceID string `json:"trace_id"` -} - -// SyncAll 同步所有账户关系数据(自动分页) -func (s *accountRelationService) SyncAll(ctx context.Context, req *dto.SyncAccountRelationReq) (res *dto.SyncAccountRelationRes, err error) { - // 获取access_token - accessToken := req.AccessToken - if accessToken == "" { - accessToken = g.Cfg().MustGet(ctx, "tencent.oauth.access_token").String() - } - - if accessToken == "" { - return nil, fmt.Errorf("access_token不能为空") - } - - res = &dto.SyncAccountRelationRes{} - totalSynced := 0 - - // 先获取第一页,得到总页数 - firstPageData, err := s.fetchPage(ctx, accessToken, 1, 100) - if err != nil { - return nil, fmt.Errorf("获取第一页数据失败: %w", err) - } - - totalPage := firstPageData.Data.PageInfo.TotalPage - res.TotalNumber = firstPageData.Data.PageInfo.TotalNumber - res.TotalPage = totalPage - - logrus.Infof("开始同步腾讯广告账户关系 - 总页数: %d, 总记录数: %d", totalPage, res.TotalNumber) - - // 处理第一页数据 - synced, err := s.savePageData(ctx, firstPageData) - if err != nil { - logrus.Errorf("保存第一页数据失败: %v", err) - } - totalSynced += synced - - // 循环获取剩余页 - for page := 2; page <= totalPage; page++ { - logrus.Infof("正在获取第 %d/%d 页...", page, totalPage) - - pageData, err := s.fetchPage(ctx, accessToken, page, 100) - if err != nil { - logrus.Errorf("获取第 %d 页失败: %v,继续下一页", page, err) - continue - } - - synced, err := s.savePageData(ctx, pageData) - if err != nil { - logrus.Errorf("保存第 %d 页数据失败: %v", page, err) - continue - } - totalSynced += synced - - // 避免请求过快,休眠100ms - time.Sleep(100 * time.Millisecond) - } - - res.SyncedCount = totalSynced - res.Message = fmt.Sprintf("同步完成,共处理 %d 条记录", totalSynced) - - logrus.Infof("同步完成 - 总页数: %d, 总记录数: %d, 成功同步: %d", totalPage, res.TotalNumber, totalSynced) - - return res, nil -} - -// fetchPage 获取单页数据 -func (s *accountRelationService) fetchPage(ctx context.Context, accessToken string, page, pageSize int) (*accountRelationResponse, error) { - timestamp := time.Now().Unix() - // 使用时间戳+随机数生成唯一的nonce - nonce := fmt.Sprintf("%d_%d", timestamp, time.Now().UnixNano()) - - url := fmt.Sprintf("https://api.e.qq.com/v3.0/organization_account_relation/get?"+ - "access_token=%s×tamp=%d&nonce=%s&pagination_mode=PAGINATION_MODE_NORMAL&page=%d&page_size=%d", - accessToken, timestamp, nonce, page, pageSize) - - httpReq, err := http.NewRequestWithContext(ctx, "GET", url, nil) - if err != nil { - return nil, fmt.Errorf("创建请求失败: %w", err) - } - - client := &http.Client{Timeout: 30 * time.Second} - resp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("请求失败: %w", err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败: %w", err) - } - - var result accountRelationResponse - if err := json.Unmarshal(body, &result); err != nil { - return nil, fmt.Errorf("解析响应失败: %w", err) - } - - if result.Code != 0 { - return nil, fmt.Errorf("API错误: code=%d, message=%s", result.Code, result.Message) - } - - return &result, nil -} - -// savePageData 保存单页数据到数据库 -func (s *accountRelationService) savePageData(ctx context.Context, data *accountRelationResponse) (int, error) { - if len(data.Data.List) == 0 { - return 0, nil - } - - logrus.Infof("准备保存 %d 条账户关系数据", len(data.Data.List)) - - var items []*entity.AccountRelation - for _, item := range data.Data.List { - commentJSON := "{}" - if len(item.CommentDataList) > 0 { - commentJSON = string(item.CommentDataList) - } - - accountRelation := &entity.AccountRelation{ - AccountID: item.AccountID, - CorporationName: item.CorporationName, - CommentDataList: commentJSON, - IsAdx: item.IsAdx, - IsBid: item.IsBid, - IsMp: item.IsMp, - } - // 设置 TenantID(框架将0视为空值,所以使用1) - accountRelation.TenantId = 1 - - items = append(items, accountRelation) - } - - logrus.Infof("调用 BatchUpsert...") - successCount, err := dao.AccountRelation.BatchUpsert(ctx, items) - logrus.Infof("BatchUpsert 返回: successCount=%d, err=%v", successCount, err) - - return successCount, err -} - -// ListAll 获取所有账户关系 -func (s *accountRelationService) ListAll(ctx context.Context) ([]entity.AccountRelation, error) { - return dao.AccountRelation.ListAll(ctx) -} diff --git a/service/tencent/audio_service.go b/service/tencent/audio_service.go deleted file mode 100644 index 5180761..0000000 --- a/service/tencent/audio_service.go +++ /dev/null @@ -1,214 +0,0 @@ -package tencent - -import ( - "bytes" - "context" - dao "dataengine/dao/tencent" - dto "dataengine/model/dto/tencent" - entity "dataengine/model/entity/tencent" - "encoding/json" - "fmt" - "io" - "net/http" - "time" - - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type audioService struct{} - -var AudioService = new(audioService) - -// API响应结构 -type audioResponse struct { - Code int `json:"code"` - Message string `json:"message"` - Data struct { - List []struct { - AudioId string `json:"audio_id"` - CoverImageUrl string `json:"cover_image_url"` - AudioName string `json:"audio_name"` - Author string `json:"author"` - Duration float64 `json:"duration"` - ExpireTime int64 `json:"expire_time"` - FeelTags []string `json:"feel_tags"` - GenreTags []string `json:"genre_tags"` - } `json:"list"` - PageInfo struct { - Page int `json:"page"` - PageSize int `json:"page_size"` - TotalNumber int `json:"total_number"` - TotalPage int `json:"total_page"` - } `json:"page_info"` - } `json:"data"` - TraceId string `json:"trace_id"` -} - -// SyncAll 同步所有音乐素材数据(自动分页) -func (s *audioService) SyncAll(ctx context.Context, req *dto.SyncAudioReq) (res *dto.SyncAudioRes, err error) { - // 获取access_token - accessToken := req.AccessToken - if accessToken == "" { - accessToken = g.Cfg().MustGet(ctx, "tencent.oauth.access_token").String() - } - - if accessToken == "" { - return nil, fmt.Errorf("access_token不能为空") - } - - res = &dto.SyncAudioRes{} - totalSynced := 0 - - // 先获取第一页,得到总页数 - firstPageData, err := s.fetchPage(ctx, accessToken, 1, 100) - if err != nil { - return nil, fmt.Errorf("获取第一页数据失败: %w", err) - } - - totalPage := firstPageData.Data.PageInfo.TotalPage - res.TotalNumber = firstPageData.Data.PageInfo.TotalNumber - res.TotalPage = totalPage - - logrus.Infof("开始同步腾讯广告音乐素材 - 总页数: %d, 总记录数: %d", totalPage, res.TotalNumber) - - // 处理第一页数据 - synced, err := s.savePageData(ctx, firstPageData) - if err != nil { - logrus.Errorf("保存第一页数据失败: %v", err) - } - totalSynced += synced - - // 循环获取剩余页 - for page := 2; page <= totalPage; page++ { - logrus.Infof("正在获取第 %d/%d 页...", page, totalPage) - - pageData, err := s.fetchPage(ctx, accessToken, page, 100) - if err != nil { - logrus.Errorf("获取第 %d 页失败: %v,继续下一页", page, err) - continue - } - - synced, err := s.savePageData(ctx, pageData) - if err != nil { - logrus.Errorf("保存第 %d 页数据失败: %v", page, err) - continue - } - totalSynced += synced - - // 避免请求过快,休眠100ms - time.Sleep(100 * time.Millisecond) - } - - res.SyncedCount = totalSynced - res.Message = fmt.Sprintf("同步完成,共处理 %d 条记录", totalSynced) - - logrus.Infof("同步完成 - 总页数: %d, 总记录数: %d, 成功同步: %d", totalPage, res.TotalNumber, totalSynced) - - return res, nil -} - -// fetchPage 获取单页数据 -func (s *audioService) fetchPage(ctx context.Context, accessToken string, page, pageSize int) (*audioResponse, error) { - timestamp := time.Now().Unix() - nonce := fmt.Sprintf("%d_%d", timestamp, time.Now().UnixNano()) - - url := fmt.Sprintf("https://api.e.qq.com/v3.0/muse_audios/get?access_token=%s×tamp=%d&nonce=%s", - accessToken, timestamp, nonce) - - // 构建请求体 - requestBody := map[string]interface{}{ - "fields": []string{ - "audio_id", - "cover_image_url", - "audio_name", - "author", - "duration", - "expire_time", - "feel_tags", - "genre_tags", - }, - "page": page, - "page_size": pageSize, - } - - jsonBody, err := json.Marshal(requestBody) - if err != nil { - return nil, fmt.Errorf("序列化请求体失败: %w", err) - } - - httpReq, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(jsonBody)) - if err != nil { - return nil, fmt.Errorf("创建请求失败: %w", err) - } - - httpReq.Header.Set("Content-Type", "application/json") - - client := &http.Client{Timeout: 30 * time.Second} - resp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("请求失败: %w", err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败: %w", err) - } - - var result audioResponse - if err := json.Unmarshal(body, &result); err != nil { - return nil, fmt.Errorf("解析响应失败: %w", err) - } - - if result.Code != 0 { - return nil, fmt.Errorf("API错误: code=%d, message=%s", result.Code, result.Message) - } - - return &result, nil -} - -// savePageData 保存单页数据到数据库 -func (s *audioService) savePageData(ctx context.Context, data *audioResponse) (int, error) { - if len(data.Data.List) == 0 { - return 0, nil - } - - logrus.Infof("准备保存 %d 条音乐素材数据", len(data.Data.List)) - - var items []*entity.Audio - for _, item := range data.Data.List { - // 序列化标签数组 - feelTagsJSON, _ := json.Marshal(item.FeelTags) - genreTagsJSON, _ := json.Marshal(item.GenreTags) - - audio := &entity.Audio{ - TenantId: 1, - Creator: "system", - Updater: "system", - AudioId: item.AudioId, - CoverImageUrl: item.CoverImageUrl, - AudioName: item.AudioName, - Author: item.Author, - Duration: item.Duration, - ExpireTime: item.ExpireTime, - FeelTags: string(feelTagsJSON), - GenreTags: string(genreTagsJSON), - // 设置默认校验状态为待校验 - VerifyStatus: "PENDING", - } - - items = append(items, audio) - } - - logrus.Infof("调用 BatchUpsert...") - successCount, err := dao.Audio.BatchUpsert(ctx, items) - logrus.Infof("BatchUpsert 返回: successCount=%d, err=%v", successCount, err) - - return successCount, err -} - -// ListAll 获取所有音乐素材 -func (s *audioService) ListAll(ctx context.Context) ([]entity.Audio, error) { - return dao.Audio.ListAll(ctx) -} diff --git a/service/tencent/image_service.go b/service/tencent/image_service.go deleted file mode 100644 index 2638cb0..0000000 --- a/service/tencent/image_service.go +++ /dev/null @@ -1,365 +0,0 @@ -package tencent - -import ( - "context" - dao "dataengine/dao/tencent" - dto "dataengine/model/dto/tencent" - entity "dataengine/model/entity/tencent" - "encoding/json" - "fmt" - "io" - "math/rand" - "net/http" - "net/url" - "time" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type imageService struct{} - -var ImageService = new(imageService) - -// API响应结构 -type imageResponse struct { - Code int `json:"code"` - Message string `json:"message"` - Data struct { - List []struct { - ImageId string `json:"image_id"` - Width int `json:"width"` - Height int `json:"height"` - FileSize int64 `json:"file_size"` - Type string `json:"type"` - Signature string `json:"signature"` - Description string `json:"description"` - SourceSignature string `json:"source_signature"` - PreviewUrl string `json:"preview_url"` - ThumbPreviewUrl string `json:"thumb_preview_url"` - SourceType string `json:"source_type"` - ImageUsage string `json:"image_usage"` - CreatedTime int64 `json:"created_time"` - LastModifiedTime int64 `json:"last_modified_time"` - ProductCatalogId int64 `json:"product_catalog_id"` - ProductOuterId string `json:"product_outer_id"` - SourceReferenceId string `json:"source_reference_id"` - OwnerAccountId string `json:"owner_account_id"` - Status string `json:"status"` - SampleAspectRatio string `json:"sample_aspect_ratio"` - SourceMaterialId string `json:"source_material_id"` - NewSourceType string `json:"new_source_type"` - FirstPublicationStatus string `json:"first_publication_status"` - QualityStatus string `json:"quality_status"` - SimilarityStatus string `json:"similarity_status"` - UserAigcStatus string `json:"user_aigc_status"` - SystemAigcStatus string `json:"system_aigc_status"` - AigcSource string `json:"aigc_source"` - AigcFlag string `json:"aigc_flag"` - MuseAigcVersion int `json:"muse_aigc_version"` - AigcType int `json:"aigc_type"` - } `json:"list"` - PageInfo struct { - Page int `json:"page"` - PageSize int `json:"page_size"` - TotalNumber int `json:"total_number"` - TotalPage int `json:"total_page"` - } `json:"page_info"` - } `json:"data"` - TraceId string `json:"trace_id"` -} - -// SyncAll 同步所有图片素材数据(遍历所有账户,自动分页) -func (s *imageService) SyncAll(ctx context.Context, req *dto.SyncImageReq) (res *dto.SyncImageRes, err error) { - // 创建独立的context,避免HTTP请求超时导致context被取消 - // 设置30分钟超时,足够完成421个账户的同步任务 - independentCtx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) - defer cancel() - - // 保留原context中的user信息,供数据库中间件使用 - if user := ctx.Value("user"); user != nil { - independentCtx = context.WithValue(independentCtx, "user", user) - } - - // 获取access_token - accessToken := req.AccessToken - if accessToken == "" { - accessToken = g.Cfg().MustGet(independentCtx, "tencent.oauth.access_token").String() - } - - if accessToken == "" { - return nil, fmt.Errorf("access_token不能为空") - } - - res = &dto.SyncImageRes{} - totalSynced := 0 - totalImages := 0 - - // 获取所有账户列表 - accounts, err := s.getAccountList(independentCtx) - if err != nil { - return nil, fmt.Errorf("获取账户列表失败: %w", err) - } - - res.TotalAccounts = len(accounts) - logrus.Infof("开始同步腾讯广告图片素材 - 账户数: %d", len(accounts)) - - // 遍历每个账户 - for _, account := range accounts { - logrus.Infof("========== 开始处理账户: %d (%s) ==========", account.AccountID, account.CorporationName) - - // 获取该账户的所有图片(分页) - accountImages, err := s.syncAccountImages(independentCtx, accessToken, account.AccountID) - if err != nil { - logrus.Errorf("账户 %d 同步失败: %v,继续下一个账户", account.AccountID, err) - continue - } - - totalImages += accountImages - totalSynced += accountImages - - // 避免请求过快,休眠200ms - time.Sleep(200 * time.Millisecond) - } - - res.TotalImages = totalImages - res.SyncedCount = totalSynced - res.Message = fmt.Sprintf("同步完成,共处理 %d 个账户,%d 条图片记录", res.TotalAccounts, totalSynced) - - logrus.Infof("同步完成 - 账户数: %d, 总图片数: %d, 成功同步: %d", res.TotalAccounts, totalImages, totalSynced) - - return res, nil -} - -// getAccountList 获取所有账户列表 -func (s *imageService) getAccountList(ctx context.Context) ([]entity.AccountRelation, error) { - var accounts []entity.AccountRelation - err := gfdb.DB(ctx).Model(ctx, "tencent_account_relation"). - WhereNull("deleted_at"). - Scan(&accounts) - - return accounts, err -} - -// syncAccountImages 同步单个账户的图片数据 -func (s *imageService) syncAccountImages(ctx context.Context, accessToken string, accountId int64) (int, error) { - totalSynced := 0 - - // 先获取第一页,得到总页数 - firstPageData, err := s.fetchPage(ctx, accessToken, accountId, 1, 100) - if err != nil { - return 0, fmt.Errorf("获取第一页数据失败: %w", err) - } - - totalPage := firstPageData.Data.PageInfo.TotalPage - logrus.Infof("账户 %d - 总页数: %d, 总记录数: %d", accountId, totalPage, firstPageData.Data.PageInfo.TotalNumber) - - // 处理第一页数据 - synced, err := s.savePageData(ctx, firstPageData, accountId) - if err != nil { - logrus.Errorf("保存第一页数据失败: %v", err) - } - totalSynced += synced - - // 循环获取剩余页 - for page := 2; page <= totalPage; page++ { - logrus.Infof("账户 %d - 正在获取第 %d/%d 页...", accountId, page, totalPage) - - pageData, err := s.fetchPage(ctx, accessToken, accountId, page, 100) - if err != nil { - logrus.Errorf("账户 %d - 获取第 %d 页失败: %v,继续下一页", accountId, page, err) - continue - } - - synced, err := s.savePageData(ctx, pageData, accountId) - if err != nil { - logrus.Errorf("账户 %d - 保存第 %d 页数据失败: %v", accountId, page, err) - continue - } - totalSynced += synced - - // 避免请求过快,休眠100ms - time.Sleep(100 * time.Millisecond) - } - - logrus.Infof("账户 %d - 同步完成,共 %d 条记录", accountId, totalSynced) - return totalSynced, nil -} - -// fetchPage 获取单页数据 -func (s *imageService) fetchPage(ctx context.Context, accessToken string, accountId int64, page, pageSize int) (*imageResponse, error) { - // 构建filtering参数:状态为正常 - filtering := `[{"field":"status","operator":"EQUALS","values":["ADSTATUS_NORMAL"]}]` - - // URL编码filtering参数 - encodedFiltering := url.QueryEscape(filtering) - - // 在发送请求前生成最新的时间戳和nonce,避免时间戳过期 - timestamp := time.Now().Unix() - // 使用时间戳+纳秒后6位+随机数,确保唯一性且不超过32字符 - nanoSuffix := time.Now().UnixNano() % 1000000 // 取纳秒的后6位 - nonce := fmt.Sprintf("%d%06d%d", timestamp, nanoSuffix, rand.Intn(1000)) - - urlStr := fmt.Sprintf("https://api.e.qq.com/v3.0/images/get?access_token=%s&nonce=%s×tamp=%d&account_id=%d&filtering=%s&page=%d&page_size=%d", - accessToken, nonce, timestamp, accountId, encodedFiltering, page, pageSize) - - logrus.Debugf("请求URL: %s", urlStr) - - httpReq, err := http.NewRequestWithContext(ctx, "GET", urlStr, nil) - if err != nil { - return nil, fmt.Errorf("创建请求失败: %w", err) - } - - client := &http.Client{Timeout: 30 * time.Second} - resp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("请求失败: %w", err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败: %w", err) - } - - logrus.Debugf("API响应: %s", string(body)) - - var result imageResponse - if err := json.Unmarshal(body, &result); err != nil { - return nil, fmt.Errorf("解析响应失败: %w", err) - } - - if result.Code != 0 { - return nil, fmt.Errorf("API错误: code=%d, message=%s", result.Code, result.Message) - } - - return &result, nil -} - -// savePageData 保存单页数据到数据库 -func (s *imageService) savePageData(ctx context.Context, data *imageResponse, accountId int64) (int, error) { - if len(data.Data.List) == 0 { - return 0, nil - } - - logrus.Infof("准备保存 %d 条图片素材数据", len(data.Data.List)) - - var items []*entity.Image - for _, item := range data.Data.List { - image := &entity.Image{ - ImageId: item.ImageId, - AccountId: accountId, - Width: item.Width, - Height: item.Height, - FileSize: item.FileSize, - Type: item.Type, - Signature: item.Signature, - Description: item.Description, - SourceSignature: item.SourceSignature, - PreviewUrl: item.PreviewUrl, - ThumbPreviewUrl: item.ThumbPreviewUrl, - SourceType: item.SourceType, - ImageUsage: item.ImageUsage, - CreatedTime: item.CreatedTime, - LastModifiedTime: item.LastModifiedTime, - ProductCatalogId: item.ProductCatalogId, - ProductOuterId: item.ProductOuterId, - SourceReferenceId: item.SourceReferenceId, - OwnerAccountId: item.OwnerAccountId, - Status: item.Status, - SampleAspectRatio: item.SampleAspectRatio, - SourceMaterialId: item.SourceMaterialId, - NewSourceType: item.NewSourceType, - FirstPublicationStatus: item.FirstPublicationStatus, - QualityStatus: item.QualityStatus, - SimilarityStatus: item.SimilarityStatus, - UserAigcStatus: item.UserAigcStatus, - SystemAigcStatus: item.SystemAigcStatus, - AigcSource: item.AigcSource, - AigcFlag: item.AigcFlag, - MuseAigcVersion: item.MuseAigcVersion, - AigcType: item.AigcType, - } - // 设置 TenantID(框架将0视为空值,所以使用1) - image.TenantId = 1 - // 设置默认校验状态为待校验 - image.VerifyStatus = "PENDING" - - items = append(items, image) - } - - logrus.Infof("调用 BatchUpsert...") - successCount, err := dao.Image.BatchUpsert(ctx, items) - logrus.Infof("BatchUpsert 返回: successCount=%d, err=%v", successCount, err) - - return successCount, err -} - -// ListAll 获取所有图片素材 -func (s *imageService) ListAll(ctx context.Context) ([]entity.Image, error) { - return dao.Image.ListAll(ctx) -} - -// ListWithPage 分页查询图片素材(支持时间过滤) -func (s *imageService) ListWithPage(ctx context.Context, req *dto.ListImageQueryReq) (*dto.ListImageRes, error) { - // 设置默认值 - page := req.Page - if page <= 0 { - page = 1 - } - pageSize := req.PageSize - if pageSize <= 0 { - pageSize = 20 - } - if pageSize > 100 { - pageSize = 100 // 限制最大每页数量 - } - - // 调用DAO层查询 - list, total, err := dao.Image.ListWithPage(ctx, page, pageSize, req.AccountId, req.StartTime, req.EndTime, req.Status) - if err != nil { - return nil, fmt.Errorf("查询图片素材失败: %w", err) - } - - // 计算总页数 - totalPages := (total + pageSize - 1) / pageSize - if totalPages == 0 && total > 0 { - totalPages = 1 - } - - // 转换为DTO - items := make([]dto.ImageItem, 0, len(list)) - for _, item := range list { - items = append(items, dto.ImageItem{ - Id: item.Id, - ImageId: item.ImageId, - AccountId: item.AccountId, - Width: item.Width, - Height: item.Height, - FileSize: item.FileSize, - Type: item.Type, - Signature: item.Signature, - Description: item.Description, - PreviewUrl: item.PreviewUrl, - ThumbPreviewUrl: item.ThumbPreviewUrl, - Status: item.Status, - CreatedTime: item.CreatedTime, - LastModifiedTime: item.LastModifiedTime, - CreatedAt: item.CreatedAt.Format("2006-01-02 15:04:05"), - UpdatedAt: item.UpdatedAt.Format("2006-01-02 15:04:05"), - }) - } - - res := &dto.ListImageRes{ - List: items, - Total: total, - Page: page, - PageSize: pageSize, - TotalPages: totalPages, - } - - logrus.Infof("查询图片素材 - 页码: %d, 每页: %d, 总数: %d, 总页数: %d", page, pageSize, total, totalPages) - - return res, nil -} diff --git a/service/tencent/oauth_service.go b/service/tencent/oauth_service.go deleted file mode 100644 index cf8968e..0000000 --- a/service/tencent/oauth_service.go +++ /dev/null @@ -1,78 +0,0 @@ -package tencent - -import ( - "context" - dto "dataengine/model/dto/tencent" - "encoding/json" - "fmt" - "io" - "net/http" - - "github.com/gogf/gf/v2/frame/g" -) - -type oauthService struct{} - -var OauthService = new(oauthService) - -// RefreshToken 刷新腾讯广告Token -func (s *oauthService) RefreshToken(ctx context.Context, req *dto.RefreshTokenReq) (res *dto.RefreshTokenRes, err error) { - // 如果请求中没有提供参数,则从配置文件读取 - clientID := req.ClientID - clientSecret := req.ClientSecret - refreshToken := req.RefreshToken - - if clientID == "" || clientSecret == "" || refreshToken == "" { - clientID = g.Cfg().MustGet(ctx, "tencent.oauth.client_id").String() - clientSecret = g.Cfg().MustGet(ctx, "tencent.oauth.client_secret").String() - refreshToken = g.Cfg().MustGet(ctx, "tencent.oauth.refresh_token").String() - } - - url := fmt.Sprintf("https://api.e.qq.com/oauth/refresh_token?client_id=%s&client_secret=%s&refresh_token=%s", - clientID, clientSecret, refreshToken) - - httpReq, err := http.NewRequestWithContext(ctx, "GET", url, nil) - if err != nil { - return nil, fmt.Errorf("创建请求失败: %w", err) - } - - client := &http.Client{} - resp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("请求失败: %w", err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败: %w", err) - } - - var result struct { - Code int `json:"code"` - Message string `json:"message"` - Data struct { - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` - AccessTokenExpiresIn int64 `json:"access_token_expires_in"` - RefreshTokenExpiresIn int64 `json:"refresh_token_expires_in"` - } `json:"data"` - } - - if err := json.Unmarshal(body, &result); err != nil { - return nil, fmt.Errorf("解析响应失败: %w", err) - } - - if result.Code != 0 { - return nil, fmt.Errorf("API错误: code=%d, message=%s", result.Code, result.Message) - } - - res = &dto.RefreshTokenRes{ - AccessToken: result.Data.AccessToken, - RefreshToken: result.Data.RefreshToken, - AccessTokenExpiresIn: result.Data.AccessTokenExpiresIn, - RefreshTokenExpiresIn: result.Data.RefreshTokenExpiresIn, - } - - return res, nil -} diff --git a/service/tencent/video_service.go b/service/tencent/video_service.go deleted file mode 100644 index ace0ab3..0000000 --- a/service/tencent/video_service.go +++ /dev/null @@ -1,419 +0,0 @@ -package tencent - -import ( - "context" - dao "dataengine/dao/tencent" - dto "dataengine/model/dto/tencent" - entity "dataengine/model/entity/tencent" - "encoding/json" - "fmt" - "io" - "math/rand" - "net/http" - "net/url" - "time" - - "gitea.com/red-future/common/db/gfdb" - "github.com/gogf/gf/v2/frame/g" - "github.com/sirupsen/logrus" -) - -type videoService struct{} - -var VideoService = new(videoService) - -// API响应结构 -type videoResponse struct { - Code int `json:"code"` - Message string `json:"message"` - Data struct { - List []struct { - VideoId int64 `json:"video_id"` - Width int `json:"width"` - Height int `json:"height"` - VideoFrames int `json:"video_frames"` - VideoFps int `json:"video_fps"` - VideoCodec string `json:"video_codec"` - VideoBitRate int64 `json:"video_bit_rate"` - AudioCodec string `json:"audio_codec"` - AudioBitRate int64 `json:"audio_bit_rate"` - FileSize int64 `json:"file_size"` - Type string `json:"type"` - Signature string `json:"signature"` - SystemStatus string `json:"system_status"` - Description string `json:"description"` - PreviewUrl string `json:"preview_url"` - KeyFrameImageUrl string `json:"key_frame_image_url"` - CreatedTime int64 `json:"created_time"` - LastModifiedTime int64 `json:"last_modified_time"` - VideoProfileName string `json:"video_profile_name"` - AudioSampleRate int `json:"audio_sample_rate"` - MaxKeyframeInterval int `json:"max_keyframe_interval"` - MinKeyframeInterval int `json:"min_keyframe_interval"` - SampleAspectRatio string `json:"sample_aspect_ratio"` - AudioProfileName string `json:"audio_profile_name"` - ScanType string `json:"scan_type"` - ImageDurationMs int64 `json:"image_duration_millisecond"` - AudioDurationMs int64 `json:"audio_duration_millisecond"` - SourceType string `json:"source_type"` - ProductCatalogId string `json:"product_catalog_id"` - ProductOuterId string `json:"product_outer_id"` - SourceReferenceId string `json:"source_reference_id"` - OwnerAccountId string `json:"owner_account_id"` - Status string `json:"status"` - SourceMaterialId string `json:"source_material_id"` - NewSourceType string `json:"new_source_type"` - AigcType int `json:"aigc_type"` - FirstPublicationStatus string `json:"first_publication_status"` - QualityStatus string `json:"quality_status"` - CoverId string `json:"cover_id"` - SimilarityStatus string `json:"similarity_status"` - UserAigcStatus string `json:"user_aigc_status"` - SystemAigcStatus string `json:"system_aigc_status"` - AigcSource string `json:"aigc_source"` - AigcFlag string `json:"aigc_flag"` - MuseAigcVersion int `json:"muse_aigc_version"` - } `json:"list"` - PageInfo struct { - Page int `json:"page"` - PageSize int `json:"page_size"` - TotalNumber int `json:"total_number"` - TotalPage int `json:"total_page"` - } `json:"page_info"` - } `json:"data"` - TraceId string `json:"trace_id"` -} - -// SyncAll 同步所有视频素材数据(遍历所有账户,自动分页) -func (s *videoService) SyncAll(ctx context.Context, req *dto.SyncVideoReq) (res *dto.SyncVideoRes, err error) { - // 创建独立的context,避免HTTP请求超时导致context被取消 - // 设置30分钟超时,足够完成所有账户的同步任务 - independentCtx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) - defer cancel() - - // 保留原context中的user信息,供数据库中间件使用 - if user := ctx.Value("user"); user != nil { - independentCtx = context.WithValue(independentCtx, "user", user) - } - - // 获取access_token - accessToken := req.AccessToken - if accessToken == "" { - accessToken = g.Cfg().MustGet(independentCtx, "tencent.oauth.access_token").String() - } - - if accessToken == "" { - return nil, fmt.Errorf("access_token不能为空") - } - - res = &dto.SyncVideoRes{} - totalSynced := 0 - totalVideos := 0 - - // 获取所有账户列表 - accounts, err := s.getAccountList(independentCtx) - if err != nil { - return nil, fmt.Errorf("获取账户列表失败: %w", err) - } - - res.TotalAccounts = len(accounts) - logrus.Infof("开始同步腾讯广告视频素材 - 账户数: %d", len(accounts)) - - // 遍历每个账户 - for _, account := range accounts { - logrus.Infof("========== 开始处理账户: %d (%s) ==========", account.AccountID, account.CorporationName) - - // 获取该账户的所有视频(分页) - accountVideos, err := s.syncAccountVideos(independentCtx, accessToken, account.AccountID) - if err != nil { - logrus.Errorf("账户 %d 同步失败: %v,继续下一个账户", account.AccountID, err) - continue - } - - totalVideos += accountVideos - totalSynced += accountVideos - - // 避免请求过快,休眠200ms - time.Sleep(200 * time.Millisecond) - } - - res.TotalVideos = totalVideos - res.SyncedCount = totalSynced - res.Message = fmt.Sprintf("同步完成,共处理 %d 个账户,%d 条视频记录", res.TotalAccounts, totalSynced) - - logrus.Infof("同步完成 - 账户数: %d, 总视频数: %d, 成功同步: %d", res.TotalAccounts, totalVideos, totalSynced) - - return res, nil -} - -// getAccountList 获取所有账户列表 -func (s *videoService) getAccountList(ctx context.Context) ([]entity.AccountRelation, error) { - var accounts []entity.AccountRelation - err := gfdb.DB(ctx).Model(ctx, "tencent_account_relation"). - WhereNull("deleted_at"). - Scan(&accounts) - - return accounts, err -} - -// syncAccountVideos 同步单个账户的视频数据 -func (s *videoService) syncAccountVideos(ctx context.Context, accessToken string, accountId int64) (int, error) { - totalSynced := 0 - - // 先获取第一页,得到总页数 - firstPageData, err := s.fetchPage(ctx, accessToken, accountId, 1, 100) - if err != nil { - // 如果是请求失败或API错误,返回友好的提示 - errMsg := err.Error() - if contains(errMsg, "请求失败") || contains(errMsg, "API错误") { - return 0, fmt.Errorf("该账户没有视频或无法访问") - } - return 0, fmt.Errorf("获取第一页数据失败: %w", err) - } - - totalPage := firstPageData.Data.PageInfo.TotalPage - logrus.Infof("账户 %d - 总页数: %d, 总记录数: %d", accountId, totalPage, firstPageData.Data.PageInfo.TotalNumber) - - // 如果没有数据,直接返回 - if totalPage == 0 || firstPageData.Data.PageInfo.TotalNumber == 0 { - logrus.Infof("账户 %d - 没有视频数据", accountId) - return 0, nil - } - - // 处理第一页数据 - synced, err := s.savePageData(ctx, firstPageData, accountId) - if err != nil { - logrus.Errorf("保存第一页数据失败: %v", err) - } - totalSynced += synced - - // 循环获取剩余页 - for page := 2; page <= totalPage; page++ { - logrus.Infof("账户 %d - 正在获取第 %d/%d 页...", accountId, page, totalPage) - - pageData, err := s.fetchPage(ctx, accessToken, accountId, page, 100) - if err != nil { - logrus.Errorf("账户 %d - 获取第 %d 页失败: %v,继续下一页", accountId, page, err) - continue - } - - synced, err := s.savePageData(ctx, pageData, accountId) - if err != nil { - logrus.Errorf("账户 %d - 保存第 %d 页数据失败: %v", accountId, page, err) - continue - } - totalSynced += synced - - // 避免请求过快,休眠100ms - time.Sleep(100 * time.Millisecond) - } - - logrus.Infof("账户 %d - 同步完成,共 %d 条记录", accountId, totalSynced) - return totalSynced, nil -} - -// fetchPage 获取单页数据 -func (s *videoService) fetchPage(ctx context.Context, accessToken string, accountId int64, page, pageSize int) (*videoResponse, error) { - // 构建filtering参数:状态为正常 - filtering := `[{"field":"status","operator":"EQUALS","values":["ADSTATUS_NORMAL"]}]` - - // URL编码filtering参数 - encodedFiltering := url.QueryEscape(filtering) - - // 在发送请求前生成最新的时间戳和nonce,避免时间戳过期 - timestamp := time.Now().Unix() - // 使用时间戳+纳秒后6位+随机数,确保唯一性且不超过32字符 - nanoSuffix := time.Now().UnixNano() % 1000000 // 取纳秒的后6位 - nonce := fmt.Sprintf("%d%06d%d", timestamp, nanoSuffix, rand.Intn(1000)) - - urlStr := fmt.Sprintf("https://api.e.qq.com/v3.0/videos/get?access_token=%s&nonce=%s×tamp=%d&account_id=%d&filtering=%s&page=%d&page_size=%d", - accessToken, nonce, timestamp, accountId, encodedFiltering, page, pageSize) - - logrus.Debugf("请求URL: %s", urlStr) - - httpReq, err := http.NewRequestWithContext(ctx, "GET", urlStr, nil) - if err != nil { - return nil, fmt.Errorf("创建请求失败: %w", err) - } - - client := &http.Client{Timeout: 30 * time.Second} - resp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("请求失败: %w", err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败: %w", err) - } - - logrus.Debugf("API响应: %s", string(body)) - - var result videoResponse - if err := json.Unmarshal(body, &result); err != nil { - return nil, fmt.Errorf("解析响应失败: %w", err) - } - - if result.Code != 0 { - return nil, fmt.Errorf("API错误: code=%d, message=%s", result.Code, result.Message) - } - - return &result, nil -} - -// savePageData 保存单页数据到数据库 -func (s *videoService) savePageData(ctx context.Context, data *videoResponse, accountId int64) (int, error) { - if len(data.Data.List) == 0 { - return 0, nil - } - - logrus.Infof("准备保存 %d 条视频素材数据", len(data.Data.List)) - - var items []*entity.Video - for _, item := range data.Data.List { - video := &entity.Video{ - VideoId: fmt.Sprintf("%d", item.VideoId), - AccountId: accountId, - Width: item.Width, - Height: item.Height, - VideoFrames: item.VideoFrames, - VideoFps: item.VideoFps, - VideoCodec: item.VideoCodec, - VideoBitRate: item.VideoBitRate, - AudioCodec: item.AudioCodec, - AudioBitRate: item.AudioBitRate, - FileSize: item.FileSize, - Type: item.Type, - Signature: item.Signature, - SystemStatus: item.SystemStatus, - Description: item.Description, - PreviewUrl: item.PreviewUrl, - KeyFrameImageUrl: item.KeyFrameImageUrl, - CreatedTime: item.CreatedTime, - LastModifiedTime: item.LastModifiedTime, - VideoProfileName: item.VideoProfileName, - AudioSampleRate: item.AudioSampleRate, - MaxKeyframeInterval: item.MaxKeyframeInterval, - MinKeyframeInterval: item.MinKeyframeInterval, - SampleAspectRatio: item.SampleAspectRatio, - AudioProfileName: item.AudioProfileName, - ScanType: item.ScanType, - ImageDurationMillisecond: item.ImageDurationMs, - AudioDurationMillisecond: item.AudioDurationMs, - SourceType: item.SourceType, - ProductCatalogId: item.ProductCatalogId, - ProductOuterId: item.ProductOuterId, - SourceReferenceId: item.SourceReferenceId, - OwnerAccountId: item.OwnerAccountId, - Status: item.Status, - SourceMaterialId: item.SourceMaterialId, - NewSourceType: item.NewSourceType, - AigcType: item.AigcType, - FirstPublicationStatus: item.FirstPublicationStatus, - QualityStatus: item.QualityStatus, - CoverId: item.CoverId, - SimilarityStatus: item.SimilarityStatus, - UserAigcStatus: item.UserAigcStatus, - SystemAigcStatus: item.SystemAigcStatus, - AigcSource: item.AigcSource, - AigcFlag: item.AigcFlag, - MuseAigcVersion: item.MuseAigcVersion, - } - // 设置 TenantID(框架将0视为空值,所以使用1) - video.TenantId = 1 - // 设置默认校验状态为待校验 - video.VerifyStatus = "PENDING" - - items = append(items, video) - } - - logrus.Infof("调用 BatchUpsert...") - successCount, err := dao.Video.BatchUpsert(ctx, items) - logrus.Infof("BatchUpsert 返回: successCount=%d, err=%v", successCount, err) - - return successCount, err -} - -// ListAll 获取所有视频素材 -func (s *videoService) ListAll(ctx context.Context) ([]entity.Video, error) { - return dao.Video.ListAll(ctx) -} - -// ListWithPage 分页查询视频素材(支持时间过滤) -func (s *videoService) ListWithPage(ctx context.Context, req *dto.ListVideoQueryReq) (*dto.ListVideoRes, error) { - // 设置默认值 - page := req.Page - if page <= 0 { - page = 1 - } - pageSize := req.PageSize - if pageSize <= 0 { - pageSize = 20 - } - if pageSize > 100 { - pageSize = 100 // 限制最大每页数量 - } - - // 调用DAO层查询 - list, total, err := dao.Video.ListWithPage(ctx, page, pageSize, req.AccountId, req.StartTime, req.EndTime, req.Status) - if err != nil { - return nil, fmt.Errorf("查询视频素材失败: %w", err) - } - - // 计算总页数 - totalPages := (total + pageSize - 1) / pageSize - if totalPages == 0 && total > 0 { - totalPages = 1 - } - - // 转换为DTO - items := make([]dto.VideoItem, 0, len(list)) - for _, item := range list { - items = append(items, dto.VideoItem{ - Id: item.Id, - VideoId: item.VideoId, - AccountId: item.AccountId, - Width: item.Width, - Height: item.Height, - VideoFrames: item.VideoFrames, - VideoFps: item.VideoFps, - FileSize: item.FileSize, - Type: item.Type, - Description: item.Description, - PreviewUrl: item.PreviewUrl, - KeyFrameImageUrl: item.KeyFrameImageUrl, - Status: item.Status, - CreatedTime: item.CreatedTime, - LastModifiedTime: item.LastModifiedTime, - CreatedAt: item.CreatedAt.Format("2006-01-02 15:04:05"), - UpdatedAt: item.UpdatedAt.Format("2006-01-02 15:04:05"), - }) - } - - res := &dto.ListVideoRes{ - List: items, - Total: total, - Page: page, - PageSize: pageSize, - TotalPages: totalPages, - } - - logrus.Infof("查询视频素材 - 页码: %d, 每页: %d, 总数: %d, 总页数: %d", page, pageSize, total, totalPages) - - return res, nil -} - -// contains 检查字符串是否包含子串 -func contains(s, substr string) bool { - return len(s) >= len(substr) && (s == substr || len(s) > len(substr) && (s[:len(substr)] == substr || s[len(s)-len(substr):] == substr || findSubstring(s, substr))) -} - -func findSubstring(s, substr string) bool { - for i := 0; i <= len(s)-len(substr); i++ { - if s[i:i+len(substr)] == substr { - return true - } - } - return false -} diff --git a/sql/00_main_schema.sql b/sql/00_main_schema.sql deleted file mode 100644 index b92fc07..0000000 --- a/sql/00_main_schema.sql +++ /dev/null @@ -1,38 +0,0 @@ --- PostgreSQL Database Schema for Data Engine --- Generated from Go entity classes --- This file serves as the main schema file that imports all other schema files --- Execute in the following order: --- 1. 00_main_schema.sql (this file) --- 2. 01_dict_tables.sql --- 3. 02_account_report_tables.sql --- 4. 03_campaign_report_tables.sql --- 5. 04_creative_report_tables.sql --- 6. 05_unit_report_tables.sql --- 7. 06_storewide_report_tables.sql --- 8. 07_material_population_tables.sql --- 9. 08_sync_task_tables.sql - --- ============================================= --- Database Settings --- ============================================= --- Set timezone (optional, adjust as needed) -SET timezone = 'Asia/Shanghai'; - --- ============================================= --- Import all schema files --- ============================================= - -\i 01_dict_tables.sql -\i 02_account_report_tables.sql -\i 03_campaign_report_tables.sql -\i 04_creative_report_tables.sql -\i 05_unit_report_tables.sql -\i 06_storewide_report_tables.sql -\i 07_material_population_tables.sql -\i 08_sync_task_tables.sql - --- ============================================= --- Grant permissions (optional, adjust as needed) --- ============================================= --- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO your_user; --- GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO your_user; diff --git a/sql/01_dict_tables.sql b/sql/01_dict_tables.sql deleted file mode 100644 index fdd2199..0000000 --- a/sql/01_dict_tables.sql +++ /dev/null @@ -1,183 +0,0 @@ --- PostgreSQL 建表脚本 - dict 包 - --- ============================================= --- 数据源平台配置表 (api_datasource_platform) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS api_datasource_platform_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS api_datasource_platform ( - id BIGINT NOT NULL DEFAULT nextval('api_datasource_platform_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - platform_code VARCHAR(100) NOT NULL, - platform_name VARCHAR(200) NOT NULL, - description TEXT, - status VARCHAR(50) DEFAULT 'ACTIVE', - api_base_url VARCHAR(500), - auth_type VARCHAR(50) DEFAULT 'API_KEY', - token VARCHAR(500), - api_key VARCHAR(500), - client_id VARCHAR(200), - client_secret VARCHAR(500), - rate_limit_per_minute INT DEFAULT 60, - rate_limit_per_hour INT DEFAULT 3600, - concurrency_limit INT DEFAULT 10, - request_timeout_ms INT DEFAULT 30000, - max_retries INT DEFAULT 3, - retry_delay_ms INT DEFAULT 1000, - version INT DEFAULT 0, - PRIMARY KEY (id) -); - -COMMENT ON TABLE api_datasource_platform IS '数据源平台配置表'; -COMMENT ON COLUMN api_datasource_platform.id IS '主键ID'; -COMMENT ON COLUMN api_datasource_platform.tenant_id IS '租户ID'; -COMMENT ON COLUMN api_datasource_platform.creator IS '创建人'; -COMMENT ON COLUMN api_datasource_platform.created_at IS '创建时间'; -COMMENT ON COLUMN api_datasource_platform.updater IS '更新人'; -COMMENT ON COLUMN api_datasource_platform.updated_at IS '更新时间'; -COMMENT ON COLUMN api_datasource_platform.deleted_at IS '软删除时间'; -COMMENT ON COLUMN api_datasource_platform.platform_code IS '平台编码,唯一标识'; -COMMENT ON COLUMN api_datasource_platform.platform_name IS '平台名称'; -COMMENT ON COLUMN api_datasource_platform.description IS '平台描述'; -COMMENT ON COLUMN api_datasource_platform.status IS '状态: ACTIVE启用, INACTIVE停用'; -COMMENT ON COLUMN api_datasource_platform.api_base_url IS 'API基础地址'; -COMMENT ON COLUMN api_datasource_platform.auth_type IS '认证类型: TOKEN/API_KEY/OAUTH2/BASIC'; -COMMENT ON COLUMN api_datasource_platform.token IS '认证token/密钥'; -COMMENT ON COLUMN api_datasource_platform.api_key IS 'API Key'; -COMMENT ON COLUMN api_datasource_platform.client_id IS 'OAuth2 Client ID'; -COMMENT ON COLUMN api_datasource_platform.client_secret IS 'OAuth2 Client Secret'; -COMMENT ON COLUMN api_datasource_platform.rate_limit_per_minute IS '每分钟请求限制'; -COMMENT ON COLUMN api_datasource_platform.rate_limit_per_hour IS '每小时请求限制'; -COMMENT ON COLUMN api_datasource_platform.concurrency_limit IS '并发连接限制'; -COMMENT ON COLUMN api_datasource_platform.request_timeout_ms IS '请求超时时间(毫秒)'; -COMMENT ON COLUMN api_datasource_platform.max_retries IS '最大重试次数'; -COMMENT ON COLUMN api_datasource_platform.retry_delay_ms IS '重试延迟(毫秒)'; -COMMENT ON COLUMN api_datasource_platform.version IS '版本号(乐观锁)'; - -CREATE UNIQUE INDEX idx_api_datasource_platform_code ON api_datasource_platform(tenant_id, platform_code); - --- ============================================= --- 字段映射配置表 (api_field_mapping_config) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS api_field_mapping_config_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS api_field_mapping_config ( - id BIGINT NOT NULL DEFAULT nextval('api_field_mapping_config_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - config_name VARCHAR(200) NOT NULL, - vendor_name VARCHAR(100), - api_name VARCHAR(200), - api_version VARCHAR(50), - source_field VARCHAR(200), - source_field_type VARCHAR(100), - source_field_desc VARCHAR(500), - target_field VARCHAR(200), - target_field_type VARCHAR(100), - target_field_desc VARCHAR(500), - transform_type VARCHAR(100), - transform_params JSONB, - validation_rules JSONB, - default_value VARCHAR(500), - is_required BOOLEAN DEFAULT FALSE, - is_active BOOLEAN DEFAULT TRUE, - priority INT DEFAULT 0, - business_domain VARCHAR(100), - field_group VARCHAR(100), - config_version INT DEFAULT 1, - effective_date TIMESTAMP WITH TIME ZONE, - expiry_date TIMESTAMP WITH TIME ZONE, - PRIMARY KEY (id) -); - -COMMENT ON TABLE api_field_mapping_config IS '字段映射配置表'; -COMMENT ON COLUMN api_field_mapping_config.id IS '主键ID'; -COMMENT ON COLUMN api_field_mapping_config.tenant_id IS '租户ID'; -COMMENT ON COLUMN api_field_mapping_config.creator IS '创建人'; -COMMENT ON COLUMN api_field_mapping_config.created_at IS '创建时间'; -COMMENT ON COLUMN api_field_mapping_config.updater IS '更新人'; -COMMENT ON COLUMN api_field_mapping_config.updated_at IS '更新时间'; -COMMENT ON COLUMN api_field_mapping_config.deleted_at IS '软删除时间'; -COMMENT ON COLUMN api_field_mapping_config.config_name IS '配置名称'; -COMMENT ON COLUMN api_field_mapping_config.vendor_name IS '厂商名称'; -COMMENT ON COLUMN api_field_mapping_config.api_name IS '接口名称'; -COMMENT ON COLUMN api_field_mapping_config.api_version IS '接口版本'; -COMMENT ON COLUMN api_field_mapping_config.source_field IS '源字段名'; -COMMENT ON COLUMN api_field_mapping_config.source_field_type IS '源字段数据类型'; -COMMENT ON COLUMN api_field_mapping_config.source_field_desc IS '源字段描述'; -COMMENT ON COLUMN api_field_mapping_config.target_field IS '目标字段名'; -COMMENT ON COLUMN api_field_mapping_config.target_field_type IS '目标数据类型'; -COMMENT ON COLUMN api_field_mapping_config.target_field_desc IS '字段描述'; -COMMENT ON COLUMN api_field_mapping_config.transform_type IS '转换类型'; -COMMENT ON COLUMN api_field_mapping_config.transform_params IS '转换参数'; -COMMENT ON COLUMN api_field_mapping_config.validation_rules IS '验证规则'; -COMMENT ON COLUMN api_field_mapping_config.default_value IS '默认值'; -COMMENT ON COLUMN api_field_mapping_config.is_required IS '是否必填'; -COMMENT ON COLUMN api_field_mapping_config.is_active IS '是否启用'; -COMMENT ON COLUMN api_field_mapping_config.priority IS '优先级'; -COMMENT ON COLUMN api_field_mapping_config.business_domain IS '业务域'; -COMMENT ON COLUMN api_field_mapping_config.field_group IS '字段分组'; -COMMENT ON COLUMN api_field_mapping_config.config_version IS '配置版本号'; -COMMENT ON COLUMN api_field_mapping_config.effective_date IS '生效时间'; -COMMENT ON COLUMN api_field_mapping_config.expiry_date IS '失效时间'; - -CREATE INDEX idx_api_field_mapping_config_vendor ON api_field_mapping_config(tenant_id, vendor_name, api_name); -CREATE INDEX idx_api_field_mapping_config_active ON api_field_mapping_config(tenant_id, is_active); - --- ============================================= --- API接口管理表 (api_interface) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS api_interface_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS api_interface ( - id BIGINT NOT NULL DEFAULT nextval('api_interface_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - platform_id BIGINT NOT NULL, - name VARCHAR(200) NOT NULL, - code VARCHAR(100) NOT NULL, - url VARCHAR(500) NOT NULL, - method VARCHAR(20) NOT NULL DEFAULT 'GET', - status VARCHAR(50) DEFAULT 'active', - auth_type VARCHAR(50) DEFAULT 'api_key', - request_config JSONB, - response_config JSONB, - limit_config JSONB, - PRIMARY KEY (id) -); - -COMMENT ON TABLE api_interface IS 'API接口管理表'; -COMMENT ON COLUMN api_interface.id IS '主键ID'; -COMMENT ON COLUMN api_interface.tenant_id IS '租户ID'; -COMMENT ON COLUMN api_interface.creator IS '创建人'; -COMMENT ON COLUMN api_interface.created_at IS '创建时间'; -COMMENT ON COLUMN api_interface.updater IS '更新人'; -COMMENT ON COLUMN api_interface.updated_at IS '更新时间'; -COMMENT ON COLUMN api_interface.deleted_at IS '软删除时间'; -COMMENT ON COLUMN api_interface.platform_id IS '所属平台ID'; -COMMENT ON COLUMN api_interface.name IS '接口名称'; -COMMENT ON COLUMN api_interface.code IS '接口编码'; -COMMENT ON COLUMN api_interface.url IS '接口地址'; -COMMENT ON COLUMN api_interface.method IS '请求方法:GET/POST/PUT/DELETE等'; -COMMENT ON COLUMN api_interface.status IS '接口状态:active启用/inactive停用'; -COMMENT ON COLUMN api_interface.auth_type IS '认证类型:oauth2/apikey/basic等'; -COMMENT ON COLUMN api_interface.request_config IS '请求配置'; -COMMENT ON COLUMN api_interface.response_config IS '响应配置'; -COMMENT ON COLUMN api_interface.limit_config IS '接口独立限流配置(可选,覆盖平台配置)'; - -CREATE UNIQUE INDEX idx_api_interface_code ON api_interface(tenant_id, code); -CREATE INDEX idx_api_interface_platform_id ON api_interface(tenant_id, platform_id); -CREATE INDEX idx_api_interface_status ON api_interface(tenant_id, status); diff --git a/sql/02_account_report_tables.sql b/sql/02_account_report_tables.sql deleted file mode 100644 index acd30c6..0000000 --- a/sql/02_account_report_tables.sql +++ /dev/null @@ -1,115 +0,0 @@ --- PostgreSQL 建表脚本 - 账户报告表 - --- ============================================= --- 账户报告明细表 (cid_account_report_detail) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS cid_account_report_detail_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS cid_account_report_detail ( - id BIGINT NOT NULL DEFAULT nextval('cid_account_report_detail_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - report_date_str VARCHAR(50), - account_id VARCHAR(100), - account_name VARCHAR(200), - cost_total DECIMAL(20,4), - impression BIGINT, - click BIGINT, - ctr DECIMAL(10,6), - cpc DECIMAL(20,4), - cpm DECIMAL(20,4), - conversion BIGINT, - conversion_rate DECIMAL(10,6), - cpa DECIMAL(20,4), - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE cid_account_report_detail IS '账户报告明细表'; -COMMENT ON COLUMN cid_account_report_detail.id IS '主键ID'; -COMMENT ON COLUMN cid_account_report_detail.tenant_id IS '租户ID'; -COMMENT ON COLUMN cid_account_report_detail.creator IS '创建人'; -COMMENT ON COLUMN cid_account_report_detail.created_at IS '创建时间'; -COMMENT ON COLUMN cid_account_report_detail.updater IS '更新人'; -COMMENT ON COLUMN cid_account_report_detail.updated_at IS '更新时间'; -COMMENT ON COLUMN cid_account_report_detail.deleted_at IS '软删除时间'; -COMMENT ON COLUMN cid_account_report_detail.cid IS '广告账户ID'; -COMMENT ON COLUMN cid_account_report_detail.report_date_str IS '报告日期'; -COMMENT ON COLUMN cid_account_report_detail.account_id IS '账户ID'; -COMMENT ON COLUMN cid_account_report_detail.account_name IS '账户名称'; -COMMENT ON COLUMN cid_account_report_detail.cost_total IS '总花费'; -COMMENT ON COLUMN cid_account_report_detail.impression IS '曝光数'; -COMMENT ON COLUMN cid_account_report_detail.click IS '点击数'; -COMMENT ON COLUMN cid_account_report_detail.ctr IS '点击率'; -COMMENT ON COLUMN cid_account_report_detail.cpc IS '点击单价'; -COMMENT ON COLUMN cid_account_report_detail.cpm IS '千次曝光成本'; -COMMENT ON COLUMN cid_account_report_detail.conversion IS '转化数'; -COMMENT ON COLUMN cid_account_report_detail.conversion_rate IS '转化率'; -COMMENT ON COLUMN cid_account_report_detail.cpa IS '转化成本'; -COMMENT ON COLUMN cid_account_report_detail.datasource IS '数据源'; - -CREATE INDEX idx_cid_account_report_detail_cid ON cid_account_report_detail(tenant_id, cid); -CREATE INDEX idx_cid_account_report_detail_date ON cid_account_report_detail(tenant_id, report_date_str); -CREATE INDEX idx_cid_account_report_detail_datasource ON cid_account_report_detail(tenant_id, datasource); - --- ============================================= --- 账户报告汇总表 (cid_account_report_sum) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS cid_account_report_sum_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS cid_account_report_sum ( - id BIGINT NOT NULL DEFAULT nextval('cid_account_report_sum_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - report_date_str VARCHAR(50), - account_id VARCHAR(100), - account_name VARCHAR(200), - cost_total DECIMAL(20,4), - impression BIGINT, - click BIGINT, - ctr DECIMAL(10,6), - cpc DECIMAL(20,4), - cpm DECIMAL(20,4), - conversion BIGINT, - conversion_rate DECIMAL(10,6), - cpa DECIMAL(20,4), - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE cid_account_report_sum IS '账户报告汇总表'; -COMMENT ON COLUMN cid_account_report_sum.id IS '主键ID'; -COMMENT ON COLUMN cid_account_report_sum.tenant_id IS '租户ID'; -COMMENT ON COLUMN cid_account_report_sum.creator IS '创建人'; -COMMENT ON COLUMN cid_account_report_sum.created_at IS '创建时间'; -COMMENT ON COLUMN cid_account_report_sum.updater IS '更新人'; -COMMENT ON COLUMN cid_account_report_sum.updated_at IS '更新时间'; -COMMENT ON COLUMN cid_account_report_sum.deleted_at IS '软删除时间'; -COMMENT ON COLUMN cid_account_report_sum.cid IS '广告账户ID'; -COMMENT ON COLUMN cid_account_report_sum.report_date_str IS '报告日期'; -COMMENT ON COLUMN cid_account_report_sum.account_id IS '账户ID'; -COMMENT ON COLUMN cid_account_report_sum.account_name IS '账户名称'; -COMMENT ON COLUMN cid_account_report_sum.cost_total IS '总花费'; -COMMENT ON COLUMN cid_account_report_sum.impression IS '曝光数'; -COMMENT ON COLUMN cid_account_report_sum.click IS '点击数'; -COMMENT ON COLUMN cid_account_report_sum.ctr IS '点击率'; -COMMENT ON COLUMN cid_account_report_sum.cpc IS '点击单价'; -COMMENT ON COLUMN cid_account_report_sum.cpm IS '千次曝光成本'; -COMMENT ON COLUMN cid_account_report_sum.conversion IS '转化数'; -COMMENT ON COLUMN cid_account_report_sum.conversion_rate IS '转化率'; -COMMENT ON COLUMN cid_account_report_sum.cpa IS '转化成本'; -COMMENT ON COLUMN cid_account_report_sum.datasource IS '数据源'; - -CREATE INDEX idx_cid_account_report_sum_cid ON cid_account_report_sum(tenant_id, cid); -CREATE INDEX idx_cid_account_report_sum_date ON cid_account_report_sum(tenant_id, report_date_str); -CREATE INDEX idx_cid_account_report_sum_datasource ON cid_account_report_sum(tenant_id, datasource); diff --git a/sql/03_campaign_report_tables.sql b/sql/03_campaign_report_tables.sql deleted file mode 100644 index c4e6ddc..0000000 --- a/sql/03_campaign_report_tables.sql +++ /dev/null @@ -1,419 +0,0 @@ --- PostgreSQL 建表脚本 - 广告系列报告表 - --- ============================================= --- 广告系列报告明细表 (campaign_report_detail) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS campaign_report_detail_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS campaign_report_detail ( - id BIGINT NOT NULL DEFAULT nextval('campaign_report_detail_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - t0_order_payment_amt DECIMAL(20,4), - creative_material_type VARCHAR(100), - live_name VARCHAR(200), - author_id VARCHAR(100), - pic_url VARCHAR(500), - pic_name VARCHAR(200), - pic_id VARCHAR(100), - cover_url VARCHAR(500), - cover_id BIGINT, - item_order_conversion_ratio DECIMAL(10,6), - item_card_click_ratio DECIMAL(10,6), - item_card_clk_cnt BIGINT, - live_play_cnt_cost DECIMAL(20,4), - ad_merchant_follow_cost DECIMAL(20,4), - ad_merchant_follow BIGINT, - net_t0_order_cnt BIGINT, - net_t0_roi DECIMAL(10,6), - net_t0_gmv DECIMAL(20,4), - photo_name VARCHAR(200), - photo_id_str VARCHAR(100), - photo_id VARCHAR(100), - mod_price_segment VARCHAR(100), - age_segment VARCHAR(100), - province VARCHAR(100), - gender VARCHAR(20), - ad_photo_played_five_ratio DECIMAL(10,6), - ad_photo_played_three_ratio DECIMAL(10,6), - order_submit_roi DECIMAL(10,6), - order_submit_amt BIGINT, - event_order_submit_cost DECIMAL(20,4), - event_order_submit BIGINT, - event_order_paid_roi DECIMAL(10,6), - event_app_invoked BIGINT, - event_add_shopping_cart BIGINT, - conversion_num_cost DECIMAL(20,4), - ad_effective_play_num BIGINT, - ad_item_click BIGINT, - merchant_product_id VARCHAR(100), - cost_total DECIMAL(20,4), - ad_show BIGINT, - ad_show1k_cost DECIMAL(20,4), - impression BIGINT, - photo_click BIGINT, - photo_click_ratio DECIMAL(10,6), - click BIGINT, - actionbar_click BIGINT, - actionbar_click_cost DECIMAL(20,4), - esp_click_ratio DECIMAL(10,6), - action_ratio DECIMAL(10,6), - ad_item_click_count BIGINT, - esp_live_played_seconds BIGINT, - played_three_seconds BIGINT, - play3s_ratio DECIMAL(10,6), - played_five_seconds BIGINT, - play5s_ratio DECIMAL(10,6), - played_end BIGINT, - play_end_ratio DECIMAL(10,6), - share BIGINT, - comment BIGINT, - likes BIGINT, - report BIGINT, - block BIGINT, - item_negative BIGINT, - live_share BIGINT, - live_comment BIGINT, - live_reward BIGINT, - effective_play_count BIGINT, - effective_play_ratio DECIMAL(10,6), - conversion_num BIGINT, - conversion_cost_esp DECIMAL(20,4), - roi DECIMAL(10,6), - gmv DECIMAL(20,4), - t0_gmv DECIMAL(20,4), - t1_gmv DECIMAL(20,4), - t7_gmv DECIMAL(20,4), - t15_gmv DECIMAL(20,4), - t30_gmv DECIMAL(20,4), - t0_roi DECIMAL(10,6), - t1_roi DECIMAL(10,6), - t7_roi DECIMAL(10,6), - t15_roi DECIMAL(10,6), - t30_roi DECIMAL(10,6), - paied_order BIGINT, - order_ratio DECIMAL(10,6), - t0_order_cnt BIGINT, - t0_order_cnt_cost DECIMAL(20,4), - t0_order_cnt_ratio DECIMAL(10,6), - t1_order_cnt BIGINT, - t7_order_cnt BIGINT, - t15_order_cnt BIGINT, - t30_order_cnt BIGINT, - merchant_reco_fans BIGINT, - t1_retention DECIMAL(10,4), - t7_retention DECIMAL(10,4), - t15_retention DECIMAL(10,4), - t30_retention DECIMAL(10,4), - t1_retention_ratio DECIMAL(10,6), - t7_retention_ratio DECIMAL(10,6), - t15_retention_ratio DECIMAL(10,6), - t30_retention_ratio DECIMAL(10,6), - reservation_success BIGINT, - reservation_cost DECIMAL(20,4), - standard_live_played_started BIGINT, - ad_live_play_cnt BIGINT, - ad_live_play_cnt_cost DECIMAL(20,4), - live_audience_cost DECIMAL(20,4), - live_event_goods_view BIGINT, - goods_click_ratio DECIMAL(10,6), - direct_attr_plat_new_buyer_cnt BIGINT, - t30_attr_plat_total_buyer_cnt BIGINT, - direct_attr_seller_new_buyer_cnt BIGINT, - t30_attr_seller_total_buyer_cnt BIGINT, - t3_gmv DECIMAL(20,4), - t3_order_cnt BIGINT, - t3_roi DECIMAL(10,6), - t7_indirect_order_amt DECIMAL(20,4), - t7_indirect_order_cnt BIGINT, - fans_t0_gmv_per_fans DECIMAL(20,4), - fans_t3_gmv_per_fans DECIMAL(20,4), - fans_t7_gmv_per_fans DECIMAL(20,4), - fans_t15_gmv_per_fans DECIMAL(20,4), - fans_t30_gmv_per_fans DECIMAL(20,4), - reco_fans_cost DECIMAL(20,4), - qcpx_whitebox_direct_order_payment_amt DECIMAL(20,4), - qcpx_whitebox_direct_order_cnt BIGINT, - fans_t0_gmv DECIMAL(20,4), - fans_t1_gmv DECIMAL(20,4), - fans_t7_gmv DECIMAL(20,4), - fans_t15_gmv DECIMAL(20,4), - fans_t30_gmv DECIMAL(20,4), - fans_t0_roi DECIMAL(10,6), - fans_t1_roi DECIMAL(10,6), - fans_t7_roi DECIMAL(10,6), - fans_t15_roi DECIMAL(10,6), - fans_t30_roi DECIMAL(10,6), - t0_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t1_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t3_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t7_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t15_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t30_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t0_shop_new_buyer_order_cnt BIGINT, - t1_shop_new_buyer_order_cnt BIGINT, - t3_shop_new_buyer_order_cnt BIGINT, - t7_shop_new_buyer_order_cnt BIGINT, - t15_shop_new_buyer_order_cnt BIGINT, - t30_shop_new_buyer_order_cnt BIGINT, - t1_new_buyer_repurchase_ratio DECIMAL(10,6), - t3_new_buyer_repurchase_ratio DECIMAL(10,6), - t7_new_buyer_repurchase_ratio DECIMAL(10,6), - t15_new_buyer_repurchase_ratio DECIMAL(10,6), - t30_new_buyer_repurchase_ratio DECIMAL(10,6), - t0_shop_new_buyer_roi DECIMAL(10,6), - t1_shop_new_buyer_roi DECIMAL(10,6), - t3_shop_new_buyer_roi DECIMAL(10,6), - t7_shop_new_buyer_roi DECIMAL(10,6), - t15_shop_new_buyer_roi DECIMAL(10,6), - t30_shop_new_buyer_roi DECIMAL(10,6), - create_card_order_cnt BIGINT, - forward_ts_create_card_order_cnt BIGINT, - create_card_order_cost DECIMAL(20,4), - forward_ts_create_card_order_cost DECIMAL(20,4), - activate_card_order_cnt BIGINT, - forward_ts_activate_card_order_cnt BIGINT, - activate_card_order_cost DECIMAL(20,4), - forward_ts_activate_card_order_cost DECIMAL(20,4), - create_card_order_ratio DECIMAL(10,6), - forward_ts_create_card_order_ratio DECIMAL(10,6), - activate_card_order_cnt_ratio DECIMAL(10,6), - forward_ts_activate_card_order_ratio DECIMAL(10,6), - live_play_cnt BIGINT, - item_entrance_clk_cnt BIGINT, - show_cnt BIGINT, - report_date_str VARCHAR(50), - campaign_id BIGINT, - campaign_name VARCHAR(200), - unit_id BIGINT, - unit_name VARCHAR(200), - creative_id BIGINT, - creative_name VARCHAR(200), - cid_actual_roi_after_subsidy DECIMAL(10,6), - cid_coupon_amount BIGINT, - cid_coupon_callback_paid_refund_amount BIGINT, - cid_voucher_cost DECIMAL(20,4), - PRIMARY KEY (id) -); - -COMMENT ON TABLE campaign_report_detail IS '广告系列报告明细表'; - -CREATE INDEX idx_campaign_report_detail_cid ON campaign_report_detail(tenant_id, cid); -CREATE INDEX idx_campaign_report_detail_campaign_id ON campaign_report_detail(tenant_id, campaign_id); -CREATE INDEX idx_campaign_report_detail_date ON campaign_report_detail(tenant_id, report_date_str); -CREATE INDEX idx_campaign_report_detail_datasource ON campaign_report_detail(tenant_id, datasource); - --- ============================================= --- 广告系列报告汇总表 (campaign_report_sum) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS campaign_report_sum_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS campaign_report_sum ( - id BIGINT NOT NULL DEFAULT nextval('campaign_report_sum_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - t0_order_payment_amt DECIMAL(20,4), - creative_material_type VARCHAR(100), - live_name VARCHAR(200), - author_id VARCHAR(100), - pic_url VARCHAR(500), - pic_name VARCHAR(200), - pic_id VARCHAR(100), - cover_url VARCHAR(500), - cover_id BIGINT, - item_order_conversion_ratio DECIMAL(10,6), - item_card_click_ratio DECIMAL(10,6), - item_card_clk_cnt BIGINT, - live_play_cnt_cost DECIMAL(20,4), - ad_merchant_follow_cost DECIMAL(20,4), - ad_merchant_follow BIGINT, - net_t0_order_cnt BIGINT, - net_t0_roi DECIMAL(10,6), - net_t0_gmv DECIMAL(20,4), - photo_name VARCHAR(200), - photo_id_str VARCHAR(100), - photo_id VARCHAR(100), - mod_price_segment VARCHAR(100), - age_segment VARCHAR(100), - province VARCHAR(100), - gender VARCHAR(20), - ad_photo_played_five_ratio DECIMAL(10,6), - ad_photo_played_three_ratio DECIMAL(10,6), - order_submit_roi DECIMAL(10,6), - order_submit_amt BIGINT, - event_order_submit_cost DECIMAL(20,4), - event_order_submit BIGINT, - event_order_paid_roi DECIMAL(10,6), - event_app_invoked BIGINT, - event_add_shopping_cart BIGINT, - conversion_num_cost DECIMAL(20,4), - ad_effective_play_num BIGINT, - ad_item_click BIGINT, - merchant_product_id VARCHAR(100), - cost_total DECIMAL(20,4), - ad_show BIGINT, - ad_show1k_cost DECIMAL(20,4), - impression BIGINT, - photo_click BIGINT, - photo_click_ratio DECIMAL(10,6), - click BIGINT, - actionbar_click BIGINT, - actionbar_click_cost DECIMAL(20,4), - esp_click_ratio DECIMAL(10,6), - action_ratio DECIMAL(10,6), - ad_item_click_count BIGINT, - esp_live_played_seconds BIGINT, - played_three_seconds BIGINT, - play3s_ratio DECIMAL(10,6), - played_five_seconds BIGINT, - play5s_ratio DECIMAL(10,6), - played_end BIGINT, - play_end_ratio DECIMAL(10,6), - share BIGINT, - comment BIGINT, - likes BIGINT, - report BIGINT, - block BIGINT, - item_negative BIGINT, - live_share BIGINT, - live_comment BIGINT, - live_reward BIGINT, - effective_play_count BIGINT, - effective_play_ratio DECIMAL(10,6), - conversion_num BIGINT, - conversion_cost_esp DECIMAL(20,4), - roi DECIMAL(10,6), - gmv DECIMAL(20,4), - t0_gmv DECIMAL(20,4), - t1_gmv DECIMAL(20,4), - t7_gmv DECIMAL(20,4), - t15_gmv DECIMAL(20,4), - t30_gmv DECIMAL(20,4), - t0_roi DECIMAL(10,6), - t1_roi DECIMAL(10,6), - t7_roi DECIMAL(10,6), - t15_roi DECIMAL(10,6), - t30_roi DECIMAL(10,6), - paied_order BIGINT, - order_ratio DECIMAL(10,6), - t0_order_cnt BIGINT, - t0_order_cnt_cost DECIMAL(20,4), - t0_order_cnt_ratio DECIMAL(10,6), - t1_order_cnt BIGINT, - t7_order_cnt BIGINT, - t15_order_cnt BIGINT, - t30_order_cnt BIGINT, - merchant_reco_fans BIGINT, - t1_retention DECIMAL(10,4), - t7_retention DECIMAL(10,4), - t15_retention DECIMAL(10,4), - t30_retention DECIMAL(10,4), - t1_retention_ratio DECIMAL(10,6), - t7_retention_ratio DECIMAL(10,6), - t15_retention_ratio DECIMAL(10,6), - t30_retention_ratio DECIMAL(10,6), - reservation_success BIGINT, - reservation_cost DECIMAL(20,4), - standard_live_played_started BIGINT, - ad_live_play_cnt BIGINT, - ad_live_play_cnt_cost DECIMAL(20,4), - live_audience_cost DECIMAL(20,4), - live_event_goods_view BIGINT, - goods_click_ratio DECIMAL(10,6), - direct_attr_plat_new_buyer_cnt BIGINT, - t30_attr_plat_total_buyer_cnt BIGINT, - direct_attr_seller_new_buyer_cnt BIGINT, - t30_attr_seller_total_buyer_cnt BIGINT, - t3_gmv DECIMAL(20,4), - t3_order_cnt BIGINT, - t3_roi DECIMAL(10,6), - t7_indirect_order_amt DECIMAL(20,4), - t7_indirect_order_cnt BIGINT, - fans_t0_gmv_per_fans DECIMAL(20,4), - fans_t3_gmv_per_fans DECIMAL(20,4), - fans_t7_gmv_per_fans DECIMAL(20,4), - fans_t15_gmv_per_fans DECIMAL(20,4), - fans_t30_gmv_per_fans DECIMAL(20,4), - reco_fans_cost DECIMAL(20,4), - qcpx_whitebox_direct_order_payment_amt DECIMAL(20,4), - qcpx_whitebox_direct_order_cnt BIGINT, - fans_t0_gmv DECIMAL(20,4), - fans_t1_gmv DECIMAL(20,4), - fans_t7_gmv DECIMAL(20,4), - fans_t15_gmv DECIMAL(20,4), - fans_t30_gmv DECIMAL(20,4), - fans_t0_roi DECIMAL(10,6), - fans_t1_roi DECIMAL(10,6), - fans_t7_roi DECIMAL(10,6), - fans_t15_roi DECIMAL(10,6), - fans_t30_roi DECIMAL(10,6), - t0_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t1_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t3_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t7_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t15_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t30_shop_new_buyer_order_payment_amt DECIMAL(20,4), - t0_shop_new_buyer_order_cnt BIGINT, - t1_shop_new_buyer_order_cnt BIGINT, - t3_shop_new_buyer_order_cnt BIGINT, - t7_shop_new_buyer_order_cnt BIGINT, - t15_shop_new_buyer_order_cnt BIGINT, - t30_shop_new_buyer_order_cnt BIGINT, - t1_new_buyer_repurchase_ratio DECIMAL(10,6), - t3_new_buyer_repurchase_ratio DECIMAL(10,6), - t7_new_buyer_repurchase_ratio DECIMAL(10,6), - t15_new_buyer_repurchase_ratio DECIMAL(10,6), - t30_new_buyer_repurchase_ratio DECIMAL(10,6), - t0_shop_new_buyer_roi DECIMAL(10,6), - t1_shop_new_buyer_roi DECIMAL(10,6), - t3_shop_new_buyer_roi DECIMAL(10,6), - t7_shop_new_buyer_roi DECIMAL(10,6), - t15_shop_new_buyer_roi DECIMAL(10,6), - t30_shop_new_buyer_roi DECIMAL(10,6), - create_card_order_cnt BIGINT, - forward_ts_create_card_order_cnt BIGINT, - create_card_order_cost DECIMAL(20,4), - forward_ts_create_card_order_cost DECIMAL(20,4), - activate_card_order_cnt BIGINT, - forward_ts_activate_card_order_cnt BIGINT, - activate_card_order_cost DECIMAL(20,4), - forward_ts_activate_card_order_cost DECIMAL(20,4), - create_card_order_ratio DECIMAL(10,6), - forward_ts_create_card_order_ratio DECIMAL(10,6), - activate_card_order_cnt_ratio DECIMAL(10,6), - forward_ts_activate_card_order_ratio DECIMAL(10,6), - live_play_cnt BIGINT, - item_entrance_clk_cnt BIGINT, - show_cnt BIGINT, - report_date_str VARCHAR(50), - campaign_id BIGINT, - campaign_name VARCHAR(200), - unit_id BIGINT, - unit_name VARCHAR(200), - creative_id BIGINT, - creative_name VARCHAR(200), - cid_actual_roi_after_subsidy DECIMAL(10,6), - cid_coupon_amount BIGINT, - cid_coupon_callback_paid_refund_amount BIGINT, - cid_voucher_cost DECIMAL(20,4), - PRIMARY KEY (id) -); - -COMMENT ON TABLE campaign_report_sum IS '广告系列报告汇总表'; - -CREATE INDEX idx_campaign_report_sum_cid ON campaign_report_sum(tenant_id, cid); -CREATE INDEX idx_campaign_report_sum_campaign_id ON campaign_report_sum(tenant_id, campaign_id); -CREATE INDEX idx_campaign_report_sum_date ON campaign_report_sum(tenant_id, report_date_str); -CREATE INDEX idx_campaign_report_sum_datasource ON campaign_report_sum(tenant_id, datasource); diff --git a/sql/04_creative_report_tables.sql b/sql/04_creative_report_tables.sql deleted file mode 100644 index 8b3a919..0000000 --- a/sql/04_creative_report_tables.sql +++ /dev/null @@ -1,206 +0,0 @@ --- Creative Report Tables (创意报告表) - --- ============================================= --- 创意报告明细表 (creative_report_detail) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS creative_report_detail_id_seq; - -CREATE TABLE IF NOT EXISTS creative_report_detail ( - id BIGINT NOT NULL DEFAULT nextval('creative_report_detail_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - ad_name VARCHAR(255) NOT NULL DEFAULT '', - render_mode VARCHAR(32) NOT NULL DEFAULT '', - inventory_type VARCHAR(32) NOT NULL DEFAULT '', - promotion_target_id VARCHAR(64) NOT NULL DEFAULT '', - material_hash VARCHAR(128) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - primary_url VARCHAR(1024) NOT NULL DEFAULT '', - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_interaction_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_three_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_five_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_engage_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_share_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_comment_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_like_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_repost_count DECIMAL(20,6) NOT NULL DEFAULT 0, - game_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_install_count DECIMAL(20,6) NOT NULL DEFAULT 0, - onsite_leads_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE creative_report_detail IS '创意报告明细表'; -COMMENT ON COLUMN creative_report_detail.id IS '主键ID'; -COMMENT ON COLUMN creative_report_detail.tenant_id IS '租户ID'; -COMMENT ON COLUMN creative_report_detail.creator IS '创建人'; -COMMENT ON COLUMN creative_report_detail.created_at IS '创建时间'; -COMMENT ON COLUMN creative_report_detail.updater IS '更新人'; -COMMENT ON COLUMN creative_report_detail.updated_at IS '更新时间'; -COMMENT ON COLUMN creative_report_detail.deleted_at IS '软删除时间'; -COMMENT ON COLUMN creative_report_detail.cid IS '广告账户ID'; -COMMENT ON COLUMN creative_report_detail.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN creative_report_detail.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN creative_report_detail.ad_id IS '创意ID'; -COMMENT ON COLUMN creative_report_detail.ad_name IS '创意名称'; -COMMENT ON COLUMN creative_report_detail.render_mode IS '创意类型'; -COMMENT ON COLUMN creative_report_detail.inventory_type IS '投放位置'; -COMMENT ON COLUMN creative_report_detail.promotion_target_id IS '推广目标ID'; -COMMENT ON COLUMN creative_report_detail.material_hash IS '素材哈希'; -COMMENT ON COLUMN creative_report_detail.impression IS '展示数'; -COMMENT ON COLUMN creative_report_detail.click IS '点击数'; -COMMENT ON COLUMN creative_report_detail.cost IS '花费(元)'; -COMMENT ON COLUMN creative_report_detail.ctr IS '点击率'; -COMMENT ON COLUMN creative_report_detail.cpc IS '平均点击价格'; -COMMENT ON COLUMN creative_report_detail.cpm IS '千次展现成本'; -COMMENT ON COLUMN creative_report_detail.conversion IS '转化数'; -COMMENT ON COLUMN creative_report_detail.conversion_rate IS '转化率'; -COMMENT ON COLUMN creative_report_detail.cpp IS '单次转化成本'; -COMMENT ON COLUMN creative_report_detail.primary_url IS '落地页URL'; -COMMENT ON COLUMN creative_report_detail.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN creative_report_detail.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN creative_report_detail.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN creative_report_detail.video_interaction_count IS '视频互动数'; -COMMENT ON COLUMN creative_report_detail.video_three_second_play_count IS '视频3秒播放次数'; -COMMENT ON COLUMN creative_report_detail.video_five_second_play_count IS '视频5秒播放次数'; -COMMENT ON COLUMN creative_report_detail.tweet_engage_count IS '推文参与数'; -COMMENT ON COLUMN creative_report_detail.tweet_share_count IS '推文分享数'; -COMMENT ON COLUMN creative_report_detail.tweet_comment_count IS '推文评论数'; -COMMENT ON COLUMN creative_report_detail.tweet_like_count IS '推文点赞数'; -COMMENT ON COLUMN creative_report_detail.tweet_repost_count IS '推文转发数'; -COMMENT ON COLUMN creative_report_detail.game_download_count IS '游戏下载数'; -COMMENT ON COLUMN creative_report_detail.app_download_count IS '应用下载数'; -COMMENT ON COLUMN creative_report_detail.app_install_count IS '应用安装数'; -COMMENT ON COLUMN creative_report_detail.onsite_leads_count IS '预注册数'; -COMMENT ON COLUMN creative_report_detail.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN creative_report_detail.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN creative_report_detail.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN creative_report_detail.day IS '数据日期'; -COMMENT ON COLUMN creative_report_detail.datasource IS '数据源'; - -CREATE INDEX idx_creative_report_detail_cid ON creative_report_detail(tenant_id, cid); -CREATE INDEX idx_creative_report_detail_campaign_id ON creative_report_detail(tenant_id, campaign_id); -CREATE INDEX idx_creative_report_detail_ad_id ON creative_report_detail(tenant_id, ad_id); -CREATE INDEX idx_creative_report_detail_day ON creative_report_detail(tenant_id, day); -CREATE INDEX idx_creative_report_detail_datasource ON creative_report_detail(tenant_id, datasource); -CREATE INDEX idx_creative_report_detail_material_hash ON creative_report_detail(tenant_id, material_hash); - --- ============================================= --- 创意报告汇总表 (creative_report_sum) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS creative_report_sum_id_seq; - -CREATE TABLE IF NOT EXISTS creative_report_sum ( - id BIGINT NOT NULL DEFAULT nextval('creative_report_sum_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - ad_name VARCHAR(255) NOT NULL DEFAULT '', - render_mode VARCHAR(32) NOT NULL DEFAULT '', - inventory_type VARCHAR(32) NOT NULL DEFAULT '', - promotion_target_id VARCHAR(64) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_interaction_count DECIMAL(20,6) NOT NULL DEFAULT 0, - game_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_install_count DECIMAL(20,6) NOT NULL DEFAULT 0, - onsite_leads_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - hour VARCHAR(2) NOT NULL DEFAULT '', - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE creative_report_sum IS '创意报告汇总表'; -COMMENT ON COLUMN creative_report_sum.id IS '主键ID'; -COMMENT ON COLUMN creative_report_sum.tenant_id IS '租户ID'; -COMMENT ON COLUMN creative_report_sum.creator IS '创建人'; -COMMENT ON COLUMN creative_report_sum.created_at IS '创建时间'; -COMMENT ON COLUMN creative_report_sum.updater IS '更新人'; -COMMENT ON COLUMN creative_report_sum.updated_at IS '更新时间'; -COMMENT ON COLUMN creative_report_sum.deleted_at IS '软删除时间'; -COMMENT ON COLUMN creative_report_sum.cid IS '广告账户ID'; -COMMENT ON COLUMN creative_report_sum.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN creative_report_sum.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN creative_report_sum.ad_id IS '创意ID'; -COMMENT ON COLUMN creative_report_sum.ad_name IS '创意名称'; -COMMENT ON COLUMN creative_report_sum.render_mode IS '创意类型'; -COMMENT ON COLUMN creative_report_sum.inventory_type IS '投放位置'; -COMMENT ON COLUMN creative_report_sum.promotion_target_id IS '推广目标ID'; -COMMENT ON COLUMN creative_report_sum.impression IS '展示数'; -COMMENT ON COLUMN creative_report_sum.click IS '点击数'; -COMMENT ON COLUMN creative_report_sum.cost IS '花费(元)'; -COMMENT ON COLUMN creative_report_sum.ctr IS '点击率'; -COMMENT ON COLUMN creative_report_sum.cpc IS '平均点击价格'; -COMMENT ON COLUMN creative_report_sum.cpm IS '千次展现成本'; -COMMENT ON COLUMN creative_report_sum.conversion IS '转化数'; -COMMENT ON COLUMN creative_report_sum.conversion_rate IS '转化率'; -COMMENT ON COLUMN creative_report_sum.cpp IS '单次转化成本'; -COMMENT ON COLUMN creative_report_sum.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN creative_report_sum.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN creative_report_sum.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN creative_report_sum.video_interaction_count IS '视频互动数'; -COMMENT ON COLUMN creative_report_sum.game_download_count IS '游戏下载数'; -COMMENT ON COLUMN creative_report_sum.app_download_count IS '应用下载数'; -COMMENT ON COLUMN creative_report_sum.app_install_count IS '应用安装数'; -COMMENT ON COLUMN creative_report_sum.onsite_leads_count IS '预注册数'; -COMMENT ON COLUMN creative_report_sum.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN creative_report_sum.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN creative_report_sum.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN creative_report_sum.hour IS '数据小时'; -COMMENT ON COLUMN creative_report_sum.day IS '数据日期'; -COMMENT ON COLUMN creative_report_sum.datasource IS '数据源'; - -CREATE INDEX idx_creative_report_sum_cid ON creative_report_sum(tenant_id, cid); -CREATE INDEX idx_creative_report_sum_campaign_id ON creative_report_sum(tenant_id, campaign_id); -CREATE INDEX idx_creative_report_sum_ad_id ON creative_report_sum(tenant_id, ad_id); -CREATE INDEX idx_creative_report_sum_day ON creative_report_sum(tenant_id, day); -CREATE INDEX idx_creative_report_sum_hour ON creative_report_sum(tenant_id, hour); -CREATE INDEX idx_creative_report_sum_datasource ON creative_report_sum(tenant_id, datasource); -CREATE UNIQUE INDEX idx_creative_report_sum_unique ON creative_report_sum(tenant_id, ad_id, hour, day, datasource); diff --git a/sql/05_unit_report_tables.sql b/sql/05_unit_report_tables.sql deleted file mode 100644 index ae302af..0000000 --- a/sql/05_unit_report_tables.sql +++ /dev/null @@ -1,207 +0,0 @@ --- Unit Report Tables (单元报告表) - --- ============================================= --- 单元报告明细表 (unit_report_detail) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS unit_report_detail_id_seq; - -CREATE TABLE IF NOT EXISTS unit_report_detail ( - id BIGINT NOT NULL DEFAULT nextval('unit_report_detail_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_name VARCHAR(255) NOT NULL DEFAULT '', - marketing_target_id VARCHAR(64) NOT NULL DEFAULT '', - marketing_target_name VARCHAR(255) NOT NULL DEFAULT '', - placement_type VARCHAR(32) NOT NULL DEFAULT '', - inventory_type VARCHAR(32) NOT NULL DEFAULT '', - campaign_budget DECIMAL(20,6) NOT NULL DEFAULT 0, - adgroup_budget DECIMAL(20,6) NOT NULL DEFAULT 0, - bid_mode VARCHAR(32) NOT NULL DEFAULT '', - bid_amount DECIMAL(20,6) NOT NULL DEFAULT 0, - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - primary_url VARCHAR(1024) NOT NULL DEFAULT '', - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_interaction_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_engage_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_share_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_comment_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_like_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_repost_count DECIMAL(20,6) NOT NULL DEFAULT 0, - game_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_install_count DECIMAL(20,6) NOT NULL DEFAULT 0, - onsite_leads_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE unit_report_detail IS '单元报告明细表'; -COMMENT ON COLUMN unit_report_detail.id IS '主键ID'; -COMMENT ON COLUMN unit_report_detail.tenant_id IS '租户ID'; -COMMENT ON COLUMN unit_report_detail.creator IS '创建人'; -COMMENT ON COLUMN unit_report_detail.created_at IS '创建时间'; -COMMENT ON COLUMN unit_report_detail.updater IS '更新人'; -COMMENT ON COLUMN unit_report_detail.updated_at IS '更新时间'; -COMMENT ON COLUMN unit_report_detail.deleted_at IS '软删除时间'; -COMMENT ON COLUMN unit_report_detail.cid IS '广告账户ID'; -COMMENT ON COLUMN unit_report_detail.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN unit_report_detail.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN unit_report_detail.adgroup_name IS '广告组名称'; -COMMENT ON COLUMN unit_report_detail.marketing_target_id IS '营销标的ID'; -COMMENT ON COLUMN unit_report_detail.marketing_target_name IS '营销标的名称'; -COMMENT ON COLUMN unit_report_detail.placement_type IS '投放版位'; -COMMENT ON COLUMN unit_report_detail.inventory_type IS '投放位置'; -COMMENT ON COLUMN unit_report_detail.campaign_budget IS '广告系列预算'; -COMMENT ON COLUMN unit_report_detail.adgroup_budget IS '广告组预算'; -COMMENT ON COLUMN unit_report_detail.bid_mode IS '出价方式'; -COMMENT ON COLUMN unit_report_detail.bid_amount IS '出价/代理出价'; -COMMENT ON COLUMN unit_report_detail.impression IS '展示数'; -COMMENT ON COLUMN unit_report_detail.click IS '点击数'; -COMMENT ON COLUMN unit_report_detail.cost IS '花费(元)'; -COMMENT ON COLUMN unit_report_detail.ctr IS '点击率'; -COMMENT ON COLUMN unit_report_detail.cpc IS '平均点击价格'; -COMMENT ON COLUMN unit_report_detail.cpm IS '千次展现成本'; -COMMENT ON COLUMN unit_report_detail.conversion IS '转化数'; -COMMENT ON COLUMN unit_report_detail.conversion_rate IS '转化率'; -COMMENT ON COLUMN unit_report_detail.cpp IS '单次转化成本'; -COMMENT ON COLUMN unit_report_detail.primary_url IS '落地页URL'; -COMMENT ON COLUMN unit_report_detail.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN unit_report_detail.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN unit_report_detail.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN unit_report_detail.video_interaction_count IS '视频互动数'; -COMMENT ON COLUMN unit_report_detail.tweet_engage_count IS '推文参与数'; -COMMENT ON COLUMN unit_report_detail.tweet_share_count IS '推文分享数'; -COMMENT ON COLUMN unit_report_detail.tweet_comment_count IS '推文评论数'; -COMMENT ON COLUMN unit_report_detail.tweet_like_count IS '推文点赞数'; -COMMENT ON COLUMN unit_report_detail.tweet_repost_count IS '推文转发数'; -COMMENT ON COLUMN unit_report_detail.game_download_count IS '游戏下载数'; -COMMENT ON COLUMN unit_report_detail.app_download_count IS '应用下载数'; -COMMENT ON COLUMN unit_report_detail.app_install_count IS '应用安装数'; -COMMENT ON COLUMN unit_report_detail.onsite_leads_count IS '预注册数'; -COMMENT ON COLUMN unit_report_detail.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN unit_report_detail.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN unit_report_detail.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN unit_report_detail.day IS '数据日期'; -COMMENT ON COLUMN unit_report_detail.datasource IS '数据源'; - -CREATE INDEX idx_unit_report_detail_cid ON unit_report_detail(tenant_id, cid); -CREATE INDEX idx_unit_report_detail_campaign_id ON unit_report_detail(tenant_id, campaign_id); -CREATE INDEX idx_unit_report_detail_adgroup_id ON unit_report_detail(tenant_id, adgroup_id); -CREATE INDEX idx_unit_report_detail_day ON unit_report_detail(tenant_id, day); -CREATE INDEX idx_unit_report_detail_datasource ON unit_report_detail(tenant_id, datasource); - --- ============================================= --- 单元报告汇总表 (unit_report_sum) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS unit_report_sum_id_seq; - -CREATE TABLE IF NOT EXISTS unit_report_sum ( - id BIGINT NOT NULL DEFAULT nextval('unit_report_sum_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_name VARCHAR(255) NOT NULL DEFAULT '', - marketing_target_id VARCHAR(64) NOT NULL DEFAULT '', - marketing_target_name VARCHAR(255) NOT NULL DEFAULT '', - placement_type VARCHAR(32) NOT NULL DEFAULT '', - inventory_type VARCHAR(32) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_interaction_count DECIMAL(20,6) NOT NULL DEFAULT 0, - game_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_install_count DECIMAL(20,6) NOT NULL DEFAULT 0, - onsite_leads_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - hour VARCHAR(2) NOT NULL DEFAULT '', - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE unit_report_sum IS '单元报告汇总表'; -COMMENT ON COLUMN unit_report_sum.id IS '主键ID'; -COMMENT ON COLUMN unit_report_sum.tenant_id IS '租户ID'; -COMMENT ON COLUMN unit_report_sum.creator IS '创建人'; -COMMENT ON COLUMN unit_report_sum.created_at IS '创建时间'; -COMMENT ON COLUMN unit_report_sum.updater IS '更新人'; -COMMENT ON COLUMN unit_report_sum.updated_at IS '更新时间'; -COMMENT ON COLUMN unit_report_sum.deleted_at IS '软删除时间'; -COMMENT ON COLUMN unit_report_sum.cid IS '广告账户ID'; -COMMENT ON COLUMN unit_report_sum.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN unit_report_sum.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN unit_report_sum.adgroup_name IS '广告组名称'; -COMMENT ON COLUMN unit_report_sum.marketing_target_id IS '营销标的ID'; -COMMENT ON COLUMN unit_report_sum.marketing_target_name IS '营销标的名称'; -COMMENT ON COLUMN unit_report_sum.placement_type IS '投放版位'; -COMMENT ON COLUMN unit_report_sum.inventory_type IS '投放位置'; -COMMENT ON COLUMN unit_report_sum.impression IS '展示数'; -COMMENT ON COLUMN unit_report_sum.click IS '点击数'; -COMMENT ON COLUMN unit_report_sum.cost IS '花费(元)'; -COMMENT ON COLUMN unit_report_sum.ctr IS '点击率'; -COMMENT ON COLUMN unit_report_sum.cpc IS '平均点击价格'; -COMMENT ON COLUMN unit_report_sum.cpm IS '千次展现成本'; -COMMENT ON COLUMN unit_report_sum.conversion IS '转化数'; -COMMENT ON COLUMN unit_report_sum.conversion_rate IS '转化率'; -COMMENT ON COLUMN unit_report_sum.cpp IS '单次转化成本'; -COMMENT ON COLUMN unit_report_sum.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN unit_report_sum.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN unit_report_sum.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN unit_report_sum.video_interaction_count IS '视频互动数'; -COMMENT ON COLUMN unit_report_sum.game_download_count IS '游戏下载数'; -COMMENT ON COLUMN unit_report_sum.app_download_count IS '应用下载数'; -COMMENT ON COLUMN unit_report_sum.app_install_count IS '应用安装数'; -COMMENT ON COLUMN unit_report_sum.onsite_leads_count IS '预注册数'; -COMMENT ON COLUMN unit_report_sum.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN unit_report_sum.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN unit_report_sum.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN unit_report_sum.hour IS '数据小时'; -COMMENT ON COLUMN unit_report_sum.day IS '数据日期'; -COMMENT ON COLUMN unit_report_sum.datasource IS '数据源'; - -CREATE INDEX idx_unit_report_sum_cid ON unit_report_sum(tenant_id, cid); -CREATE INDEX idx_unit_report_sum_campaign_id ON unit_report_sum(tenant_id, campaign_id); -CREATE INDEX idx_unit_report_sum_adgroup_id ON unit_report_sum(tenant_id, adgroup_id); -CREATE INDEX idx_unit_report_sum_day ON unit_report_sum(tenant_id, day); -CREATE INDEX idx_unit_report_sum_hour ON unit_report_sum(tenant_id, hour); -CREATE INDEX idx_unit_report_sum_datasource ON unit_report_sum(tenant_id, datasource); -CREATE UNIQUE INDEX idx_unit_report_sum_unique ON unit_report_sum(tenant_id, adgroup_id, hour, day, datasource); diff --git a/sql/06_storewide_report_tables.sql b/sql/06_storewide_report_tables.sql deleted file mode 100644 index acf8737..0000000 --- a/sql/06_storewide_report_tables.sql +++ /dev/null @@ -1,177 +0,0 @@ --- Storewide Report Tables (全店报告表) - --- ============================================= --- 全店报告明细表 (storewide_report_detail) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS storewide_report_detail_id_seq; - -CREATE TABLE IF NOT EXISTS storewide_report_detail ( - id BIGINT NOT NULL DEFAULT nextval('storewide_report_detail_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - ad_name VARCHAR(255) NOT NULL DEFAULT '', - primary_url VARCHAR(1024) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - direct_conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - indirect_conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - roe DECIMAL(20,8) NOT NULL DEFAULT 0, - gmv DECIMAL(20,6) NOT NULL DEFAULT 0, - order_count DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_order_price DECIMAL(20,8) NOT NULL DEFAULT 0, - cart_count DECIMAL(20,6) NOT NULL DEFAULT 0, - favorite_count DECIMAL(20,6) NOT NULL DEFAULT 0, - page_view DECIMAL(20,6) NOT NULL DEFAULT 0, - browse_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_browse_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE storewide_report_detail IS '全店报告明细表'; -COMMENT ON COLUMN storewide_report_detail.id IS '主键ID'; -COMMENT ON COLUMN storewide_report_detail.tenant_id IS '租户ID'; -COMMENT ON COLUMN storewide_report_detail.creator IS '创建人'; -COMMENT ON COLUMN storewide_report_detail.created_at IS '创建时间'; -COMMENT ON COLUMN storewide_report_detail.updater IS '更新人'; -COMMENT ON COLUMN storewide_report_detail.updated_at IS '更新时间'; -COMMENT ON COLUMN storewide_report_detail.deleted_at IS '软删除时间'; -COMMENT ON COLUMN storewide_report_detail.cid IS '广告账户ID'; -COMMENT ON COLUMN storewide_report_detail.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN storewide_report_detail.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN storewide_report_detail.ad_id IS '创意ID'; -COMMENT ON COLUMN storewide_report_detail.ad_name IS '创意名称'; -COMMENT ON COLUMN storewide_report_detail.primary_url IS '落地页URL'; -COMMENT ON COLUMN storewide_report_detail.impression IS '展示数'; -COMMENT ON COLUMN storewide_report_detail.click IS '点击数'; -COMMENT ON COLUMN storewide_report_detail.cost IS '花费(元)'; -COMMENT ON COLUMN storewide_report_detail.ctr IS '点击率'; -COMMENT ON COLUMN storewide_report_detail.cpc IS '平均点击价格'; -COMMENT ON COLUMN storewide_report_detail.cpm IS '千次展现成本'; -COMMENT ON COLUMN storewide_report_detail.direct_conversion IS '直接转化数'; -COMMENT ON COLUMN storewide_report_detail.indirect_conversion IS '间接转化数'; -COMMENT ON COLUMN storewide_report_detail.conversion IS '总转化数'; -COMMENT ON COLUMN storewide_report_detail.conversion_rate IS '转化率'; -COMMENT ON COLUMN storewide_report_detail.cpp IS '单次转化成本'; -COMMENT ON COLUMN storewide_report_detail.roe IS '投资回报率(ROE)'; -COMMENT ON COLUMN storewide_report_detail.gmv IS 'GMV(元)'; -COMMENT ON COLUMN storewide_report_detail.order_count IS '订单数'; -COMMENT ON COLUMN storewide_report_detail.avg_order_price IS '平均客单价'; -COMMENT ON COLUMN storewide_report_detail.cart_count IS '加购数'; -COMMENT ON COLUMN storewide_report_detail.favorite_count IS '收藏数'; -COMMENT ON COLUMN storewide_report_detail.page_view IS '页面浏览数'; -COMMENT ON COLUMN storewide_report_detail.browse_duration IS '浏览时长'; -COMMENT ON COLUMN storewide_report_detail.avg_browse_duration IS '平均浏览时长(秒)'; -COMMENT ON COLUMN storewide_report_detail.day IS '数据日期'; -COMMENT ON COLUMN storewide_report_detail.datasource IS '数据源'; - -CREATE INDEX idx_storewide_report_detail_cid ON storewide_report_detail(tenant_id, cid); -CREATE INDEX idx_storewide_report_detail_campaign_id ON storewide_report_detail(tenant_id, campaign_id); -CREATE INDEX idx_storewide_report_detail_ad_id ON storewide_report_detail(tenant_id, ad_id); -CREATE INDEX idx_storewide_report_detail_day ON storewide_report_detail(tenant_id, day); -CREATE INDEX idx_storewide_report_detail_datasource ON storewide_report_detail(tenant_id, datasource); - --- ============================================= --- 全店报告汇总表 (storewide_report_sum) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS storewide_report_sum_id_seq; - -CREATE TABLE IF NOT EXISTS storewide_report_sum ( - id BIGINT NOT NULL DEFAULT nextval('storewide_report_sum_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - ad_name VARCHAR(255) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - direct_conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - indirect_conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - roe DECIMAL(20,8) NOT NULL DEFAULT 0, - gmv DECIMAL(20,6) NOT NULL DEFAULT 0, - order_count DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_order_price DECIMAL(20,8) NOT NULL DEFAULT 0, - cart_count DECIMAL(20,6) NOT NULL DEFAULT 0, - favorite_count DECIMAL(20,6) NOT NULL DEFAULT 0, - page_view DECIMAL(20,6) NOT NULL DEFAULT 0, - browse_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_browse_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - hour VARCHAR(2) NOT NULL DEFAULT '', - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE storewide_report_sum IS '全店报告汇总表'; -COMMENT ON COLUMN storewide_report_sum.id IS '主键ID'; -COMMENT ON COLUMN storewide_report_sum.tenant_id IS '租户ID'; -COMMENT ON COLUMN storewide_report_sum.creator IS '创建人'; -COMMENT ON COLUMN storewide_report_sum.created_at IS '创建时间'; -COMMENT ON COLUMN storewide_report_sum.updater IS '更新人'; -COMMENT ON COLUMN storewide_report_sum.updated_at IS '更新时间'; -COMMENT ON COLUMN storewide_report_sum.deleted_at IS '软删除时间'; -COMMENT ON COLUMN storewide_report_sum.cid IS '广告账户ID'; -COMMENT ON COLUMN storewide_report_sum.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN storewide_report_sum.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN storewide_report_sum.ad_id IS '创意ID'; -COMMENT ON COLUMN storewide_report_sum.ad_name IS '创意名称'; -COMMENT ON COLUMN storewide_report_sum.impression IS '展示数'; -COMMENT ON COLUMN storewide_report_sum.click IS '点击数'; -COMMENT ON COLUMN storewide_report_sum.cost IS '花费(元)'; -COMMENT ON COLUMN storewide_report_sum.ctr IS '点击率'; -COMMENT ON COLUMN storewide_report_sum.cpc IS '平均点击价格'; -COMMENT ON COLUMN storewide_report_sum.cpm IS '千次展现成本'; -COMMENT ON COLUMN storewide_report_sum.direct_conversion IS '直接转化数'; -COMMENT ON COLUMN storewide_report_sum.indirect_conversion IS '间接转化数'; -COMMENT ON COLUMN storewide_report_sum.conversion IS '总转化数'; -COMMENT ON COLUMN storewide_report_sum.conversion_rate IS '转化率'; -COMMENT ON COLUMN storewide_report_sum.cpp IS '单次转化成本'; -COMMENT ON COLUMN storewide_report_sum.roe IS '投资回报率(ROE)'; -COMMENT ON COLUMN storewide_report_sum.gmv IS 'GMV(元)'; -COMMENT ON COLUMN storewide_report_sum.order_count IS '订单数'; -COMMENT ON COLUMN storewide_report_sum.avg_order_price IS '平均客单价'; -COMMENT ON COLUMN storewide_report_sum.cart_count IS '加购数'; -COMMENT ON COLUMN storewide_report_sum.favorite_count IS '收藏数'; -COMMENT ON COLUMN storewide_report_sum.page_view IS '页面浏览数'; -COMMENT ON COLUMN storewide_report_sum.browse_duration IS '浏览时长'; -COMMENT ON COLUMN storewide_report_sum.avg_browse_duration IS '平均浏览时长(秒)'; -COMMENT ON COLUMN storewide_report_sum.hour IS '数据小时'; -COMMENT ON COLUMN storewide_report_sum.day IS '数据日期'; -COMMENT ON COLUMN storewide_report_sum.datasource IS '数据源'; - -CREATE INDEX idx_storewide_report_sum_cid ON storewide_report_sum(tenant_id, cid); -CREATE INDEX idx_storewide_report_sum_campaign_id ON storewide_report_sum(tenant_id, campaign_id); -CREATE INDEX idx_storewide_report_sum_ad_id ON storewide_report_sum(tenant_id, ad_id); -CREATE INDEX idx_storewide_report_sum_day ON storewide_report_sum(tenant_id, day); -CREATE INDEX idx_storewide_report_sum_hour ON storewide_report_sum(tenant_id, hour); -CREATE INDEX idx_storewide_report_sum_datasource ON storewide_report_sum(tenant_id, datasource); -CREATE UNIQUE INDEX idx_storewide_report_sum_unique ON storewide_report_sum(tenant_id, ad_id, hour, day, datasource); diff --git a/sql/07_material_population_tables.sql b/sql/07_material_population_tables.sql deleted file mode 100644 index c241699..0000000 --- a/sql/07_material_population_tables.sql +++ /dev/null @@ -1,184 +0,0 @@ --- Material and Population Report Tables (素材报告和人群报告表) - --- ============================================= --- 素材报告表 (material_report) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS material_report_id_seq; - -CREATE TABLE IF NOT EXISTS material_report ( - id BIGINT NOT NULL DEFAULT nextval('material_report_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - ad_name VARCHAR(255) NOT NULL DEFAULT '', - material_hash VARCHAR(128) NOT NULL DEFAULT '', - material_url VARCHAR(2048) NOT NULL DEFAULT '', - material_type VARCHAR(32) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_three_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_five_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE material_report IS '素材报告表'; -COMMENT ON COLUMN material_report.id IS '主键ID'; -COMMENT ON COLUMN material_report.tenant_id IS '租户ID'; -COMMENT ON COLUMN material_report.creator IS '创建人'; -COMMENT ON COLUMN material_report.created_at IS '创建时间'; -COMMENT ON COLUMN material_report.updater IS '更新人'; -COMMENT ON COLUMN material_report.updated_at IS '更新时间'; -COMMENT ON COLUMN material_report.deleted_at IS '软删除时间'; -COMMENT ON COLUMN material_report.cid IS '广告账户ID'; -COMMENT ON COLUMN material_report.ad_id IS '创意ID'; -COMMENT ON COLUMN material_report.ad_name IS '创意名称'; -COMMENT ON COLUMN material_report.material_hash IS '素材哈希'; -COMMENT ON COLUMN material_report.material_url IS '素材URL'; -COMMENT ON COLUMN material_report.material_type IS '素材类型'; -COMMENT ON COLUMN material_report.impression IS '展示数'; -COMMENT ON COLUMN material_report.click IS '点击数'; -COMMENT ON COLUMN material_report.cost IS '花费(元)'; -COMMENT ON COLUMN material_report.ctr IS '点击率'; -COMMENT ON COLUMN material_report.cpc IS '平均点击价格'; -COMMENT ON COLUMN material_report.cpm IS '千次展现成本'; -COMMENT ON COLUMN material_report.conversion IS '转化数'; -COMMENT ON COLUMN material_report.conversion_rate IS '转化率'; -COMMENT ON COLUMN material_report.cpp IS '单次转化成本'; -COMMENT ON COLUMN material_report.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN material_report.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN material_report.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN material_report.video_three_second_play_count IS '视频3秒播放次数'; -COMMENT ON COLUMN material_report.video_five_second_play_count IS '视频5秒播放次数'; -COMMENT ON COLUMN material_report.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN material_report.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN material_report.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN material_report.day IS '数据日期'; -COMMENT ON COLUMN material_report.datasource IS '数据源'; - -CREATE INDEX idx_material_report_cid ON material_report(tenant_id, cid); -CREATE INDEX idx_material_report_ad_id ON material_report(tenant_id, ad_id); -CREATE INDEX idx_material_report_material_hash ON material_report(tenant_id, material_hash); -CREATE INDEX idx_material_report_day ON material_report(tenant_id, day); -CREATE INDEX idx_material_report_datasource ON material_report(tenant_id, datasource); - --- ============================================= --- 人群报告表 (population_report) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS population_report_id_seq; - -CREATE TABLE IF NOT EXISTS population_report ( - id BIGINT NOT NULL DEFAULT nextval('population_report_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - audience_template_id VARCHAR(64) NOT NULL DEFAULT '', - audience_template_name VARCHAR(255) NOT NULL DEFAULT '', - audience_type VARCHAR(32) NOT NULL DEFAULT '', - audience_source VARCHAR(32) NOT NULL DEFAULT '', - impression DECIMAL(20,6) NOT NULL DEFAULT 0, - click DECIMAL(20,6) NOT NULL DEFAULT 0, - cost DECIMAL(20,6) NOT NULL DEFAULT 0, - ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - video_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_play_uv DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_video_play_duration DECIMAL(20,6) NOT NULL DEFAULT 0, - video_three_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - video_five_second_play_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_engage_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_share_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_comment_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_like_count DECIMAL(20,6) NOT NULL DEFAULT 0, - tweet_repost_count DECIMAL(20,6) NOT NULL DEFAULT 0, - game_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_download_count DECIMAL(20,6) NOT NULL DEFAULT 0, - app_install_count DECIMAL(20,6) NOT NULL DEFAULT 0, - onsite_leads_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_count DECIMAL(20,6) NOT NULL DEFAULT 0, - deep_convert_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - deep_convert_cost DECIMAL(20,8) NOT NULL DEFAULT 0, - day VARCHAR(10) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - PRIMARY KEY (id) -); - -COMMENT ON TABLE population_report IS '人群报告表'; -COMMENT ON COLUMN population_report.id IS '主键ID'; -COMMENT ON COLUMN population_report.tenant_id IS '租户ID'; -COMMENT ON COLUMN population_report.creator IS '创建人'; -COMMENT ON COLUMN population_report.created_at IS '创建时间'; -COMMENT ON COLUMN population_report.updater IS '更新人'; -COMMENT ON COLUMN population_report.updated_at IS '更新时间'; -COMMENT ON COLUMN population_report.deleted_at IS '软删除时间'; -COMMENT ON COLUMN population_report.cid IS '广告账户ID'; -COMMENT ON COLUMN population_report.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN population_report.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN population_report.audience_template_id IS '人群包ID'; -COMMENT ON COLUMN population_report.audience_template_name IS '人群包名称'; -COMMENT ON COLUMN population_report.audience_type IS '人群类型'; -COMMENT ON COLUMN population_report.audience_source IS '人群来源'; -COMMENT ON COLUMN population_report.impression IS '展示数'; -COMMENT ON COLUMN population_report.click IS '点击数'; -COMMENT ON COLUMN population_report.cost IS '花费(元)'; -COMMENT ON COLUMN population_report.ctr IS '点击率'; -COMMENT ON COLUMN population_report.cpc IS '平均点击价格'; -COMMENT ON COLUMN population_report.cpm IS '千次展现成本'; -COMMENT ON COLUMN population_report.conversion IS '转化数'; -COMMENT ON COLUMN population_report.conversion_rate IS '转化率'; -COMMENT ON COLUMN population_report.cpp IS '单次转化成本'; -COMMENT ON COLUMN population_report.video_play_count IS '视频播放次数'; -COMMENT ON COLUMN population_report.video_play_uv IS '视频播放人数'; -COMMENT ON COLUMN population_report.avg_video_play_duration IS '平均播放时长(秒)'; -COMMENT ON COLUMN population_report.video_three_second_play_count IS '视频3秒播放次数'; -COMMENT ON COLUMN population_report.video_five_second_play_count IS '视频5秒播放次数'; -COMMENT ON COLUMN population_report.tweet_engage_count IS '推文参与数'; -COMMENT ON COLUMN population_report.tweet_share_count IS '推文分享数'; -COMMENT ON COLUMN population_report.tweet_comment_count IS '推文评论数'; -COMMENT ON COLUMN population_report.tweet_like_count IS '推文点赞数'; -COMMENT ON COLUMN population_report.tweet_repost_count IS '推文转发数'; -COMMENT ON COLUMN population_report.game_download_count IS '游戏下载数'; -COMMENT ON COLUMN population_report.app_download_count IS '应用下载数'; -COMMENT ON COLUMN population_report.app_install_count IS '应用安装数'; -COMMENT ON COLUMN population_report.onsite_leads_count IS '预注册数'; -COMMENT ON COLUMN population_report.deep_convert_count IS '深度转化数'; -COMMENT ON COLUMN population_report.deep_convert_rate IS '深度转化率'; -COMMENT ON COLUMN population_report.deep_convert_cost IS '深度转化成本'; -COMMENT ON COLUMN population_report.day IS '数据日期'; -COMMENT ON COLUMN population_report.datasource IS '数据源'; - -CREATE INDEX idx_population_report_cid ON population_report(tenant_id, cid); -CREATE INDEX idx_population_report_campaign_id ON population_report(tenant_id, campaign_id); -CREATE INDEX idx_population_report_adgroup_id ON population_report(tenant_id, adgroup_id); -CREATE INDEX idx_population_report_audience_template_id ON population_report(tenant_id, audience_template_id); -CREATE INDEX idx_population_report_day ON population_report(tenant_id, day); -CREATE INDEX idx_population_report_datasource ON population_report(tenant_id, datasource); diff --git a/sql/08_sync_task_tables.sql b/sql/08_sync_task_tables.sql deleted file mode 100644 index e6fa5cf..0000000 --- a/sql/08_sync_task_tables.sql +++ /dev/null @@ -1,120 +0,0 @@ --- Sync Task and Task Report Tables (同步任务日志和任务报告表) - --- ============================================= --- 同步任务日志表 (sync_task_log) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS sync_task_log_id_seq; - -CREATE TABLE IF NOT EXISTS sync_task_log ( - id BIGINT NOT NULL DEFAULT nextval('sync_task_log_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - task_id BIGINT NOT NULL DEFAULT 0, - report_type VARCHAR(64) NOT NULL DEFAULT '', - report_date VARCHAR(10) NOT NULL DEFAULT '', - cid VARCHAR(64) NOT NULL DEFAULT '', - campaign_id VARCHAR(64) NOT NULL DEFAULT '', - adgroup_id VARCHAR(64) NOT NULL DEFAULT '', - ad_id VARCHAR(64) NOT NULL DEFAULT '', - datasource VARCHAR(64) NOT NULL DEFAULT '', - sync_status VARCHAR(32) NOT NULL DEFAULT '', - error_message TEXT NOT NULL DEFAULT '', - start_time TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - end_time TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - PRIMARY KEY (id) -); - -COMMENT ON TABLE sync_task_log IS '同步任务日志表'; -COMMENT ON COLUMN sync_task_log.id IS '主键ID'; -COMMENT ON COLUMN sync_task_log.tenant_id IS '租户ID'; -COMMENT ON COLUMN sync_task_log.creator IS '创建人'; -COMMENT ON COLUMN sync_task_log.created_at IS '创建时间'; -COMMENT ON COLUMN sync_task_log.updater IS '更新人'; -COMMENT ON COLUMN sync_task_log.updated_at IS '更新时间'; -COMMENT ON COLUMN sync_task_log.deleted_at IS '软删除时间'; -COMMENT ON COLUMN sync_task_log.task_id IS '调控任务ID'; -COMMENT ON COLUMN sync_task_log.report_type IS '报告类型'; -COMMENT ON COLUMN sync_task_log.report_date IS '报告日期'; -COMMENT ON COLUMN sync_task_log.cid IS '广告账户ID'; -COMMENT ON COLUMN sync_task_log.campaign_id IS '广告系列ID'; -COMMENT ON COLUMN sync_task_log.adgroup_id IS '广告组ID'; -COMMENT ON COLUMN sync_task_log.ad_id IS '创意ID'; -COMMENT ON COLUMN sync_task_log.datasource IS '数据源'; -COMMENT ON COLUMN sync_task_log.sync_status IS '同步状态'; -COMMENT ON COLUMN sync_task_log.error_message IS '错误信息'; -COMMENT ON COLUMN sync_task_log.start_time IS '开始时间'; -COMMENT ON COLUMN sync_task_log.end_time IS '结束时间'; - -CREATE INDEX idx_sync_task_log_task_id ON sync_task_log(tenant_id, task_id); -CREATE INDEX idx_sync_task_log_report_type ON sync_task_log(tenant_id, report_type); -CREATE INDEX idx_sync_task_log_report_date ON sync_task_log(tenant_id, report_date); -CREATE INDEX idx_sync_task_log_cid ON sync_task_log(tenant_id, cid); -CREATE INDEX idx_sync_task_log_datasource ON sync_task_log(tenant_id, datasource); -CREATE INDEX idx_sync_task_log_sync_status ON sync_task_log(tenant_id, sync_status); -CREATE INDEX idx_sync_task_log_created_at ON sync_task_log(tenant_id, created_at); - --- ============================================= --- 调控任务报告表 (task_report) --- ============================================= -CREATE SEQUENCE IF NOT EXISTS task_report_id_seq; - -CREATE TABLE IF NOT EXISTS task_report ( - id BIGINT NOT NULL DEFAULT nextval('task_report_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - updater VARCHAR(64) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT '0001-01-01 00:00:00+00:00', - deleted_at TIMESTAMP WITH TIME ZONE, - task_id BIGINT NOT NULL DEFAULT 0, - datasource VARCHAR(64) NOT NULL DEFAULT '', - report_date VARCHAR(10) NOT NULL DEFAULT '', - total_count BIGINT NOT NULL DEFAULT 0, - success_count BIGINT NOT NULL DEFAULT 0, - fail_count BIGINT NOT NULL DEFAULT 0, - skip_count BIGINT NOT NULL DEFAULT 0, - total_cost DECIMAL(20,6) NOT NULL DEFAULT 0, - total_impression DECIMAL(20,6) NOT NULL DEFAULT 0, - total_click DECIMAL(20,6) NOT NULL DEFAULT 0, - total_conversion DECIMAL(20,6) NOT NULL DEFAULT 0, - avg_ctr DECIMAL(20,8) NOT NULL DEFAULT 0, - avg_cpc DECIMAL(20,8) NOT NULL DEFAULT 0, - avg_cpm DECIMAL(20,8) NOT NULL DEFAULT 0, - avg_conversion_rate DECIMAL(20,8) NOT NULL DEFAULT 0, - avg_cpp DECIMAL(20,8) NOT NULL DEFAULT 0, - PRIMARY KEY (id) -); - -COMMENT ON TABLE task_report IS '调控任务报告表'; -COMMENT ON COLUMN task_report.id IS '主键ID'; -COMMENT ON COLUMN task_report.tenant_id IS '租户ID'; -COMMENT ON COLUMN task_report.creator IS '创建人'; -COMMENT ON COLUMN task_report.created_at IS '创建时间'; -COMMENT ON COLUMN task_report.updater IS '更新人'; -COMMENT ON COLUMN task_report.updated_at IS '更新时间'; -COMMENT ON COLUMN task_report.deleted_at IS '软删除时间'; -COMMENT ON COLUMN task_report.task_id IS '调控任务ID'; -COMMENT ON COLUMN task_report.datasource IS '数据源'; -COMMENT ON COLUMN task_report.report_date IS '报告日期'; -COMMENT ON COLUMN task_report.total_count IS '总数量'; -COMMENT ON COLUMN task_report.success_count IS '成功数量'; -COMMENT ON COLUMN task_report.fail_count IS '失败数量'; -COMMENT ON COLUMN task_report.skip_count IS '跳过数量'; -COMMENT ON COLUMN task_report.total_cost IS '总花费(元)'; -COMMENT ON COLUMN task_report.total_impression IS '总展示数'; -COMMENT ON COLUMN task_report.total_click IS '总点击数'; -COMMENT ON COLUMN task_report.total_conversion IS '总转化数'; -COMMENT ON COLUMN task_report.avg_ctr IS '平均点击率'; -COMMENT ON COLUMN task_report.avg_cpc IS '平均点击价格'; -COMMENT ON COLUMN task_report.avg_cpm IS '平均千次展现成本'; -COMMENT ON COLUMN task_report.avg_conversion_rate IS '平均转化率'; -COMMENT ON COLUMN task_report.avg_cpp IS '平均单次转化成本'; - -CREATE INDEX idx_task_report_task_id ON task_report(tenant_id, task_id); -CREATE INDEX idx_task_report_datasource ON task_report(tenant_id, datasource); -CREATE INDEX idx_task_report_report_date ON task_report(tenant_id, report_date); -CREATE UNIQUE INDEX idx_task_report_unique ON task_report(tenant_id, task_id, datasource, report_date); diff --git a/sql/09_tencent_account_relation.sql b/sql/09_tencent_account_relation.sql deleted file mode 100644 index 172599f..0000000 --- a/sql/09_tencent_account_relation.sql +++ /dev/null @@ -1,41 +0,0 @@ --- 腾讯广告账户关系表 -CREATE SEQUENCE IF NOT EXISTS tencent_account_relation_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS tencent_account_relation ( - id BIGINT NOT NULL DEFAULT nextval('tencent_account_relation_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - - -- 业务字段 - account_id BIGINT NOT NULL, - corporation_name VARCHAR(500), - comment_data_list JSONB, - is_adx BOOLEAN DEFAULT FALSE, - is_bid BOOLEAN DEFAULT FALSE, - is_mp BOOLEAN DEFAULT FALSE, - - PRIMARY KEY (id) -); - -COMMENT ON TABLE tencent_account_relation IS '腾讯广告账户关系表'; -COMMENT ON COLUMN tencent_account_relation.id IS '主键ID'; -COMMENT ON COLUMN tencent_account_relation.tenant_id IS '租户ID'; -COMMENT ON COLUMN tencent_account_relation.creator IS '创建人'; -COMMENT ON COLUMN tencent_account_relation.created_at IS '创建时间'; -COMMENT ON COLUMN tencent_account_relation.updater IS '更新人'; -COMMENT ON COLUMN tencent_account_relation.updated_at IS '更新时间'; -COMMENT ON COLUMN tencent_account_relation.deleted_at IS '软删除时间'; -COMMENT ON COLUMN tencent_account_relation.account_id IS '账户ID'; -COMMENT ON COLUMN tencent_account_relation.corporation_name IS '公司名称'; -COMMENT ON COLUMN tencent_account_relation.comment_data_list IS '备注数据列表'; -COMMENT ON COLUMN tencent_account_relation.is_adx IS '是否ADX'; -COMMENT ON COLUMN tencent_account_relation.is_bid IS '是否BID'; -COMMENT ON COLUMN tencent_account_relation.is_mp IS '是否MP'; - --- 唯一索引:根据account_id判断是否存在 -CREATE UNIQUE INDEX idx_tencent_account_relation_account_id ON tencent_account_relation(tenant_id, account_id); -CREATE INDEX idx_tencent_account_relation_corporation ON tencent_account_relation(tenant_id, corporation_name); diff --git a/sql/10_tencent_audio.sql b/sql/10_tencent_audio.sql deleted file mode 100644 index 534fc72..0000000 --- a/sql/10_tencent_audio.sql +++ /dev/null @@ -1,51 +0,0 @@ --- 腾讯广告音乐素材表 -CREATE SEQUENCE IF NOT EXISTS tencent_audio_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS tencent_audio ( - id BIGINT NOT NULL DEFAULT nextval('tencent_audio_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - - -- 业务字段 - audio_id VARCHAR(100) NOT NULL, - cover_image_url TEXT, - audio_name VARCHAR(500), - author VARCHAR(200), - duration NUMERIC(10, 2), - expire_time BIGINT, - feel_tags JSONB, - genre_tags JSONB, - - -- 本地校验状态 - verify_status VARCHAR(20) DEFAULT 'PENDING' NOT NULL, -- PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝 - verified_at TIMESTAMP WITH TIME ZONE, -- 校验时间 - verified_by VARCHAR(100), -- 校验人 - - PRIMARY KEY (id) -); - -COMMENT ON TABLE tencent_audio IS '腾讯广告音乐素材表'; -COMMENT ON COLUMN tencent_audio.id IS '主键ID'; -COMMENT ON COLUMN tencent_audio.tenant_id IS '租户ID'; -COMMENT ON COLUMN tencent_audio.creator IS '创建人'; -COMMENT ON COLUMN tencent_audio.created_at IS '创建时间'; -COMMENT ON COLUMN tencent_audio.updater IS '更新人'; -COMMENT ON COLUMN tencent_audio.updated_at IS '更新时间'; -COMMENT ON COLUMN tencent_audio.deleted_at IS '软删除时间'; -COMMENT ON COLUMN tencent_audio.audio_id IS '音乐ID'; -COMMENT ON COLUMN tencent_audio.cover_image_url IS '封面图片URL'; -COMMENT ON COLUMN tencent_audio.audio_name IS '音乐名称'; -COMMENT ON COLUMN tencent_audio.author IS '作者'; -COMMENT ON COLUMN tencent_audio.duration IS '时长(秒)'; -COMMENT ON COLUMN tencent_audio.expire_time IS '过期时间戳'; -COMMENT ON COLUMN tencent_audio.feel_tags IS '情感标签数组'; -COMMENT ON COLUMN tencent_audio.genre_tags IS '风格标签数组'; - --- 唯一索引:根据audio_id判断是否存在 -CREATE UNIQUE INDEX idx_tencent_audio_audio_id ON tencent_audio(tenant_id, audio_id); -CREATE INDEX idx_tencent_audio_author ON tencent_audio(tenant_id, author); -CREATE INDEX idx_tencent_audio_expire_time ON tencent_audio(expire_time); diff --git a/sql/11_tencent_image.sql b/sql/11_tencent_image.sql deleted file mode 100644 index d8c40ff..0000000 --- a/sql/11_tencent_image.sql +++ /dev/null @@ -1,100 +0,0 @@ --- 腾讯广告图片素材表 -CREATE SEQUENCE IF NOT EXISTS tencent_image_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS tencent_image ( - id BIGINT NOT NULL DEFAULT nextval('tencent_image_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - - -- 业务字段 - image_id VARCHAR(100) NOT NULL, - account_id BIGINT NOT NULL, - width INT, - height INT, - file_size BIGINT, - type VARCHAR(50), - signature VARCHAR(200), - description TEXT, - source_signature VARCHAR(200), - preview_url TEXT, - thumb_preview_url TEXT, - source_type VARCHAR(100), - image_usage VARCHAR(100), - created_time BIGINT, - last_modified_time BIGINT, - product_catalog_id BIGINT, - product_outer_id VARCHAR(200), - source_reference_id VARCHAR(200), - owner_account_id VARCHAR(100), - status VARCHAR(50), - sample_aspect_ratio VARCHAR(50), - source_material_id VARCHAR(100), - new_source_type VARCHAR(100), - first_publication_status VARCHAR(100), - quality_status VARCHAR(100), - similarity_status VARCHAR(100), - user_aigc_status VARCHAR(100), - system_aigc_status VARCHAR(100), - aigc_source VARCHAR(200), - aigc_flag VARCHAR(50), - muse_aigc_version INT, - aigc_type INT, - - -- 本地校验状态 - verify_status VARCHAR(20) DEFAULT 'PENDING' NOT NULL, -- PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝 - verified_at TIMESTAMP WITH TIME ZONE, -- 校验时间 - verified_by VARCHAR(100), -- 校验人 - - PRIMARY KEY (id) -); - -COMMENT ON TABLE tencent_image IS '腾讯广告图片素材表'; -COMMENT ON COLUMN tencent_image.id IS '主键ID'; -COMMENT ON COLUMN tencent_image.tenant_id IS '租户ID'; -COMMENT ON COLUMN tencent_image.creator IS '创建人'; -COMMENT ON COLUMN tencent_image.created_at IS '创建时间'; -COMMENT ON COLUMN tencent_image.updater IS '更新人'; -COMMENT ON COLUMN tencent_image.updated_at IS '更新时间'; -COMMENT ON COLUMN tencent_image.deleted_at IS '软删除时间'; -COMMENT ON COLUMN tencent_image.image_id IS '图片ID'; -COMMENT ON COLUMN tencent_image.account_id IS '账户ID'; -COMMENT ON COLUMN tencent_image.width IS '宽度'; -COMMENT ON COLUMN tencent_image.height IS '高度'; -COMMENT ON COLUMN tencent_image.file_size IS '文件大小'; -COMMENT ON COLUMN tencent_image.type IS '图片类型'; -COMMENT ON COLUMN tencent_image.signature IS '签名'; -COMMENT ON COLUMN tencent_image.description IS '描述'; -COMMENT ON COLUMN tencent_image.source_signature IS '源签名'; -COMMENT ON COLUMN tencent_image.preview_url IS '预览URL'; -COMMENT ON COLUMN tencent_image.thumb_preview_url IS '缩略图URL'; -COMMENT ON COLUMN tencent_image.source_type IS '来源类型'; -COMMENT ON COLUMN tencent_image.image_usage IS '图片用途'; -COMMENT ON COLUMN tencent_image.created_time IS '创建时间戳'; -COMMENT ON COLUMN tencent_image.last_modified_time IS '最后修改时间戳'; -COMMENT ON COLUMN tencent_image.product_catalog_id IS '产品目录ID'; -COMMENT ON COLUMN tencent_image.product_outer_id IS '产品外部ID'; -COMMENT ON COLUMN tencent_image.source_reference_id IS '源引用ID'; -COMMENT ON COLUMN tencent_image.owner_account_id IS '所有者账户ID'; -COMMENT ON COLUMN tencent_image.status IS '状态'; -COMMENT ON COLUMN tencent_image.sample_aspect_ratio IS '示例宽高比'; -COMMENT ON COLUMN tencent_image.source_material_id IS '源素材ID'; -COMMENT ON COLUMN tencent_image.new_source_type IS '新来源类型'; -COMMENT ON COLUMN tencent_image.first_publication_status IS '首次发布状态'; -COMMENT ON COLUMN tencent_image.quality_status IS '质量状态'; -COMMENT ON COLUMN tencent_image.similarity_status IS '相似度状态'; -COMMENT ON COLUMN tencent_image.user_aigc_status IS '用户AIGC状态'; -COMMENT ON COLUMN tencent_image.system_aigc_status IS '系统AIGC状态'; -COMMENT ON COLUMN tencent_image.aigc_source IS 'AIGC来源'; -COMMENT ON COLUMN tencent_image.aigc_flag IS 'AIGC标志'; -COMMENT ON COLUMN tencent_image.muse_aigc_version IS 'Muse AIGC版本'; -COMMENT ON COLUMN tencent_image.aigc_type IS 'AIGC类型'; - --- 唯一索引:根据image_id和account_id判断是否存在 -CREATE UNIQUE INDEX idx_tencent_image_image_account ON tencent_image(tenant_id, image_id, account_id); -CREATE INDEX idx_tencent_image_account_id ON tencent_image(account_id); -CREATE INDEX idx_tencent_image_last_modified ON tencent_image(last_modified_time); -CREATE INDEX idx_tencent_image_status ON tencent_image(status); diff --git a/sql/12_tencent_video.sql b/sql/12_tencent_video.sql deleted file mode 100644 index 778be18..0000000 --- a/sql/12_tencent_video.sql +++ /dev/null @@ -1,128 +0,0 @@ --- 腾讯广告视频素材表 -CREATE SEQUENCE IF NOT EXISTS tencent_video_id_seq START WITH 1 INCREMENT BY 1; - -CREATE TABLE IF NOT EXISTS tencent_video ( - id BIGINT NOT NULL DEFAULT nextval('tencent_video_id_seq'::regclass), - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(100) DEFAULT '', - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(100) DEFAULT '', - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE, - - -- 业务字段 - video_id VARCHAR(100) NOT NULL, - account_id BIGINT NOT NULL, - width INT, - height INT, - video_frames INT, - video_fps INT, - video_codec VARCHAR(50), - video_bit_rate BIGINT, - audio_codec VARCHAR(50), - audio_bit_rate BIGINT, - file_size BIGINT, - type VARCHAR(50), - signature VARCHAR(200), - system_status VARCHAR(50), - description TEXT, - preview_url TEXT, - key_frame_image_url TEXT, - created_time BIGINT, - last_modified_time BIGINT, - video_profile_name VARCHAR(50), - audio_sample_rate INT, - max_keyframe_interval INT, - min_keyframe_interval INT, - sample_aspect_ratio VARCHAR(50), - audio_profile_name VARCHAR(50), - scan_type VARCHAR(50), - image_duration_millisecond BIGINT, - audio_duration_millisecond BIGINT, - source_type VARCHAR(100), - product_catalog_id VARCHAR(200), - product_outer_id VARCHAR(200), - source_reference_id VARCHAR(200), - owner_account_id VARCHAR(100), - status VARCHAR(50), - source_material_id VARCHAR(100), - new_source_type VARCHAR(100), - aigc_type INT, - first_publication_status VARCHAR(100), - quality_status VARCHAR(100), - cover_id VARCHAR(100), - similarity_status VARCHAR(100), - user_aigc_status VARCHAR(100), - system_aigc_status VARCHAR(100), - aigc_source VARCHAR(200), - aigc_flag VARCHAR(50), - muse_aigc_version INT, - - -- 本地校验状态 - verify_status VARCHAR(20) DEFAULT 'PENDING' NOT NULL, -- PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝 - verified_at TIMESTAMP WITH TIME ZONE, -- 校验时间 - verified_by VARCHAR(100), -- 校验人 - - PRIMARY KEY (id) -); - -COMMENT ON TABLE tencent_video IS '腾讯广告视频素材表'; -COMMENT ON COLUMN tencent_video.id IS '主键ID'; -COMMENT ON COLUMN tencent_video.tenant_id IS '租户ID'; -COMMENT ON COLUMN tencent_video.creator IS '创建人'; -COMMENT ON COLUMN tencent_video.created_at IS '创建时间'; -COMMENT ON COLUMN tencent_video.updater IS '更新人'; -COMMENT ON COLUMN tencent_video.updated_at IS '更新时间'; -COMMENT ON COLUMN tencent_video.deleted_at IS '软删除时间'; -COMMENT ON COLUMN tencent_video.video_id IS '视频ID'; -COMMENT ON COLUMN tencent_video.account_id IS '账户ID'; -COMMENT ON COLUMN tencent_video.width IS '宽度'; -COMMENT ON COLUMN tencent_video.height IS '高度'; -COMMENT ON COLUMN tencent_video.video_frames IS '视频帧数'; -COMMENT ON COLUMN tencent_video.video_fps IS '帧率'; -COMMENT ON COLUMN tencent_video.video_codec IS '视频编码'; -COMMENT ON COLUMN tencent_video.video_bit_rate IS '视频码率'; -COMMENT ON COLUMN tencent_video.audio_codec IS '音频编码'; -COMMENT ON COLUMN tencent_video.audio_bit_rate IS '音频码率'; -COMMENT ON COLUMN tencent_video.file_size IS '文件大小'; -COMMENT ON COLUMN tencent_video.type IS '媒体类型'; -COMMENT ON COLUMN tencent_video.signature IS '签名'; -COMMENT ON COLUMN tencent_video.system_status IS '系统状态'; -COMMENT ON COLUMN tencent_video.description IS '描述'; -COMMENT ON COLUMN tencent_video.preview_url IS '预览URL'; -COMMENT ON COLUMN tencent_video.key_frame_image_url IS '关键帧图片URL'; -COMMENT ON COLUMN tencent_video.created_time IS '创建时间戳'; -COMMENT ON COLUMN tencent_video.last_modified_time IS '最后修改时间戳'; -COMMENT ON COLUMN tencent_video.video_profile_name IS '视频配置名称'; -COMMENT ON COLUMN tencent_video.audio_sample_rate IS '音频采样率'; -COMMENT ON COLUMN tencent_video.max_keyframe_interval IS '最大关键帧间隔'; -COMMENT ON COLUMN tencent_video.min_keyframe_interval IS '最小关键帧间隔'; -COMMENT ON COLUMN tencent_video.sample_aspect_ratio IS '示例宽高比'; -COMMENT ON COLUMN tencent_video.audio_profile_name IS '音频配置名称'; -COMMENT ON COLUMN tencent_video.scan_type IS '扫描类型'; -COMMENT ON COLUMN tencent_video.image_duration_millisecond IS '图片时长(毫秒)'; -COMMENT ON COLUMN tencent_video.audio_duration_millisecond IS '音频时长(毫秒)'; -COMMENT ON COLUMN tencent_video.source_type IS '来源类型'; -COMMENT ON COLUMN tencent_video.product_catalog_id IS '产品目录ID'; -COMMENT ON COLUMN tencent_video.product_outer_id IS '产品外部ID'; -COMMENT ON COLUMN tencent_video.source_reference_id IS '源引用ID'; -COMMENT ON COLUMN tencent_video.owner_account_id IS '所有者账户ID'; -COMMENT ON COLUMN tencent_video.status IS '状态'; -COMMENT ON COLUMN tencent_video.source_material_id IS '源素材ID'; -COMMENT ON COLUMN tencent_video.new_source_type IS '新来源类型'; -COMMENT ON COLUMN tencent_video.aigc_type IS 'AIGC类型'; -COMMENT ON COLUMN tencent_video.first_publication_status IS '首次发布状态'; -COMMENT ON COLUMN tencent_video.quality_status IS '质量状态'; -COMMENT ON COLUMN tencent_video.cover_id IS '封面ID'; -COMMENT ON COLUMN tencent_video.similarity_status IS '相似度状态'; -COMMENT ON COLUMN tencent_video.user_aigc_status IS '用户AIGC状态'; -COMMENT ON COLUMN tencent_video.system_aigc_status IS '系统AIGC状态'; -COMMENT ON COLUMN tencent_video.aigc_source IS 'AIGC来源'; -COMMENT ON COLUMN tencent_video.aigc_flag IS 'AIGC标志'; -COMMENT ON COLUMN tencent_video.muse_aigc_version IS 'Muse AIGC版本'; - --- 唯一索引:根据video_id和account_id判断是否存在 -CREATE UNIQUE INDEX idx_tencent_video_video_account ON tencent_video(tenant_id, video_id, account_id); -CREATE INDEX idx_tencent_video_account_id ON tencent_video(account_id); -CREATE INDEX idx_tencent_video_last_modified ON tencent_video(last_modified_time); -CREATE INDEX idx_tencent_video_status ON tencent_video(status); diff --git a/sql/init_core_tables.sql b/sql/init_core_tables.sql new file mode 100644 index 0000000..e8d13e8 --- /dev/null +++ b/sql/init_core_tables.sql @@ -0,0 +1,225 @@ +-- ============================================= +-- 数据引擎核心表初始化脚本 +-- 只需执行此文件即可,其他表由系统自动创建 +-- ============================================= + +-- ============================================= +-- 1. 数据源平台配置表 (api_datasource_platform) +-- ============================================= +CREATE SEQUENCE IF NOT EXISTS api_datasource_platform_id_seq START WITH 1 INCREMENT BY 1; + +CREATE TABLE IF NOT EXISTS api_datasource_platform ( + id BIGINT NOT NULL DEFAULT nextval('api_datasource_platform_id_seq'::regclass), + tenant_id BIGINT NOT NULL DEFAULT 0, + creator VARCHAR(100) DEFAULT '', + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(100) DEFAULT '', + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE, + platform_code VARCHAR(100) NOT NULL, + platform_name VARCHAR(200) NOT NULL, + description TEXT, + status VARCHAR(50) DEFAULT 'ACTIVE', + api_base_url VARCHAR(500), + auth_type VARCHAR(50) DEFAULT 'API_KEY', + token VARCHAR(500), + api_key VARCHAR(500), + client_id VARCHAR(200), + client_secret VARCHAR(500), + rate_limit_per_minute INT DEFAULT 60, + rate_limit_per_hour INT DEFAULT 3600, + concurrency_limit INT DEFAULT 10, + request_timeout_ms INT DEFAULT 30000, + max_retries INT DEFAULT 3, + retry_delay_ms INT DEFAULT 1000, + auth_config JSONB, + version INT DEFAULT 0, + PRIMARY KEY (id) +); + +CREATE UNIQUE INDEX idx_api_datasource_platform_code ON api_datasource_platform(tenant_id, platform_code); + +COMMENT ON TABLE api_datasource_platform IS '数据源平台配置表'; +COMMENT ON COLUMN api_datasource_platform.id IS '主键ID,自增长'; +COMMENT ON COLUMN api_datasource_platform.tenant_id IS '租户ID'; +COMMENT ON COLUMN api_datasource_platform.creator IS '创建人'; +COMMENT ON COLUMN api_datasource_platform.created_at IS '创建时间'; +COMMENT ON COLUMN api_datasource_platform.updater IS '更新人'; +COMMENT ON COLUMN api_datasource_platform.updated_at IS '更新时间'; +COMMENT ON COLUMN api_datasource_platform.deleted_at IS '软删除时间'; +COMMENT ON COLUMN api_datasource_platform.platform_code IS '平台编码,唯一标识'; +COMMENT ON COLUMN api_datasource_platform.platform_name IS '平台名称'; +COMMENT ON COLUMN api_datasource_platform.description IS '平台描述'; +COMMENT ON COLUMN api_datasource_platform.status IS '状态: ACTIVE启用, INACTIVE停用'; +COMMENT ON COLUMN api_datasource_platform.api_base_url IS 'API基础地址'; +COMMENT ON COLUMN api_datasource_platform.auth_type IS '认证类型: TOKEN/API_KEY/OAUTH2/BASIC'; +COMMENT ON COLUMN api_datasource_platform.token IS '认证token/密钥(access_token)'; +COMMENT ON COLUMN api_datasource_platform.api_key IS 'API Key'; +COMMENT ON COLUMN api_datasource_platform.client_id IS 'OAuth2 Client ID'; +COMMENT ON COLUMN api_datasource_platform.client_secret IS 'OAuth2 Client Secret'; +COMMENT ON COLUMN api_datasource_platform.rate_limit_per_minute IS '每分钟请求限制'; +COMMENT ON COLUMN api_datasource_platform.rate_limit_per_hour IS '每小时请求限制'; +COMMENT ON COLUMN api_datasource_platform.concurrency_limit IS '并发连接限制'; +COMMENT ON COLUMN api_datasource_platform.request_timeout_ms IS '请求超时时间(毫秒)'; +COMMENT ON COLUMN api_datasource_platform.max_retries IS '最大重试次数'; +COMMENT ON COLUMN api_datasource_platform.retry_delay_ms IS '重试延迟(毫秒)'; +COMMENT ON COLUMN api_datasource_platform.auth_config IS '自定义认证配置(JSONB),支持各平台特有的认证方式'; +COMMENT ON COLUMN api_datasource_platform.version IS '版本号(乐观锁)'; + +-- ============================================= +-- 2. API接口管理表 (api_interface) +-- ============================================= +CREATE SEQUENCE IF NOT EXISTS api_interface_id_seq START WITH 1 INCREMENT BY 1; + +CREATE TABLE IF NOT EXISTS api_interface ( + id BIGINT NOT NULL DEFAULT nextval('api_interface_id_seq'::regclass), + tenant_id BIGINT NOT NULL DEFAULT 0, + creator VARCHAR(100) DEFAULT '', + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(100) DEFAULT '', + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE, + platform_id BIGINT NOT NULL, + name VARCHAR(200) NOT NULL, + code VARCHAR(100) NOT NULL, + url VARCHAR(500) NOT NULL, + method VARCHAR(20) NOT NULL DEFAULT 'GET', + status VARCHAR(50) DEFAULT 'active', + auth_type VARCHAR(50) DEFAULT 'api_key', + request_config JSONB, + response_config JSONB, + limit_config JSONB, + table_definition JSONB, + PRIMARY KEY (id) +); + +CREATE UNIQUE INDEX idx_api_interface_code ON api_interface(tenant_id, code); +CREATE INDEX idx_api_interface_platform_id ON api_interface(tenant_id, platform_id); +CREATE INDEX idx_api_interface_status ON api_interface(tenant_id, status); + +COMMENT ON TABLE api_interface IS 'API接口管理表'; +COMMENT ON COLUMN api_interface.id IS '主键ID,自增长'; +COMMENT ON COLUMN api_interface.tenant_id IS '租户ID'; +COMMENT ON COLUMN api_interface.creator IS '创建人'; +COMMENT ON COLUMN api_interface.created_at IS '创建时间'; +COMMENT ON COLUMN api_interface.updater IS '更新人'; +COMMENT ON COLUMN api_interface.updated_at IS '更新时间'; +COMMENT ON COLUMN api_interface.deleted_at IS '软删除时间'; +COMMENT ON COLUMN api_interface.platform_id IS '所属平台ID'; +COMMENT ON COLUMN api_interface.name IS '接口名称'; +COMMENT ON COLUMN api_interface.code IS '接口编码,唯一'; +COMMENT ON COLUMN api_interface.url IS '接口地址(相对路径)'; +COMMENT ON COLUMN api_interface.method IS '请求方法: GET/POST/PUT/DELETE'; +COMMENT ON COLUMN api_interface.status IS '接口状态: active启用/inactive停用'; +COMMENT ON COLUMN api_interface.auth_type IS '认证类型: inherit(继承平台)/oauth2/apikey/basic'; +COMMENT ON COLUMN api_interface.request_config IS '请求配置(JSONB): 含分页参数、预取配置、时间字段等'; +COMMENT ON COLUMN api_interface.response_config IS '响应配置(JSONB): 自定义数据路径等'; +COMMENT ON COLUMN api_interface.limit_config IS '接口独立限流配置(JSONB): 可选,覆盖平台配置'; +COMMENT ON COLUMN api_interface.table_definition IS '表结构定义(JSONB): 描述目标表的字段结构,用于自动建表'; + +-- ============================================= +-- 3. 同步任务日志表 (sync_task_log) +-- 用于记录同步状态和补偿机制 +-- ============================================= +CREATE SEQUENCE IF NOT EXISTS sync_task_log_id_seq; + +CREATE TABLE IF NOT EXISTS sync_task_log ( + id BIGINT NOT NULL DEFAULT nextval('sync_task_log_id_seq'::regclass), + tenant_id BIGINT NOT NULL DEFAULT 0, + creator VARCHAR(64) DEFAULT '', + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE, + task_id VARCHAR(64) NOT NULL DEFAULT '', + task_type VARCHAR(64) NOT NULL DEFAULT '', + platform_code VARCHAR(100) NOT NULL DEFAULT '', + interface_code VARCHAR(100) NOT NULL DEFAULT '', + advertiser_id BIGINT NOT NULL DEFAULT 0, + start_time TIMESTAMP WITH TIME ZONE, + end_time TIMESTAMP WITH TIME ZONE, + status VARCHAR(32) NOT NULL DEFAULT '', + retry_count INT DEFAULT 0, + max_retry INT DEFAULT 3, + page_info JSONB, + request_params JSONB, + error_message TEXT DEFAULT '', + error_code VARCHAR(64) DEFAULT '', + result_summary JSONB, + next_retry_time TIMESTAMP WITH TIME ZONE, + completed_at TIMESTAMP WITH TIME ZONE, + duration_ms BIGINT DEFAULT 0, + PRIMARY KEY (id) +); + +CREATE INDEX idx_sync_task_log_task_id ON sync_task_log(tenant_id, task_id); +CREATE INDEX idx_sync_task_log_platform ON sync_task_log(tenant_id, platform_code); +CREATE INDEX idx_sync_task_log_interface ON sync_task_log(tenant_id, interface_code); +CREATE INDEX idx_sync_task_log_status ON sync_task_log(tenant_id, status); +CREATE INDEX idx_sync_task_log_created_at ON sync_task_log(tenant_id, created_at); +CREATE INDEX idx_sync_task_log_next_retry ON sync_task_log(tenant_id, next_retry_time); + +COMMENT ON TABLE sync_task_log IS '同步任务日志表,记录同步状态和补偿信息'; +COMMENT ON COLUMN sync_task_log.id IS '主键ID,自增长'; +COMMENT ON COLUMN sync_task_log.tenant_id IS '租户ID'; +COMMENT ON COLUMN sync_task_log.creator IS '创建人'; +COMMENT ON COLUMN sync_task_log.created_at IS '创建时间'; +COMMENT ON COLUMN sync_task_log.updater IS '更新人'; +COMMENT ON COLUMN sync_task_log.updated_at IS '更新时间'; +COMMENT ON COLUMN sync_task_log.deleted_at IS '软删除时间'; +COMMENT ON COLUMN sync_task_log.task_id IS '任务唯一标识'; +COMMENT ON COLUMN sync_task_log.task_type IS '任务类型: full(全量)/incremental(增量)/compensate(补偿)'; +COMMENT ON COLUMN sync_task_log.platform_code IS '平台编码'; +COMMENT ON COLUMN sync_task_log.interface_code IS '接口编码'; +COMMENT ON COLUMN sync_task_log.advertiser_id IS '广告主/账户ID'; +COMMENT ON COLUMN sync_task_log.start_time IS '数据开始时间'; +COMMENT ON COLUMN sync_task_log.end_time IS '数据结束时间'; +COMMENT ON COLUMN sync_task_log.status IS '任务状态: pending/running/success/failed/retrying/manual_review'; +COMMENT ON COLUMN sync_task_log.retry_count IS '已重试次数'; +COMMENT ON COLUMN sync_task_log.max_retry IS '最大重试次数'; +COMMENT ON COLUMN sync_task_log.page_info IS '分页信息快照(JSONB)'; +COMMENT ON COLUMN sync_task_log.request_params IS '请求参数快照(JSONB)'; +COMMENT ON COLUMN sync_task_log.error_message IS '错误信息'; +COMMENT ON COLUMN sync_task_log.error_code IS '错误码'; +COMMENT ON COLUMN sync_task_log.result_summary IS '结果摘要(JSONB)'; +COMMENT ON COLUMN sync_task_log.next_retry_time IS '下次重试时间'; +COMMENT ON COLUMN sync_task_log.completed_at IS '完成时间'; +COMMENT ON COLUMN sync_task_log.duration_ms IS '执行耗时(毫秒)'; + +-- ============================================= +-- 4. 同步跟踪表 (sync_tracker) +-- 记录每个平台+接口的最后同步时间,用于增量同步 +-- ============================================= +CREATE SEQUENCE IF NOT EXISTS sync_tracker_id_seq; + +CREATE TABLE IF NOT EXISTS sync_tracker ( + id BIGINT NOT NULL DEFAULT nextval('sync_tracker_id_seq'::regclass), + tenant_id BIGINT NOT NULL DEFAULT 0, + creator VARCHAR(64) DEFAULT '', + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE, + platform_code VARCHAR(100) NOT NULL, + interface_code VARCHAR(100) NOT NULL, + last_sync_time BIGINT NOT NULL DEFAULT 0, + last_sync_at TIMESTAMP WITH TIME ZONE, + sync_status VARCHAR(32) DEFAULT 'pending', + PRIMARY KEY (id) +); + +CREATE UNIQUE INDEX idx_sync_tracker_unique ON sync_tracker(platform_code, interface_code); + +COMMENT ON TABLE sync_tracker IS '同步跟踪表,记录增量同步时间戳'; +COMMENT ON COLUMN sync_tracker.id IS '主键ID,自增长'; +COMMENT ON COLUMN sync_tracker.tenant_id IS '租户ID'; +COMMENT ON COLUMN sync_tracker.creator IS '创建人'; +COMMENT ON COLUMN sync_tracker.created_at IS '创建时间'; +COMMENT ON COLUMN sync_tracker.updater IS '更新人'; +COMMENT ON COLUMN sync_tracker.updated_at IS '更新时间'; +COMMENT ON COLUMN sync_tracker.deleted_at IS '软删除时间'; +COMMENT ON COLUMN sync_tracker.platform_code IS '平台编码'; +COMMENT ON COLUMN sync_tracker.interface_code IS '接口编码'; +COMMENT ON COLUMN sync_tracker.last_sync_time IS '最后同步时间(Unix时间戳)'; +COMMENT ON COLUMN sync_tracker.last_sync_at IS '最后同步时间点'; +COMMENT ON COLUMN sync_tracker.sync_status IS '同步状态: pending/success/running/failed'; diff --git a/sql/seed_data.sql b/sql/seed_data.sql new file mode 100644 index 0000000..c600cf6 --- /dev/null +++ b/sql/seed_data.sql @@ -0,0 +1,228 @@ +-- ============================================= +-- 数据引擎初始化数据脚本 +-- 执行前请先执行 init_core_tables.sql +-- ============================================= + +-- ============================================= +-- 1. 创建腾讯广告平台 +-- 认证方式:OAuth2,access_token 放在 URL 查询参数 +-- API Base: https://api.e.qq.com/v3.0 +-- ============================================= +INSERT INTO api_datasource_platform ( + tenant_id, creator, created_at, updater, updated_at, + platform_code, platform_name, description, status, + api_base_url, auth_type, + token, client_id, client_secret, + auth_config, + rate_limit_per_minute, rate_limit_per_hour, + concurrency_limit, request_timeout_ms, max_retries, retry_delay_ms +) VALUES ( + 1, 'admin', NOW(), 'admin', NOW(), + 'tencent', '腾讯广告', '腾讯广告(广点通)数据同步', 'ACTIVE', + 'https://api.e.qq.com/v3.0', 'OAUTH2', + '4bacfc7c9b0a31f70ec0eb4771f8b542', + '1112038234', 'GxyjXFbZAs5dnsNQ', + '{ + "token_in_query": true, + "query_key": "access_token", + "refresh_token": "d15b37363a42449026d337708516e95e", + "extra_query_params": { + "timestamp": "{timestamp}", + "nonce": "{nonce}" + } + }'::jsonb, + 60, 3600, 10, 30000, 3, 1000 +); + +-- ============================================= +-- 2. 创建腾讯广告的接口配置 +-- 接口前缀:https://api.e.qq.com/v3.0 +-- ============================================= + +-- 2.1 账户关系接口(先获取所有账户ID) +INSERT INTO api_interface ( + tenant_id, creator, created_at, updater, updated_at, + platform_id, name, code, url, method, status, auth_type, + request_config, table_definition +) VALUES ( + 1, 'admin', NOW(), 'admin', NOW(), + 1, + '账户列表', 'account_relation', + '/advertiser/get', 'GET', 'active', 'inherit', + '{ + "parameters_location": "query", + "page": 1, + "page_size": 100, + "page_param": "page", + "page_size_param": "page_size", + "pagination_mode": "PAGINATION_MODE_NORMAL", + "fields": ["account_id", "corporation_name", "is_adx", "is_bid", "is_mp"] + }'::jsonb, + '{ + "table_name": "tencent_account_relation", + "columns": [ + {"name": "account_id", "type": "BIGINT", "comment": "账户ID"}, + {"name": "corporation_name", "type": "VARCHAR(300)", "comment": "企业名称"}, + {"name": "is_adx", "type": "BOOLEAN", "comment": "是否ADX账户"}, + {"name": "is_bid", "type": "BOOLEAN", "comment": "是否竞价账户"}, + {"name": "is_mp", "type": "BOOLEAN", "comment": "是否MP账户"} + ], + "conflict_keys": ["account_id"] + }'::jsonb +); + +-- 2.2 图片素材接口(遍历每个账户拉取图片) +INSERT INTO api_interface ( + tenant_id, creator, created_at, updater, updated_at, + platform_id, name, code, url, method, status, auth_type, + request_config, table_definition +) VALUES ( + 1, 'admin', NOW(), 'admin', NOW(), + 1, + '图片素材', 'image', + '/images/get', 'GET', 'active', 'inherit', + '{ + "parameters_location": "query", + "page": 1, + "page_size": 100, + "page_param": "page", + "page_size_param": "page_size", + "time_field": "last_modified_time", + "prefetch": { + "url": "/advertiser/get", + "method": "GET", + "response_path": "data.list", + "target_param": "account_id", + "value_field": "account_id" + } + }'::jsonb, + '{ + "table_name": "tencent_image", + "columns": [ + {"name": "image_id", "type": "VARCHAR(100)", "comment": "图片ID"}, + {"name": "account_id", "type": "BIGINT", "comment": "账户ID"}, + {"name": "width", "type": "INT", "comment": "宽度"}, + {"name": "height", "type": "INT", "comment": "高度"}, + {"name": "file_size", "type": "BIGINT", "comment": "文件大小"}, + {"name": "type", "type": "VARCHAR(50)", "comment": "图片类型"}, + {"name": "signature", "type": "VARCHAR(200)", "comment": "签名"}, + {"name": "description", "type": "TEXT", "comment": "描述"}, + {"name": "source_signature", "type": "VARCHAR(200)", "comment": "源签名"}, + {"name": "preview_url", "type": "TEXT", "comment": "预览URL"}, + {"name": "thumb_preview_url", "type": "TEXT", "comment": "缩略图URL"}, + {"name": "source_type", "type": "VARCHAR(50)", "comment": "来源类型"}, + {"name": "image_usage", "type": "VARCHAR(50)", "comment": "图片用途"}, + {"name": "created_time", "type": "BIGINT", "comment": "创建时间戳"}, + {"name": "last_modified_time", "type": "BIGINT", "comment": "最后修改时间戳"}, + {"name": "status", "type": "VARCHAR(50)", "comment": "状态"}, + {"name": "owner_account_id", "type": "VARCHAR(100)", "comment": "所有者账户ID"}, + {"name": "first_publication_status", "type": "VARCHAR(50)", "comment": "首次发布状态"}, + {"name": "quality_status", "type": "VARCHAR(50)", "comment": "质量状态"}, + {"name": "aigc_flag", "type": "VARCHAR(50)", "comment": "AIGC标志"}, + {"name": "aigc_type", "type": "INT", "comment": "AIGC类型"}, + {"name": "verify_status", "type": "VARCHAR(50) DEFAULT 'PENDING'", "comment": "校验状态"}, + {"name": "verified_at", "type": "TIMESTAMP WITH TIME ZONE", "comment": "校验时间"}, + {"name": "verified_by", "type": "VARCHAR(64)", "comment": "校验人"} + ], + "conflict_keys": ["image_id", "account_id"] + }'::jsonb +); + +-- 2.3 视频素材接口(遍历每个账户拉取视频) +INSERT INTO api_interface ( + tenant_id, creator, created_at, updater, updated_at, + platform_id, name, code, url, method, status, auth_type, + request_config, table_definition +) VALUES ( + 1, 'admin', NOW(), 'admin', NOW(), + 1, + '视频素材', 'video', + '/videos/get', 'GET', 'active', 'inherit', + '{ + "parameters_location": "query", + "page": 1, + "page_size": 100, + "page_param": "page", + "page_size_param": "page_size", + "time_field": "last_modified_time", + "prefetch": { + "url": "/advertiser/get", + "method": "GET", + "response_path": "data.list", + "target_param": "account_id", + "value_field": "account_id" + } + }'::jsonb, + '{ + "table_name": "tencent_video", + "columns": [ + {"name": "video_id", "type": "BIGINT", "comment": "视频ID"}, + {"name": "account_id", "type": "BIGINT", "comment": "账户ID"}, + {"name": "width", "type": "INT", "comment": "宽度"}, + {"name": "height", "type": "INT", "comment": "高度"}, + {"name": "video_frames", "type": "INT", "comment": "视频帧数"}, + {"name": "video_fps", "type": "DECIMAL(10,2)", "comment": "视频帧率"}, + {"name": "video_codec", "type": "VARCHAR(50)", "comment": "视频编码"}, + {"name": "video_bit_rate", "type": "BIGINT", "comment": "视频比特率"}, + {"name": "audio_codec", "type": "VARCHAR(50)", "comment": "音频编码"}, + {"name": "audio_bit_rate", "type": "BIGINT", "comment": "音频比特率"}, + {"name": "file_size", "type": "BIGINT", "comment": "文件大小"}, + {"name": "type", "type": "VARCHAR(50)", "comment": "视频类型"}, + {"name": "signature", "type": "VARCHAR(200)", "comment": "签名"}, + {"name": "system_status", "type": "VARCHAR(50)", "comment": "系统状态"}, + {"name": "description", "type": "TEXT", "comment": "描述"}, + {"name": "preview_url", "type": "TEXT", "comment": "预览URL"}, + {"name": "key_frame_image_url", "type": "TEXT", "comment": "关键帧图片URL"}, + {"name": "created_time", "type": "BIGINT", "comment": "创建时间戳"}, + {"name": "last_modified_time", "type": "BIGINT", "comment": "最后修改时间戳"}, + {"name": "status", "type": "VARCHAR(50)", "comment": "状态"}, + {"name": "owner_account_id", "type": "VARCHAR(100)", "comment": "所有者账户ID"}, + {"name": "cover_id", "type": "VARCHAR(100)", "comment": "封面ID"}, + {"name": "first_publication_status", "type": "VARCHAR(50)", "comment": "首次发布状态"}, + {"name": "quality_status", "type": "VARCHAR(50)", "comment": "质量状态"}, + {"name": "aigc_flag", "type": "VARCHAR(50)", "comment": "AIGC标志"}, + {"name": "muse_aigc_version", "type": "INT", "comment": "Muse AIGC版本"}, + {"name": "verify_status", "type": "VARCHAR(50) DEFAULT 'PENDING'", "comment": "校验状态"}, + {"name": "verified_at", "type": "TIMESTAMP WITH TIME ZONE", "comment": "校验时间"}, + {"name": "verified_by", "type": "VARCHAR(64)", "comment": "校验人"} + ], + "conflict_keys": ["video_id", "account_id"] + }'::jsonb +); + +-- 2.4 音频素材接口(POST + JSON Body,无需遍历账户) +-- 注意:此接口不依赖 account_id,不依赖 prefetch,不支持增量 +INSERT INTO api_interface ( + tenant_id, creator, created_at, updater, updated_at, + platform_id, name, code, url, method, status, auth_type, + request_config, table_definition +) VALUES ( + 1, 'admin', NOW(), 'admin', NOW(), + 1, + '音频素材', 'audio', + '/muse_audios/get', 'POST', 'active', 'inherit', + '{ + "page": 1, + "page_size": 100, + "page_param": "page", + "page_size_param": "page_size", + "fields": ["audio_id", "cover_image_url", "audio_name", "author", "duration", "expire_time", "feel_tags", "genre_tags"] + }'::jsonb, + '{ + "table_name": "tencent_audio", + "columns": [ + {"name": "audio_id", "type": "VARCHAR(100)", "comment": "音乐ID"}, + {"name": "audio_name", "type": "VARCHAR(500)", "comment": "音乐名称"}, + {"name": "author", "type": "VARCHAR(200)", "comment": "作者"}, + {"name": "duration", "type": "DECIMAL(10,2)", "comment": "时长(秒)"}, + {"name": "cover_image_url", "type": "TEXT", "comment": "封面图片URL"}, + {"name": "expire_time", "type": "BIGINT", "comment": "过期时间戳"}, + {"name": "feel_tags", "type": "JSONB", "comment": "情感标签"}, + {"name": "genre_tags", "type": "JSONB", "comment": "风格标签"}, + {"name": "verify_status", "type": "VARCHAR(50) DEFAULT 'PENDING'", "comment": "校验状态"}, + {"name": "verified_at", "type": "TIMESTAMP WITH TIME ZONE", "comment": "校验时间"}, + {"name": "verified_by", "type": "VARCHAR(64)", "comment": "校验人"} + ], + "conflict_keys": ["audio_id"] + }'::jsonb +); diff --git a/syncdata/account_report_sync.go b/syncdata/account_report_sync.go deleted file mode 100644 index d9f7654..0000000 --- a/syncdata/account_report_sync.go +++ /dev/null @@ -1,115 +0,0 @@ -package syncdata - -import ( - "context" - dto "dataengine/model/dto/copydata" - "dataengine/service/copydata" - "encoding/json" - "fmt" - - "github.com/sirupsen/logrus" -) - -type AccountReportSync struct { - *BaseReportSync - converter *DataConverter - mockGen *MockDataGenerator -} - -func NewAccountReportSync() *AccountReportSync { - return &AccountReportSync{ - BaseReportSync: NewBaseReportSync(), - converter: NewDataConverter(), - mockGen: NewMockDataGenerator(), - } -} - -func (c *AccountReportSync) FetchReport(ctx context.Context, params interface{}) (interface{}, error) { - req, ok := params.(*AccountReportRequest) - if !ok { - return nil, fmt.Errorf("参数类型错误,期望 AccountReportRequest 类型") - } - - useMock := false - - if useMock { - logrus.Info("使用 Mock 数据") - return c.mockGen.GenerateAccountReportResponse(), nil - } - - respBytes, err := NewHttpClient("https://ad.e.kuaishou.com", 0).Post(ctx, "/rest/openapi/gw/esp/report/accountReport", req) - if err != nil { - return nil, fmt.Errorf("调用 API 失败:%w", err) - } - - var response AccountReportResponse - if err := json.Unmarshal(respBytes, &response); err != nil { - return nil, fmt.Errorf("解析响应失败:%w", err) - } - - if response.Code != 0 { - return nil, fmt.Errorf("API 返回错误:code=%d, message=%s", response.Code, response.Message) - } - - return &response, nil -} - -func (c *AccountReportSync) ConvertToSum(apiData interface{}, dataType string) interface{} { - response, ok := apiData.(*AccountReportResponse) - if !ok || response.Data == nil || response.Data.Sum == nil { - return nil - } - - return c.converter.ConvertToSumItem(response.Data.Sum, dataType, 0) -} - -func (c *AccountReportSync) ConvertToDetails(apiData interface{}, dataType string) []interface{} { - response, ok := apiData.(*AccountReportResponse) - if !ok || response.Data == nil || len(response.Data.Detail) == 0 { - return nil - } - - detailItems := c.converter.ConvertToDetailItems(response.Data.Detail, dataType, 0) - - result := make([]interface{}, len(detailItems)) - for i, item := range detailItems { - result[i] = item - } - return result -} - -func (c *AccountReportSync) SaveSum(ctx context.Context, data interface{}) (int64, error) { - sumItem, ok := data.(*dto.CidAccountReportSumItem) - if !ok { - return 0, fmt.Errorf("数据类型错误,期望 CidAccountReportSumItem 类型") - } - - res, err := copydata.CidAccountReportDetail.CreateSum(ctx, sumItem) - if err != nil { - return 0, err - } - - return res.Id, nil -} - -func (c *AccountReportSync) SaveDetails(ctx context.Context, data []interface{}) (int64, int64, error) { - detailItems := make([]*dto.CidAccountReportDetailItem, len(data)) - for i, item := range data { - detailItem, ok := item.(*dto.CidAccountReportDetailItem) - if !ok { - return 0, 0, fmt.Errorf("第 %d 条数据类型错误", i) - } - detailItems[i] = detailItem - } - - req := &dto.BatchCreateCidAccountReportDetailReq{ - Items: detailItems, - } - - res, err := copydata.CidAccountReportDetail.BatchCreate(ctx, req) - if err != nil { - return 0, 0, err - } - - return res.SuccessCount, res.FailCount, nil -} diff --git a/syncdata/account_report_types.go b/syncdata/account_report_types.go deleted file mode 100644 index a536cd1..0000000 --- a/syncdata/account_report_types.go +++ /dev/null @@ -1,235 +0,0 @@ -package syncdata - -type AccountReportRequest 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 *AccountSelectParam `json:"select_param,omitempty"` - PageInfo *PageInfo `json:"page_info,omitempty"` -} - -type AccountSelectParam 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"` -} - -type PageInfo struct { - CurrentPage int `json:"current_page"` - PageSize int `json:"page_size"` - TotalCount int `json:"total_count"` -} - -type AccountReportResponse struct { - Code int `json:"code"` - Message string `json:"message"` - Data *AccountReportData `json:"data"` -} - -type AccountReportData struct { - Sum *AccountReportSum `json:"sum"` - Detail []*AccountReportItem `json:"detail"` - TotalCount int `json:"total_count"` -} - -type AccountReportSum 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"` - ItemOrderConversionRatio *float64 `json:"item_order_conversion_ratio"` - ItemCardClickRatio *float64 `json:"item_card_click_ratio"` - ItemCardClkCnt *int64 `json:"item_card_clk_cnt"` - LivePlayCntCost *float64 `json:"live_play_cnt_cost"` - AdMerchantFollowCost *float64 `json:"ad_merchant_follow_cost"` - AdMerchantFollow *int64 `json:"ad_merchant_follow"` - NetT0OrderCnt *int64 `json:"net_t0_order_cnt"` - NetT0Roi *float64 `json:"net_t0_roi"` - NetT0Gmv *float64 `json:"net_t0_gmv"` - 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"` - AdPhotoPlayedFiveRatio *float64 `json:"ad_photo_played_five_ratio"` - AdPhotoPlayedThreeRatio *float64 `json:"ad_photo_played_three_ratio"` - OrderSubmitRoi *float64 `json:"order_submit_roi"` - OrderSubmitAmt *int64 `json:"order_submit_amt"` - EventOrderSubmitCost *float64 `json:"event_order_submit_cost"` - EventOrderSubmit *int64 `json:"event_order_submit"` - EventOrderPaidRoi *float64 `json:"event_order_paid_roi"` - EventAppInvoked *int64 `json:"event_app_invoked"` - EventAddShoppingCart *int64 `json:"event_add_shopping_cart"` - ConversionNumCost *float64 `json:"conversion_num_cost"` - AdEffectivePlayNum *int64 `json:"ad_effective_play_num"` - AdItemClick *int64 `json:"ad_item_click"` - MerchantProductId string `json:"merchant_product_id"` - CostTotal *float64 `json:"cost_total"` - AdShow *int64 `json:"ad_show"` - AdShow1kCost *float64 `json:"ad_show1k_cost"` - Impression *int64 `json:"impression"` - PhotoClick *int64 `json:"photo_click"` - PhotoClickRatio *float64 `json:"photo_click_ratio"` - Click *int64 `json:"click"` - ActionbarClick *int64 `json:"actionbar_click"` - ActionbarClickCost *float64 `json:"actionbar_click_cost"` - EspClickRatio *float64 `json:"esp_click_ratio"` - ActionRatio *float64 `json:"action_ratio"` - AdItemClickCount *int64 `json:"ad_item_click_count"` - EspLivePlayedSeconds *int64 `json:"esp_live_played_seconds"` - PlayedThreeSeconds *int64 `json:"played_three_seconds"` - Play3sRatio *float64 `json:"play3s_ratio"` - PlayedFiveSeconds *int64 `json:"played_five_seconds"` - Play5sRatio *float64 `json:"play5s_ratio"` - PlayedEnd *int64 `json:"played_end"` - PlayEndRatio *float64 `json:"play_end_ratio"` - Share *int64 `json:"share"` - Comment *int64 `json:"comment"` - Likes *int64 `json:"likes"` - Report *int64 `json:"report"` - Block *int64 `json:"block"` - ItemNegative *int64 `json:"item_negative"` - LiveShare *int64 `json:"live_share"` - LiveComment *int64 `json:"live_comment"` - LiveReward *int64 `json:"live_reward"` - EffectivePlayCount *int64 `json:"effective_play_count"` - EffectivePlayRatio *float64 `json:"effective_play_ratio"` - ConversionNum *int64 `json:"conversion_num"` - ConversionCostEsp *float64 `json:"conversion_cost_esp"` - Roi *float64 `json:"roi"` - Gmv *float64 `json:"gmv"` - T0Gmv *float64 `json:"t0_gmv"` - T1Gmv *float64 `json:"t1_gmv"` - T7Gmv *float64 `json:"t7_gmv"` - T15Gmv *float64 `json:"t15_gmv"` - T30Gmv *float64 `json:"t30_gmv"` - T0Roi *float64 `json:"t0_roi"` - T1Roi *float64 `json:"t1_roi"` - T7Roi *float64 `json:"t7_roi"` - T15Roi *float64 `json:"t15_roi"` - T30Roi *float64 `json:"t30_roi"` - PaiedOrder *int64 `json:"paied_order"` - OrderRatio *float64 `json:"order_ratio"` - T0OrderCnt *int64 `json:"t0_order_cnt"` - T0OrderCntCost *float64 `json:"t0_order_cnt_cost"` - T0OrderCntRatio *float64 `json:"t0_order_cnt_ratio"` - T1OrderCnt *int64 `json:"t1_order_cnt"` - T3OrderCnt *int64 `json:"t3_order_cnt"` - T7OrderCnt *int64 `json:"t7_order_cnt"` - T15OrderCnt *int64 `json:"t15_order_cnt"` - T30OrderCnt *int64 `json:"t30_order_cnt"` - MerchantRecoFans *int64 `json:"merchant_reco_fans"` - T1Retention *float64 `json:"t1_retention"` - T7Retention *float64 `json:"t7_retention"` - T15Retention *float64 `json:"t15_retention"` - T30Retention *float64 `json:"t30_retention"` - T1RetentionRatio *float64 `json:"t1_retention_ratio"` - T7RetentionRatio *float64 `json:"t7_retention_ratio"` - T15RetentionRatio *float64 `json:"t15_retention_ratio"` - T30RetentionRatio *float64 `json:"t30_retention_ratio"` - ReservationSuccess *int64 `json:"reservation_success"` - ReservationCost *float64 `json:"reservation_cost"` - StandardLivePlayedStarted *int64 `json:"standard_live_played_started"` - AdLivePlayCnt *int64 `json:"ad_live_play_cnt"` - AdLivePlayCntCost *float64 `json:"ad_live_play_cnt_cost"` - LiveAudienceCost *float64 `json:"live_audience_cost"` - LiveEventGoodsView *int64 `json:"live_event_goods_view"` - GoodsClickRatio *float64 `json:"goods_click_ratio"` - DirectAttrPlatNewBuyerCnt *int64 `json:"direct_attr_plat_new_buyer_cnt"` - T30AttrPlatTotalBuyerCnt *int64 `json:"t30_attr_plat_total_buyer_cnt"` - DirectAttrSellerNewBuyerCnt *int64 `json:"direct_attr_seller_new_buyer_cnt"` - T30AttrSellerTotalBuyerCnt *int64 `json:"t30_attr_seller_total_buyer_cnt"` - T3Gmv *float64 `json:"t3_gmv"` - T3Roi *float64 `json:"t3_roi"` - T7IndirectOrderAmt *float64 `json:"t7_indirect_order_amt"` - T7IndirectOrderCnt *int64 `json:"t7_indirect_order_cnt"` - FansT0GmvPerFans *float64 `json:"fans_t0_gmv_per_fans"` - FansT3GmvPerFans *float64 `json:"fans_t3_gmv_per_fans"` - FansT7GmvPerFans *float64 `json:"fans_t7_gmv_per_fans"` - FansT15GmvPerFans *float64 `json:"fans_t15_gmv_per_fans"` - FansT30GmvPerFans *float64 `json:"fans_t30_gmv_per_fans"` - RecoFansCost *float64 `json:"reco_fans_cost"` - QcpxWhiteboxDirectOrderPaymentAmt *float64 `json:"qcpx_whitebox_direct_order_payment_amt"` - QcpxWhiteboxDirectOrderCnt *int64 `json:"qcpx_whitebox_direct_order_cnt"` - FansT0Gmv *float64 `json:"fans_t0_gmv"` - FansT1Gmv *float64 `json:"fans_t1_gmv"` - FansT7Gmv *float64 `json:"fans_t7_gmv"` - FansT15Gmv *float64 `json:"fans_t15_gmv"` - FansT30Gmv *float64 `json:"fans_t30_gmv"` - FansT0Roi *float64 `json:"fans_t0_roi"` - FansT1Roi *float64 `json:"fans_t1_roi"` - FansT7Roi *float64 `json:"fans_t7_roi"` - FansT15Roi *float64 `json:"fans_t15_roi"` - FansT30Roi *float64 `json:"fans_t30_roi"` - T0ShopNewBuyerOrderPaymentAmt *float64 `json:"t0_shop_new_buyer_order_payment_amt"` - T1ShopNewBuyerOrderPaymentAmt *float64 `json:"t1_shop_new_buyer_order_payment_amt"` - T3ShopNewBuyerOrderPaymentAmt *float64 `json:"t3_shop_new_buyer_order_payment_amt"` - T7ShopNewBuyerOrderPaymentAmt *float64 `json:"t7_shop_new_buyer_order_payment_amt"` - T15ShopNewBuyerOrderPaymentAmt *float64 `json:"t15_shop_new_buyer_order_payment_amt"` - T30ShopNewBuyerOrderPaymentAmt *float64 `json:"t30_shop_new_buyer_order_payment_amt"` - T0ShopNewBuyerOrderCnt *int64 `json:"t0_shop_new_buyer_order_cnt"` - T1ShopNewBuyerOrderCnt *int64 `json:"t1_shop_new_buyer_order_cnt"` - T3ShopNewBuyerOrderCnt *int64 `json:"t3_shop_new_buyer_order_cnt"` - T7ShopNewBuyerOrderCnt *int64 `json:"t7_shop_new_buyer_order_cnt"` - T15ShopNewBuyerOrderCnt *int64 `json:"t15_shop_new_buyer_order_cnt"` - T30ShopNewBuyerOrderCnt *int64 `json:"t30_shop_new_buyer_order_cnt"` - T1NewBuyerRepurchaseRatio *float64 `json:"t1_new_buyer_repurchase_ratio"` - T3NewBuyerRepurchaseRatio *float64 `json:"t3_new_buyer_repurchase_ratio"` - T7NewBuyerRepurchaseRatio *float64 `json:"t7_new_buyer_repurchase_ratio"` - T15NewBuyerRepurchaseRatio *float64 `json:"t15_new_buyer_repurchase_ratio"` - T30NewBuyerRepurchaseRatio *float64 `json:"t30_new_buyer_repurchase_ratio"` - T0ShopNewBuyerRoi *float64 `json:"t0_shop_new_buyer_roi"` - T1ShopNewBuyerRoi *float64 `json:"t1_shop_new_buyer_roi"` - T3ShopNewBuyerRoi *float64 `json:"t3_shop_new_buyer_roi"` - T7ShopNewBuyerRoi *float64 `json:"t7_shop_new_buyer_roi"` - T15ShopNewBuyerRoi *float64 `json:"t15_shop_new_buyer_roi"` - T30ShopNewBuyerRoi *float64 `json:"t30_shop_new_buyer_roi"` - CreateCardOrderCnt *int64 `json:"create_card_order_cnt"` - ForwardTsCreateCardOrderCnt *int64 `json:"forward_ts_create_card_order_cnt"` - CreateCardOrderCost *float64 `json:"create_card_order_cost"` - ForwardTsCreateCardOrderCost *float64 `json:"forward_ts_create_card_order_cost"` - ActivateCardOrderCnt *int64 `json:"activate_card_order_cnt"` - ForwardTsActivateCardOrderCnt *int64 `json:"forward_ts_activate_card_order_cnt"` - ActivateCardOrderCost *float64 `json:"activate_card_order_cost"` - ForwardTsActivateCardOrderCost *float64 `json:"forward_ts_activate_card_order_cost"` - CreateCardOrderRatio *float64 `json:"create_card_order_ratio"` - ForwardTsCreateCardOrderRatio *float64 `json:"forward_ts_create_card_order_ratio"` - ActivateCardOrderCntRatio *float64 `json:"activate_card_order_cnt_ratio"` - ForwardTsActivateCardOrderRatio *float64 `json:"forward_ts_activate_card_order_ratio"` - LivePlayCnt *int64 `json:"live_play_cnt"` - ItemEntranceClkCnt *int64 `json:"item_entrance_clk_cnt"` - ShowCnt *int64 `json:"show_cnt"` - 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"` - CidActualRoiAfterSubsidy *float64 `json:"cid_actual_roi_after_subsidy"` - CidCouponAmount *int64 `json:"cid_coupon_amount"` - CidCouponCallbackPaidRefundAmount *int64 `json:"cid_coupon_callback_paid_refund_amount"` - CidVoucherCost *float64 `json:"cid_voucher_cost"` -} - -type AccountReportItem AccountReportSum diff --git a/syncdata/base_report_sync.go b/syncdata/base_report_sync.go deleted file mode 100644 index b09f687..0000000 --- a/syncdata/base_report_sync.go +++ /dev/null @@ -1,79 +0,0 @@ -package syncdata - -import ( - "context" -) - -type ReportSyncable interface { - FetchReport(ctx context.Context, params interface{}) (interface{}, error) - ConvertToSum(apiData interface{}, dataType string) interface{} - ConvertToDetails(apiData interface{}, dataType string) []interface{} - SaveSum(ctx context.Context, data interface{}) (int64, error) - SaveDetails(ctx context.Context, data []interface{}) (successCount, failCount int64, err error) -} - -type BaseReportSync struct { - httpClient *HttpClient -} - -func NewBaseReportSync() *BaseReportSync { - return &BaseReportSync{ - httpClient: NewHttpClient("", 0), - } -} - -func (b *BaseReportSync) FetchReport(ctx context.Context, params interface{}) (interface{}, error) { - return nil, nil -} - -func (b *BaseReportSync) ConvertToSum(apiData interface{}, dataType string) interface{} { - return nil -} - -func (b *BaseReportSync) ConvertToDetails(apiData interface{}, dataType string) []interface{} { - return nil -} - -func (b *BaseReportSync) SaveSum(ctx context.Context, data interface{}) (int64, error) { - return 0, nil -} - -func (b *BaseReportSync) SaveDetails(ctx context.Context, data []interface{}) (int64, int64, error) { - return 0, 0, nil -} - -func (b *BaseReportSync) ExecuteSync(ctx context.Context, syncer ReportSyncable, params interface{}, dataType string, useMock bool) (*SyncResult, error) { - result := &SyncResult{} - - apiData, err := syncer.FetchReport(ctx, params) - if err != nil { - result.Error = err - return result, err - } - - sumData := syncer.ConvertToSum(apiData, dataType) - if sumData != nil { - sumID, err := syncer.SaveSum(ctx, sumData) - if err != nil { - result.Error = err - return result, err - } - result.SumSuccess = true - result.SumID = sumID - } - - detailData := syncer.ConvertToDetails(apiData, dataType) - if len(detailData) > 0 { - successCount, failCount, err := syncer.SaveDetails(ctx, detailData) - if err != nil { - result.Error = err - return result, err - } - result.DetailSuccess = true - result.DetailCount = len(detailData) - result.DetailSuccessCount = successCount - result.DetailFailCount = failCount - } - - return result, nil -} diff --git a/syncdata/data_converter.go b/syncdata/data_converter.go deleted file mode 100644 index 539257c..0000000 --- a/syncdata/data_converter.go +++ /dev/null @@ -1,417 +0,0 @@ -package syncdata - -import ( - "dataengine/model/dto/copydata" -) - -type DataConverter struct{} - -func NewDataConverter() *DataConverter { - return &DataConverter{} -} - -func (c *DataConverter) ConvertToSumItem(apiData *AccountReportSum, dataType string, pageNumber int) *copydata.CidAccountReportSumItem { - if apiData == nil { - return nil - } - - return ©data.CidAccountReportSumItem{ - DataType: dataType, - T0OrderPaymentAmt: apiData.T0OrderPaymentAmt, - CreativeMaterialType: apiData.CreativeMaterialType, - LiveName: apiData.LiveName, - AuthorId: apiData.AuthorId, - PicUrl: apiData.PicUrl, - PicName: apiData.PicName, - PicId: apiData.PicId, - CoverUrl: apiData.CoverUrl, - CoverId: apiData.CoverId, - ItemOrderConversionRatio: apiData.ItemOrderConversionRatio, - ItemCardClickRatio: apiData.ItemCardClickRatio, - ItemCardClkCnt: apiData.ItemCardClkCnt, - LivePlayCntCost: apiData.LivePlayCntCost, - AdMerchantFollowCost: apiData.AdMerchantFollowCost, - AdMerchantFollow: apiData.AdMerchantFollow, - NetT0OrderCnt: apiData.NetT0OrderCnt, - NetT0Roi: apiData.NetT0Roi, - NetT0Gmv: apiData.NetT0Gmv, - PhotoName: apiData.PhotoName, - PhotoIdStr: apiData.PhotoIdStr, - PhotoId: apiData.PhotoId, - ModPriceSegment: apiData.ModPriceSegment, - AgeSegment: apiData.AgeSegment, - Province: apiData.Province, - Gender: apiData.Gender, - AdPhotoPlayedFiveRatio: apiData.AdPhotoPlayedFiveRatio, - AdPhotoPlayedThreeRatio: apiData.AdPhotoPlayedThreeRatio, - OrderSubmitRoi: apiData.OrderSubmitRoi, - OrderSubmitAmt: apiData.OrderSubmitAmt, - EventOrderSubmitCost: apiData.EventOrderSubmitCost, - EventOrderSubmit: apiData.EventOrderSubmit, - EventOrderPaidRoi: apiData.EventOrderPaidRoi, - EventAppInvoked: apiData.EventAppInvoked, - EventAddShoppingCart: apiData.EventAddShoppingCart, - ConversionNumCost: apiData.ConversionNumCost, - AdEffectivePlayNum: apiData.AdEffectivePlayNum, - AdItemClick: apiData.AdItemClick, - MerchantProductId: apiData.MerchantProductId, - CostTotal: apiData.CostTotal, - AdShow: apiData.AdShow, - AdShow1kCost: apiData.AdShow1kCost, - Impression: apiData.Impression, - PhotoClick: apiData.PhotoClick, - PhotoClickRatio: apiData.PhotoClickRatio, - Click: apiData.Click, - ActionbarClick: apiData.ActionbarClick, - ActionbarClickCost: apiData.ActionbarClickCost, - EspClickRatio: apiData.EspClickRatio, - ActionRatio: apiData.ActionRatio, - AdItemClickCount: apiData.AdItemClickCount, - EspLivePlayedSeconds: apiData.EspLivePlayedSeconds, - PlayedThreeSeconds: apiData.PlayedThreeSeconds, - Play3sRatio: apiData.Play3sRatio, - PlayedFiveSeconds: apiData.PlayedFiveSeconds, - Play5sRatio: apiData.Play5sRatio, - PlayedEnd: apiData.PlayedEnd, - PlayEndRatio: apiData.PlayEndRatio, - Share: apiData.Share, - Comment: apiData.Comment, - Likes: apiData.Likes, - Report: apiData.Report, - Block: apiData.Block, - ItemNegative: apiData.ItemNegative, - LiveShare: apiData.LiveShare, - LiveComment: apiData.LiveComment, - LiveReward: apiData.LiveReward, - EffectivePlayCount: apiData.EffectivePlayCount, - EffectivePlayRatio: apiData.EffectivePlayRatio, - ConversionNum: apiData.ConversionNum, - ConversionCostEsp: apiData.ConversionCostEsp, - Roi: apiData.Roi, - Gmv: apiData.Gmv, - T0Gmv: apiData.T0Gmv, - T1Gmv: apiData.T1Gmv, - T3Gmv: apiData.T3Gmv, - T7Gmv: apiData.T7Gmv, - T15Gmv: apiData.T15Gmv, - T30Gmv: apiData.T30Gmv, - T0Roi: apiData.T0Roi, - T1Roi: apiData.T1Roi, - T3Roi: apiData.T3Roi, - T7Roi: apiData.T7Roi, - T15Roi: apiData.T15Roi, - T30Roi: apiData.T30Roi, - PaiedOrder: apiData.PaiedOrder, - OrderRatio: apiData.OrderRatio, - T0OrderCnt: apiData.T0OrderCnt, - T0OrderCntCost: apiData.T0OrderCntCost, - T0OrderCntRatio: apiData.T0OrderCntRatio, - T1OrderCnt: apiData.T1OrderCnt, - T3OrderCnt: apiData.T3OrderCnt, - T7OrderCnt: apiData.T7OrderCnt, - T15OrderCnt: apiData.T15OrderCnt, - T30OrderCnt: apiData.T30OrderCnt, - MerchantRecoFans: apiData.MerchantRecoFans, - T1Retention: apiData.T1Retention, - T7Retention: apiData.T7Retention, - T15Retention: apiData.T15Retention, - T30Retention: apiData.T30Retention, - T1RetentionRatio: apiData.T1RetentionRatio, - T7RetentionRatio: apiData.T7RetentionRatio, - T15RetentionRatio: apiData.T15RetentionRatio, - T30RetentionRatio: apiData.T30RetentionRatio, - ReservationSuccess: apiData.ReservationSuccess, - ReservationCost: apiData.ReservationCost, - StandardLivePlayedStarted: apiData.StandardLivePlayedStarted, - AdLivePlayCnt: apiData.AdLivePlayCnt, - AdLivePlayCntCost: apiData.AdLivePlayCntCost, - LiveAudienceCost: apiData.LiveAudienceCost, - LiveEventGoodsView: apiData.LiveEventGoodsView, - GoodsClickRatio: apiData.GoodsClickRatio, - DirectAttrPlatNewBuyerCnt: apiData.DirectAttrPlatNewBuyerCnt, - T30AttrPlatTotalBuyerCnt: apiData.T30AttrPlatTotalBuyerCnt, - DirectAttrSellerNewBuyerCnt: apiData.DirectAttrSellerNewBuyerCnt, - T30AttrSellerTotalBuyerCnt: apiData.T30AttrSellerTotalBuyerCnt, - T7IndirectOrderAmt: apiData.T7IndirectOrderAmt, - T7IndirectOrderCnt: apiData.T7IndirectOrderCnt, - FansT0GmvPerFans: apiData.FansT0GmvPerFans, - FansT3GmvPerFans: apiData.FansT3GmvPerFans, - FansT7GmvPerFans: apiData.FansT7GmvPerFans, - FansT15GmvPerFans: apiData.FansT15GmvPerFans, - FansT30GmvPerFans: apiData.FansT30GmvPerFans, - RecoFansCost: apiData.RecoFansCost, - QcpxWhiteboxDirectOrderPaymentAmt: apiData.QcpxWhiteboxDirectOrderPaymentAmt, - QcpxWhiteboxDirectOrderCnt: apiData.QcpxWhiteboxDirectOrderCnt, - FansT0Gmv: apiData.FansT0Gmv, - FansT1Gmv: apiData.FansT1Gmv, - FansT7Gmv: apiData.FansT7Gmv, - FansT15Gmv: apiData.FansT15Gmv, - FansT30Gmv: apiData.FansT30Gmv, - FansT0Roi: apiData.FansT0Roi, - FansT1Roi: apiData.FansT1Roi, - FansT7Roi: apiData.FansT7Roi, - FansT15Roi: apiData.FansT15Roi, - FansT30Roi: apiData.FansT30Roi, - T0ShopNewBuyerOrderPaymentAmt: apiData.T0ShopNewBuyerOrderPaymentAmt, - T1ShopNewBuyerOrderPaymentAmt: apiData.T1ShopNewBuyerOrderPaymentAmt, - T3ShopNewBuyerOrderPaymentAmt: apiData.T3ShopNewBuyerOrderPaymentAmt, - T7ShopNewBuyerOrderPaymentAmt: apiData.T7ShopNewBuyerOrderPaymentAmt, - T15ShopNewBuyerOrderPaymentAmt: apiData.T15ShopNewBuyerOrderPaymentAmt, - T30ShopNewBuyerOrderPaymentAmt: apiData.T30ShopNewBuyerOrderPaymentAmt, - T0ShopNewBuyerOrderCnt: apiData.T0ShopNewBuyerOrderCnt, - T1ShopNewBuyerOrderCnt: apiData.T1ShopNewBuyerOrderCnt, - T3ShopNewBuyerOrderCnt: apiData.T3ShopNewBuyerOrderCnt, - T7ShopNewBuyerOrderCnt: apiData.T7ShopNewBuyerOrderCnt, - T15ShopNewBuyerOrderCnt: apiData.T15ShopNewBuyerOrderCnt, - T30ShopNewBuyerOrderCnt: apiData.T30ShopNewBuyerOrderCnt, - T1NewBuyerRepurchaseRatio: apiData.T1NewBuyerRepurchaseRatio, - T3NewBuyerRepurchaseRatio: apiData.T3NewBuyerRepurchaseRatio, - T7NewBuyerRepurchaseRatio: apiData.T7NewBuyerRepurchaseRatio, - T15NewBuyerRepurchaseRatio: apiData.T15NewBuyerRepurchaseRatio, - T30NewBuyerRepurchaseRatio: apiData.T30NewBuyerRepurchaseRatio, - T0ShopNewBuyerRoi: apiData.T0ShopNewBuyerRoi, - T1ShopNewBuyerRoi: apiData.T1ShopNewBuyerRoi, - T3ShopNewBuyerRoi: apiData.T3ShopNewBuyerRoi, - T7ShopNewBuyerRoi: apiData.T7ShopNewBuyerRoi, - T15ShopNewBuyerRoi: apiData.T15ShopNewBuyerRoi, - T30ShopNewBuyerRoi: apiData.T30ShopNewBuyerRoi, - CreateCardOrderCnt: apiData.CreateCardOrderCnt, - ForwardTsCreateCardOrderCnt: apiData.ForwardTsCreateCardOrderCnt, - CreateCardOrderCost: apiData.CreateCardOrderCost, - ForwardTsCreateCardOrderCost: apiData.ForwardTsCreateCardOrderCost, - ActivateCardOrderCnt: apiData.ActivateCardOrderCnt, - ForwardTsActivateCardOrderCnt: apiData.ForwardTsActivateCardOrderCnt, - ActivateCardOrderCost: apiData.ActivateCardOrderCost, - ForwardTsActivateCardOrderCost: apiData.ForwardTsActivateCardOrderCost, - CreateCardOrderRatio: apiData.CreateCardOrderRatio, - ForwardTsCreateCardOrderRatio: apiData.ForwardTsCreateCardOrderRatio, - ActivateCardOrderCntRatio: apiData.ActivateCardOrderCntRatio, - ForwardTsActivateCardOrderRatio: apiData.ForwardTsActivateCardOrderRatio, - LivePlayCnt: apiData.LivePlayCnt, - ItemEntranceClkCnt: apiData.ItemEntranceClkCnt, - ShowCnt: apiData.ShowCnt, - ReportDateStr: apiData.ReportDateStr, - PageNumber: pageNumber, - CampaignId: apiData.CampaignId, - CampaignName: apiData.CampaignName, - UnitId: apiData.UnitId, - UnitName: apiData.UnitName, - CreativeId: apiData.CreativeId, - CreativeName: apiData.CreativeName, - CidActualRoiAfterSubsidy: apiData.CidActualRoiAfterSubsidy, - CidCouponAmount: apiData.CidCouponAmount, - CidCouponCallbackPaidRefundAmount: apiData.CidCouponCallbackPaidRefundAmount, - CidVoucherCost: apiData.CidVoucherCost, - } -} - -func (c *DataConverter) ConvertToDetailItems(apiItems []*AccountReportItem, dataType string, pageNumber int) []*copydata.CidAccountReportDetailItem { - if len(apiItems) == 0 { - return nil - } - - result := make([]*copydata.CidAccountReportDetailItem, 0, len(apiItems)) - for _, item := range apiItems { - detailItem := c.convertItemToDetail(item, dataType, pageNumber) - result = append(result, detailItem) - } - return result -} - -func (c *DataConverter) convertItemToDetail(apiItem *AccountReportItem, dataType string, pageNumber int) *copydata.CidAccountReportDetailItem { - if apiItem == nil { - return nil - } - - item := (*AccountReportSum)(apiItem) - sumItem := c.ConvertToSumItem(item, dataType, pageNumber) - - return ©data.CidAccountReportDetailItem{ - DataType: sumItem.DataType, - T0OrderPaymentAmt: sumItem.T0OrderPaymentAmt, - CreativeMaterialType: sumItem.CreativeMaterialType, - LiveName: sumItem.LiveName, - AuthorId: sumItem.AuthorId, - PicUrl: sumItem.PicUrl, - PicName: sumItem.PicName, - PicId: sumItem.PicId, - CoverUrl: sumItem.CoverUrl, - CoverId: sumItem.CoverId, - ItemOrderConversionRatio: sumItem.ItemOrderConversionRatio, - ItemCardClickRatio: sumItem.ItemCardClickRatio, - ItemCardClkCnt: sumItem.ItemCardClkCnt, - LivePlayCntCost: sumItem.LivePlayCntCost, - AdMerchantFollowCost: sumItem.AdMerchantFollowCost, - AdMerchantFollow: sumItem.AdMerchantFollow, - NetT0OrderCnt: sumItem.NetT0OrderCnt, - NetT0Roi: sumItem.NetT0Roi, - NetT0Gmv: sumItem.NetT0Gmv, - PhotoName: sumItem.PhotoName, - PhotoIdStr: sumItem.PhotoIdStr, - PhotoId: sumItem.PhotoId, - ModPriceSegment: sumItem.ModPriceSegment, - AgeSegment: sumItem.AgeSegment, - Province: sumItem.Province, - Gender: sumItem.Gender, - AdPhotoPlayedFiveRatio: sumItem.AdPhotoPlayedFiveRatio, - AdPhotoPlayedThreeRatio: sumItem.AdPhotoPlayedThreeRatio, - OrderSubmitRoi: sumItem.OrderSubmitRoi, - OrderSubmitAmt: sumItem.OrderSubmitAmt, - EventOrderSubmitCost: sumItem.EventOrderSubmitCost, - EventOrderSubmit: sumItem.EventOrderSubmit, - EventOrderPaidRoi: sumItem.EventOrderPaidRoi, - EventAppInvoked: sumItem.EventAppInvoked, - EventAddShoppingCart: sumItem.EventAddShoppingCart, - ConversionNumCost: sumItem.ConversionNumCost, - AdEffectivePlayNum: sumItem.AdEffectivePlayNum, - AdItemClick: sumItem.AdItemClick, - MerchantProductId: sumItem.MerchantProductId, - CostTotal: sumItem.CostTotal, - AdShow: sumItem.AdShow, - AdShow1kCost: sumItem.AdShow1kCost, - Impression: sumItem.Impression, - PhotoClick: sumItem.PhotoClick, - PhotoClickRatio: sumItem.PhotoClickRatio, - Click: sumItem.Click, - ActionbarClick: sumItem.ActionbarClick, - ActionbarClickCost: sumItem.ActionbarClickCost, - EspClickRatio: sumItem.EspClickRatio, - ActionRatio: sumItem.ActionRatio, - AdItemClickCount: sumItem.AdItemClickCount, - EspLivePlayedSeconds: sumItem.EspLivePlayedSeconds, - PlayedThreeSeconds: sumItem.PlayedThreeSeconds, - Play3sRatio: sumItem.Play3sRatio, - PlayedFiveSeconds: sumItem.PlayedFiveSeconds, - Play5sRatio: sumItem.Play5sRatio, - PlayedEnd: sumItem.PlayedEnd, - PlayEndRatio: sumItem.PlayEndRatio, - Share: sumItem.Share, - Comment: sumItem.Comment, - Likes: sumItem.Likes, - Report: sumItem.Report, - Block: sumItem.Block, - ItemNegative: sumItem.ItemNegative, - LiveShare: sumItem.LiveShare, - LiveComment: sumItem.LiveComment, - LiveReward: sumItem.LiveReward, - EffectivePlayCount: sumItem.EffectivePlayCount, - EffectivePlayRatio: sumItem.EffectivePlayRatio, - ConversionNum: sumItem.ConversionNum, - ConversionCostEsp: sumItem.ConversionCostEsp, - Roi: sumItem.Roi, - Gmv: sumItem.Gmv, - T0Gmv: sumItem.T0Gmv, - T1Gmv: sumItem.T1Gmv, - T3Gmv: sumItem.T3Gmv, - T7Gmv: sumItem.T7Gmv, - T15Gmv: sumItem.T15Gmv, - T30Gmv: sumItem.T30Gmv, - T0Roi: sumItem.T0Roi, - T1Roi: sumItem.T1Roi, - T3Roi: sumItem.T3Roi, - T7Roi: sumItem.T7Roi, - T15Roi: sumItem.T15Roi, - T30Roi: sumItem.T30Roi, - PaiedOrder: sumItem.PaiedOrder, - OrderRatio: sumItem.OrderRatio, - T0OrderCnt: sumItem.T0OrderCnt, - T0OrderCntCost: sumItem.T0OrderCntCost, - T0OrderCntRatio: sumItem.T0OrderCntRatio, - T1OrderCnt: sumItem.T1OrderCnt, - T3OrderCnt: sumItem.T3OrderCnt, - T7OrderCnt: sumItem.T7OrderCnt, - T15OrderCnt: sumItem.T15OrderCnt, - T30OrderCnt: sumItem.T30OrderCnt, - MerchantRecoFans: sumItem.MerchantRecoFans, - T1Retention: sumItem.T1Retention, - T7Retention: sumItem.T7Retention, - T15Retention: sumItem.T15Retention, - T30Retention: sumItem.T30Retention, - T1RetentionRatio: sumItem.T1RetentionRatio, - T7RetentionRatio: sumItem.T7RetentionRatio, - T15RetentionRatio: sumItem.T15RetentionRatio, - T30RetentionRatio: sumItem.T30RetentionRatio, - ReservationSuccess: sumItem.ReservationSuccess, - ReservationCost: sumItem.ReservationCost, - StandardLivePlayedStarted: sumItem.StandardLivePlayedStarted, - AdLivePlayCnt: sumItem.AdLivePlayCnt, - AdLivePlayCntCost: sumItem.AdLivePlayCntCost, - LiveAudienceCost: sumItem.LiveAudienceCost, - LiveEventGoodsView: sumItem.LiveEventGoodsView, - GoodsClickRatio: sumItem.GoodsClickRatio, - DirectAttrPlatNewBuyerCnt: sumItem.DirectAttrPlatNewBuyerCnt, - T30AttrPlatTotalBuyerCnt: sumItem.T30AttrPlatTotalBuyerCnt, - DirectAttrSellerNewBuyerCnt: sumItem.DirectAttrSellerNewBuyerCnt, - T30AttrSellerTotalBuyerCnt: sumItem.T30AttrSellerTotalBuyerCnt, - T7IndirectOrderAmt: sumItem.T7IndirectOrderAmt, - T7IndirectOrderCnt: sumItem.T7IndirectOrderCnt, - FansT0GmvPerFans: sumItem.FansT0GmvPerFans, - FansT3GmvPerFans: sumItem.FansT3GmvPerFans, - FansT7GmvPerFans: sumItem.FansT7GmvPerFans, - FansT15GmvPerFans: sumItem.FansT15GmvPerFans, - FansT30GmvPerFans: sumItem.FansT30GmvPerFans, - RecoFansCost: sumItem.RecoFansCost, - QcpxWhiteboxDirectOrderPaymentAmt: sumItem.QcpxWhiteboxDirectOrderPaymentAmt, - QcpxWhiteboxDirectOrderCnt: sumItem.QcpxWhiteboxDirectOrderCnt, - FansT0Gmv: sumItem.FansT0Gmv, - FansT1Gmv: sumItem.FansT1Gmv, - FansT7Gmv: sumItem.FansT7Gmv, - FansT15Gmv: sumItem.FansT15Gmv, - FansT30Gmv: sumItem.FansT30Gmv, - FansT0Roi: sumItem.FansT0Roi, - FansT1Roi: sumItem.FansT1Roi, - FansT7Roi: sumItem.FansT7Roi, - FansT15Roi: sumItem.FansT15Roi, - FansT30Roi: sumItem.FansT30Roi, - T0ShopNewBuyerOrderPaymentAmt: sumItem.T0ShopNewBuyerOrderPaymentAmt, - T1ShopNewBuyerOrderPaymentAmt: sumItem.T1ShopNewBuyerOrderPaymentAmt, - T3ShopNewBuyerOrderPaymentAmt: sumItem.T3ShopNewBuyerOrderPaymentAmt, - T7ShopNewBuyerOrderPaymentAmt: sumItem.T7ShopNewBuyerOrderPaymentAmt, - T15ShopNewBuyerOrderPaymentAmt: sumItem.T15ShopNewBuyerOrderPaymentAmt, - T30ShopNewBuyerOrderPaymentAmt: sumItem.T30ShopNewBuyerOrderPaymentAmt, - T0ShopNewBuyerOrderCnt: sumItem.T0ShopNewBuyerOrderCnt, - T1ShopNewBuyerOrderCnt: sumItem.T1ShopNewBuyerOrderCnt, - T3ShopNewBuyerOrderCnt: sumItem.T3ShopNewBuyerOrderCnt, - T7ShopNewBuyerOrderCnt: sumItem.T7ShopNewBuyerOrderCnt, - T15ShopNewBuyerOrderCnt: sumItem.T15ShopNewBuyerOrderCnt, - T30ShopNewBuyerOrderCnt: sumItem.T30ShopNewBuyerOrderCnt, - T1NewBuyerRepurchaseRatio: sumItem.T1NewBuyerRepurchaseRatio, - T3NewBuyerRepurchaseRatio: sumItem.T3NewBuyerRepurchaseRatio, - T7NewBuyerRepurchaseRatio: sumItem.T7NewBuyerRepurchaseRatio, - T15NewBuyerRepurchaseRatio: sumItem.T15NewBuyerRepurchaseRatio, - T30NewBuyerRepurchaseRatio: sumItem.T30NewBuyerRepurchaseRatio, - T0ShopNewBuyerRoi: sumItem.T0ShopNewBuyerRoi, - T1ShopNewBuyerRoi: sumItem.T1ShopNewBuyerRoi, - T3ShopNewBuyerRoi: sumItem.T3ShopNewBuyerRoi, - T7ShopNewBuyerRoi: sumItem.T7ShopNewBuyerRoi, - T15ShopNewBuyerRoi: sumItem.T15ShopNewBuyerRoi, - T30ShopNewBuyerRoi: sumItem.T30ShopNewBuyerRoi, - CreateCardOrderCnt: sumItem.CreateCardOrderCnt, - ForwardTsCreateCardOrderCnt: sumItem.ForwardTsCreateCardOrderCnt, - CreateCardOrderCost: sumItem.CreateCardOrderCost, - ForwardTsCreateCardOrderCost: sumItem.ForwardTsCreateCardOrderCost, - ActivateCardOrderCnt: sumItem.ActivateCardOrderCnt, - ForwardTsActivateCardOrderCnt: sumItem.ForwardTsActivateCardOrderCnt, - ActivateCardOrderCost: sumItem.ActivateCardOrderCost, - ForwardTsActivateCardOrderCost: sumItem.ForwardTsActivateCardOrderCost, - CreateCardOrderRatio: sumItem.CreateCardOrderRatio, - ForwardTsCreateCardOrderRatio: sumItem.ForwardTsCreateCardOrderRatio, - ActivateCardOrderCntRatio: sumItem.ActivateCardOrderCntRatio, - ForwardTsActivateCardOrderRatio: sumItem.ForwardTsActivateCardOrderRatio, - LivePlayCnt: sumItem.LivePlayCnt, - ItemEntranceClkCnt: sumItem.ItemEntranceClkCnt, - ShowCnt: sumItem.ShowCnt, - ReportDateStr: sumItem.ReportDateStr, - PageNumber: pageNumber, - CampaignId: sumItem.CampaignId, - CampaignName: sumItem.CampaignName, - UnitId: sumItem.UnitId, - UnitName: sumItem.UnitName, - CreativeId: sumItem.CreativeId, - CreativeName: sumItem.CreativeName, - CidActualRoiAfterSubsidy: sumItem.CidActualRoiAfterSubsidy, - CidCouponAmount: sumItem.CidCouponAmount, - CidCouponCallbackPaidRefundAmount: sumItem.CidCouponCallbackPaidRefundAmount, - CidVoucherCost: sumItem.CidVoucherCost, - } -} diff --git a/syncdata/http_client.go b/syncdata/http_client.go deleted file mode 100644 index 7a85b89..0000000 --- a/syncdata/http_client.go +++ /dev/null @@ -1,68 +0,0 @@ -package syncdata - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "io" - "net/http" - "time" -) - -type HttpClient struct { - BaseURL string - Timeout time.Duration - HTTPClient *http.Client -} - -func NewHttpClient(baseURL string, timeout time.Duration) *HttpClient { - if timeout == 0 { - timeout = 30 * time.Second - } - return &HttpClient{ - BaseURL: baseURL, - Timeout: timeout, - HTTPClient: &http.Client{ - Timeout: timeout, - }, - } -} - -func (c *HttpClient) Post(ctx context.Context, url string, body interface{}) ([]byte, error) { - jsonData, err := json.Marshal(body) - if err != nil { - return nil, fmt.Errorf("序列化请求失败:%w", err) - } - - fullURL := url - if c.BaseURL != "" && len(url) > 0 && url[0] != '/' { - fullURL = c.BaseURL + url - } else if c.BaseURL != "" { - fullURL = c.BaseURL + url - } - - req, err := http.NewRequestWithContext(ctx, "POST", fullURL, bytes.NewBuffer(jsonData)) - if err != nil { - return nil, fmt.Errorf("创建请求失败:%w", err) - } - - req.Header.Set("Content-Type", "application/json") - - resp, err := c.HTTPClient.Do(req) - if err != nil { - return nil, fmt.Errorf("请求失败:%w", err) - } - defer resp.Body.Close() - - respBody, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("读取响应失败:%w", err) - } - - if resp.StatusCode != http.StatusOK { - return nil, fmt.Errorf("HTTP 错误状态码:%d", resp.StatusCode) - } - - return respBody, nil -} diff --git a/syncdata/mock_generator.go b/syncdata/mock_generator.go deleted file mode 100644 index f70fdbd..0000000 --- a/syncdata/mock_generator.go +++ /dev/null @@ -1,329 +0,0 @@ -package syncdata - -import ( - "math/rand" - "time" -) - -type MockDataGenerator struct { - rand *rand.Rand -} - -func NewMockDataGenerator() *MockDataGenerator { - return &MockDataGenerator{ - rand: rand.New(rand.NewSource(time.Now().UnixNano())), - } -} - -func (m *MockDataGenerator) GenerateAccountReportRequest() *AccountReportRequest { - return &AccountReportRequest{ - AdvertiserID: 10001, - StartTime: time.Now().AddDate(0, 0, -30).UnixNano() / 1e6, - EndTime: time.Now().UnixNano() / 1e6, - SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, - GroupType: 1, - QueryVersion: 1, - SelectParam: &AccountSelectParam{ - CampaignIDs: []int64{1, 2, 3}, - }, - PageInfo: &PageInfo{ - CurrentPage: 1, - PageSize: 10, - }, - } -} - -func (m *MockDataGenerator) GenerateAccountReportResponse() *AccountReportResponse { - return m.GenerateAccountReportResponseWithPage(1, 10) -} - -func (m *MockDataGenerator) GenerateAccountReportResponseWithPage(page int, pageSize int) *AccountReportResponse { - sumData := m.generateSumData() - - detailData := m.generateDetailDataByPage(page, pageSize) - totalCount := 23 - - return &AccountReportResponse{ - Code: 0, - Message: "success", - Data: &AccountReportData{ - Sum: sumData, - Detail: detailData, - TotalCount: totalCount, - }, - } -} - -func (m *MockDataGenerator) generateDetailDataByPage(page int, pageSize int) []*AccountReportItem { - totalCount := 23 - - if page < 1 || pageSize <= 0 { - return []*AccountReportItem{} - } - - startIndex := (page - 1) * pageSize - - if startIndex >= totalCount { - return []*AccountReportItem{} - } - - endIndex := startIndex + pageSize - if endIndex > totalCount { - endIndex = totalCount - } - - actualCount := endIndex - startIndex - items := make([]*AccountReportItem, actualCount) - - for i := 0; i < actualCount; i++ { - itemIndex := startIndex + i + 1 - - campaignId := int64(itemIndex) - unitId := int64(itemIndex * 10) - creativeId := int64(itemIndex * 100) - - campaignName := "测试计划_" + string(rune('A'+itemIndex-1)) - unitName := "测试单元_" + string(rune('A'+itemIndex-1)) - creativeName := "测试创意_" + string(rune('A'+itemIndex-1)) - - item := m.generateSumData() - - item.CampaignId = &campaignId - item.UnitId = &unitId - item.CreativeId = &creativeId - item.CampaignName = campaignName - item.UnitName = unitName - item.CreativeName = creativeName - - items[i] = (*AccountReportItem)(item) - } - - return items -} - -func (m *MockDataGenerator) generateSumData() *AccountReportSum { - cost := m.randomFloat(1000, 10000) - impression := m.randomInt64(10000, 100000) - click := m.randomInt64(100, 1000) - - return &AccountReportSum{ - T0OrderPaymentAmt: "888.99", - CreativeMaterialType: "视频素材类型", - LiveName: "测试直播间", - AuthorId: "123456", - PicUrl: "http://example.com/pic.jpg", - PicName: "图片名称", - PicId: "pic_123", - CoverUrl: "http://example.com/cover.jpg", - CoverId: 4551122, - ItemOrderConversionRatio: m.randomFloatPtr(0.01, 0.5), - ItemCardClickRatio: m.randomFloatPtr(0.02, 0.3), - ItemCardClkCnt: m.randomIntPtr(10, 100), - LivePlayCntCost: m.randomFloatPtr(0.5, 5.0), - AdMerchantFollowCost: m.randomFloatPtr(1.0, 10.0), - AdMerchantFollow: m.randomIntPtr(50, 500), - NetT0OrderCnt: m.randomIntPtr(10, 100), - NetT0Roi: m.randomFloatPtr(1.5, 5.0), - NetT0Gmv: m.randomFloatPtr(5000, 50000), - PhotoName: "测试视频", - PhotoIdStr: "video_123", - PhotoId: "video_123", - ModPriceSegment: "1000-2000", - AgeSegment: "24-30", - Province: "广东", - Gender: "男", - AdPhotoPlayedFiveRatio: m.randomFloatPtr(0.3, 0.8), - AdPhotoPlayedThreeRatio: m.randomFloatPtr(0.5, 0.9), - OrderSubmitRoi: m.randomFloatPtr(1.0, 3.0), - OrderSubmitAmt: m.randomIntPtr(10, 100), - EventOrderSubmitCost: m.randomFloatPtr(5.0, 20.0), - EventOrderSubmit: m.randomIntPtr(5, 50), - EventOrderPaidRoi: m.randomFloatPtr(0.5, 2.0), - EventAppInvoked: m.randomIntPtr(100, 1000), - EventAddShoppingCart: m.randomIntPtr(50, 500), - ConversionNumCost: m.randomFloatPtr(10.0, 50.0), - AdEffectivePlayNum: m.randomIntPtr(1000, 10000), - AdItemClick: m.randomIntPtr(100, 1000), - MerchantProductId: "product_123", - CostTotal: &cost, - AdShow: m.randomIntPtr(10000, 100000), - AdShow1kCost: m.randomFloatPtr(5.0, 50.0), - Impression: &impression, - PhotoClick: m.randomIntPtr(100, 5000), - PhotoClickRatio: m.randomFloatPtr(0.01, 0.1), - Click: &click, - ActionbarClick: m.randomIntPtr(50, 500), - ActionbarClickCost: m.randomFloatPtr(1.0, 10.0), - EspClickRatio: m.randomFloatPtr(0.01, 0.1), - ActionRatio: m.randomFloatPtr(0.02, 0.2), - AdItemClickCount: m.randomIntPtr(10, 100), - EspLivePlayedSeconds: m.randomIntPtr(30, 300), - PlayedThreeSeconds: m.randomIntPtr(5000, 50000), - Play3sRatio: m.randomFloatPtr(0.3, 0.8), - PlayedFiveSeconds: m.randomIntPtr(3000, 30000), - Play5sRatio: m.randomFloatPtr(0.2, 0.6), - PlayedEnd: m.randomIntPtr(1000, 10000), - PlayEndRatio: m.randomFloatPtr(0.1, 0.4), - Share: m.randomIntPtr(10, 100), - Comment: m.randomIntPtr(20, 200), - Likes: m.randomIntPtr(100, 1000), - Report: m.randomIntPtr(1, 10), - Block: m.randomIntPtr(1, 10), - ItemNegative: m.randomIntPtr(5, 50), - LiveShare: m.randomIntPtr(5, 50), - LiveComment: m.randomIntPtr(10, 100), - LiveReward: m.randomIntPtr(20, 200), - EffectivePlayCount: m.randomIntPtr(1000, 10000), - EffectivePlayRatio: m.randomFloatPtr(0.1, 0.5), - ConversionNum: m.randomIntPtr(5, 50), - ConversionCostEsp: m.randomFloatPtr(10.0, 50.0), - Roi: m.randomFloatPtr(1.0, 3.0), - Gmv: m.randomFloatPtr(1000, 10000), - T0Gmv: m.randomFloatPtr(500, 5000), - T1Gmv: m.randomFloatPtr(800, 8000), - T3Gmv: m.randomFloatPtr(1200, 12000), - T7Gmv: m.randomFloatPtr(2000, 20000), - T15Gmv: m.randomFloatPtr(3000, 30000), - T30Gmv: m.randomFloatPtr(5000, 50000), - T0Roi: m.randomFloatPtr(0.5, 2.0), - T1Roi: m.randomFloatPtr(0.8, 2.5), - T3Roi: m.randomFloatPtr(1.0, 3.0), - T7Roi: m.randomFloatPtr(1.5, 4.0), - T15Roi: m.randomFloatPtr(2.0, 5.0), - T30Roi: m.randomFloatPtr(2.5, 6.0), - PaiedOrder: m.randomIntPtr(5, 50), - OrderRatio: m.randomFloatPtr(0.01, 0.1), - T0OrderCnt: m.randomIntPtr(5, 50), - T0OrderCntCost: m.randomFloatPtr(10.0, 100.0), - T0OrderCntRatio: m.randomFloatPtr(0.5, 0.9), - T1OrderCnt: m.randomIntPtr(10, 100), - T3OrderCnt: m.randomIntPtr(20, 200), - T7OrderCnt: m.randomIntPtr(30, 300), - T15OrderCnt: m.randomIntPtr(40, 400), - T30OrderCnt: m.randomIntPtr(50, 500), - MerchantRecoFans: m.randomIntPtr(100, 1000), - T1Retention: m.randomFloatPtr(0.3, 0.8), - T7Retention: m.randomFloatPtr(0.2, 0.6), - T15Retention: m.randomFloatPtr(0.15, 0.5), - T30Retention: m.randomFloatPtr(0.1, 0.4), - T1RetentionRatio: m.randomFloatPtr(0.3, 0.8), - T7RetentionRatio: m.randomFloatPtr(0.2, 0.6), - T15RetentionRatio: m.randomFloatPtr(0.15, 0.5), - T30RetentionRatio: m.randomFloatPtr(0.1, 0.4), - ReservationSuccess: m.randomIntPtr(10, 100), - ReservationCost: m.randomFloatPtr(5.0, 50.0), - StandardLivePlayedStarted: m.randomIntPtr(100, 1000), - AdLivePlayCnt: m.randomIntPtr(50, 500), - AdLivePlayCntCost: m.randomFloatPtr(1.0, 10.0), - LiveAudienceCost: m.randomFloatPtr(0.5, 5.0), - LiveEventGoodsView: m.randomIntPtr(100, 1000), - GoodsClickRatio: m.randomFloatPtr(0.05, 0.3), - DirectAttrPlatNewBuyerCnt: m.randomIntPtr(10, 100), - T30AttrPlatTotalBuyerCnt: m.randomIntPtr(50, 500), - DirectAttrSellerNewBuyerCnt: m.randomIntPtr(5, 50), - T30AttrSellerTotalBuyerCnt: m.randomIntPtr(20, 200), - T7IndirectOrderAmt: m.randomFloatPtr(500, 5000), - T7IndirectOrderCnt: m.randomIntPtr(5, 50), - FansT0GmvPerFans: m.randomFloatPtr(10.0, 100.0), - FansT3GmvPerFans: m.randomFloatPtr(20.0, 200.0), - FansT7GmvPerFans: m.randomFloatPtr(30.0, 300.0), - FansT15GmvPerFans: m.randomFloatPtr(40.0, 400.0), - FansT30GmvPerFans: m.randomFloatPtr(50.0, 500.0), - RecoFansCost: m.randomFloatPtr(5.0, 50.0), - QcpxWhiteboxDirectOrderPaymentAmt: m.randomFloatPtr(100, 1000), - QcpxWhiteboxDirectOrderCnt: m.randomIntPtr(1, 10), - FansT0Gmv: m.randomFloatPtr(100, 1000), - FansT1Gmv: m.randomFloatPtr(200, 2000), - FansT7Gmv: m.randomFloatPtr(300, 3000), - FansT15Gmv: m.randomFloatPtr(400, 4000), - FansT30Gmv: m.randomFloatPtr(500, 5000), - FansT0Roi: m.randomFloatPtr(0.5, 2.0), - FansT1Roi: m.randomFloatPtr(0.8, 2.5), - FansT7Roi: m.randomFloatPtr(1.0, 3.0), - FansT15Roi: m.randomFloatPtr(1.5, 4.0), - FansT30Roi: m.randomFloatPtr(2.0, 5.0), - T0ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(100, 1000), - T1ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(200, 2000), - T3ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(300, 3000), - T7ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(400, 4000), - T15ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(500, 5000), - T30ShopNewBuyerOrderPaymentAmt: m.randomFloatPtr(600, 6000), - T0ShopNewBuyerOrderCnt: m.randomIntPtr(1, 10), - T1ShopNewBuyerOrderCnt: m.randomIntPtr(2, 20), - T3ShopNewBuyerOrderCnt: m.randomIntPtr(3, 30), - T7ShopNewBuyerOrderCnt: m.randomIntPtr(4, 40), - T15ShopNewBuyerOrderCnt: m.randomIntPtr(5, 50), - T30ShopNewBuyerOrderCnt: m.randomIntPtr(6, 60), - T1NewBuyerRepurchaseRatio: m.randomFloatPtr(0.1, 0.5), - T3NewBuyerRepurchaseRatio: m.randomFloatPtr(0.15, 0.55), - T7NewBuyerRepurchaseRatio: m.randomFloatPtr(0.2, 0.6), - T15NewBuyerRepurchaseRatio: m.randomFloatPtr(0.25, 0.65), - T30NewBuyerRepurchaseRatio: m.randomFloatPtr(0.3, 0.7), - T0ShopNewBuyerRoi: m.randomFloatPtr(0.5, 2.0), - T1ShopNewBuyerRoi: m.randomFloatPtr(0.8, 2.5), - T3ShopNewBuyerRoi: m.randomFloatPtr(1.0, 3.0), - T7ShopNewBuyerRoi: m.randomFloatPtr(1.5, 4.0), - T15ShopNewBuyerRoi: m.randomFloatPtr(2.0, 5.0), - T30ShopNewBuyerRoi: m.randomFloatPtr(2.5, 6.0), - CreateCardOrderCnt: m.randomIntPtr(1, 10), - ForwardTsCreateCardOrderCnt: m.randomIntPtr(1, 10), - CreateCardOrderCost: m.randomFloatPtr(10.0, 100.0), - ForwardTsCreateCardOrderCost: m.randomFloatPtr(10.0, 100.0), - ActivateCardOrderCnt: m.randomIntPtr(1, 10), - ForwardTsActivateCardOrderCnt: m.randomIntPtr(1, 10), - ActivateCardOrderCost: m.randomFloatPtr(10.0, 100.0), - ForwardTsActivateCardOrderCost: m.randomFloatPtr(10.0, 100.0), - CreateCardOrderRatio: m.randomFloatPtr(0.01, 0.1), - ForwardTsCreateCardOrderRatio: m.randomFloatPtr(0.01, 0.1), - ActivateCardOrderCntRatio: m.randomFloatPtr(0.01, 0.1), - ForwardTsActivateCardOrderRatio: m.randomFloatPtr(0.01, 0.1), - LivePlayCnt: m.randomIntPtr(100, 1000), - ItemEntranceClkCnt: m.randomIntPtr(50, 500), - ShowCnt: m.randomIntPtr(1000, 10000), - ReportDateStr: time.Now().Format("2006-01-02"), - CampaignId: int64Ptr(23), - CampaignName: "测试计划", - UnitId: int64Ptr(10), - UnitName: "测试单元", - CreativeId: int64Ptr(13), - CreativeName: "测试创意", - CidActualRoiAfterSubsidy: m.randomFloatPtr(1.0, 3.0), - CidCouponAmount: m.randomIntPtr(100, 1000), - CidCouponCallbackPaidRefundAmount: m.randomIntPtr(50, 500), - CidVoucherCost: m.randomFloatPtr(5.0, 50.0), - } -} - -func int64Ptr(v int64) *int64 { - return &v -} - -func (m *MockDataGenerator) generateDetailData(count int) []*AccountReportItem { - items := make([]*AccountReportItem, count) - for i := 0; i < count; i++ { - items[i] = (*AccountReportItem)(m.generateSumData()) - } - return items -} - -func (m *MockDataGenerator) randomInt(min, max int) int { - return m.rand.Intn(max-min) + min -} - -func (m *MockDataGenerator) randomInt64(min, max int64) int64 { - return m.rand.Int63n(max-min) + min -} - -func (m *MockDataGenerator) randomFloat(min, max float64) float64 { - return m.rand.Float64()*(max-min) + min -} - -func (m *MockDataGenerator) randomIntPtr(min, max int) *int64 { - v := int64(m.randomInt(min, max)) - return &v -} - -func (m *MockDataGenerator) randomFloatPtr(min, max float64) *float64 { - v := m.randomFloat(min, max) - return &v -} diff --git a/syncdata/quick_sync.go b/syncdata/quick_sync.go deleted file mode 100644 index e0cf0b0..0000000 --- a/syncdata/quick_sync.go +++ /dev/null @@ -1,51 +0,0 @@ -package syncdata - -import ( - "context" - "time" - - "github.com/sirupsen/logrus" -) - -func SyncAccountReportWithMock(ctx context.Context) error { - syncService := NewSyncService() - - req := &AccountReportRequest{ - AdvertiserID: 10001, - StartTime: time.Now().AddDate(0, 0, -30).UnixNano() / 1e6, - EndTime: time.Now().UnixNano() / 1e6, - SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, - GroupType: 1, - QueryVersion: 1, - SelectParam: &AccountSelectParam{ - CampaignIDs: []int64{1, 2, 3}, - }, - PageInfo: &PageInfo{ - CurrentPage: 1, - PageSize: 20, - }, - } - - result, err := syncService.SyncAccountReport(ctx, req, true, true) - if err != nil { - logrus.Errorf("同步失败:%v", err) - return err - } - - logrus.Infof("同步成功 - 汇总 ID: %d, 明细数量:%d", result.SumID, result.DetailCount) - return nil -} - -func SyncAccountReportWithRealAPI(ctx context.Context, req *AccountReportRequest) error { - syncService := NewSyncService() - - result, err := syncService.SyncAccountReport(ctx, req, false, true) - if err != nil { - logrus.Errorf("同步失败:%v", err) - return err - } - - logrus.Infof("同步成功 - 汇总 ID: %d, 明细数量:%d, 成功:%d, 失败:%d", - result.SumID, result.DetailCount, result.DetailSuccessCount, result.DetailFailCount) - return nil -} diff --git a/syncdata/sync_service.go b/syncdata/sync_service.go deleted file mode 100644 index 119cd12..0000000 --- a/syncdata/sync_service.go +++ /dev/null @@ -1,782 +0,0 @@ -package syncdata - -import ( - "context" - dao "dataengine/dao/copydata" - dto "dataengine/model/dto/copydata" - taskDto "dataengine/model/dto/copydata" - "dataengine/service/copydata" - "encoding/json" - "fmt" - "sync" - "sync/atomic" - "time" - - "github.com/sirupsen/logrus" - "golang.org/x/sync/errgroup" - "golang.org/x/sync/semaphore" -) - -type SyncService struct { - httpClient *HttpClient - converter *DataConverter - mockGen *MockDataGenerator -} - -func NewSyncService() *SyncService { - return &SyncService{ - httpClient: NewHttpClient("https://ad.e.kuaishou.com", 0), - converter: NewDataConverter(), - mockGen: NewMockDataGenerator(), - } -} - -type SyncResult struct { - SumSuccess bool `json:"sum_success"` - SumID int64 `json:"sum_id"` - DetailSuccess bool `json:"detail_success"` - DetailCount int `json:"detail_count"` - DetailSuccessCount int64 `json:"detail_success_count"` - DetailFailCount int64 `json:"detail_fail_count"` - Error error `json:"error"` - TaskLogID int64 `json:"task_log_id"` - PageResults []*PageSyncResult `json:"page_results,omitempty"` -} - -type PageSyncResult struct { - PageNumber int `json:"page_number"` - PageTaskLogID int64 `json:"page_task_log_id"` - Success bool `json:"success"` - RecordCount int `json:"record_count"` - DurationMs int64 `json:"duration_ms"` - ErrorMessage string `json:"error_message,omitempty"` - RetryCount int `json:"retry_count"` -} - -func (s *SyncService) SyncAccountReport(ctx context.Context, req *AccountReportRequest, useMock bool, saveSum bool) (*SyncResult, error) { - result := &SyncResult{} - - var responseData *AccountReportResponse - - if useMock { - logrus.Infof("使用 Mock 数据同步快手广告账户报表 - page=%d, pageSize=%d", - req.PageInfo.CurrentPage, req.PageInfo.PageSize) - responseData = s.mockGen.GenerateAccountReportResponseWithPage(req.PageInfo.CurrentPage, req.PageInfo.PageSize) - - logrus.Infof("✓ Mock 数据生成完成 - TotalCount=%d, Detail数组长度=%d", - responseData.Data.TotalCount, len(responseData.Data.Detail)) - - if len(responseData.Data.Detail) > 0 { - firstItem := responseData.Data.Detail[0] - lastItem := responseData.Data.Detail[len(responseData.Data.Detail)-1] - logrus.Infof(" 第一条: campaignId=%v, creativeId=%v", firstItem.CampaignId, firstItem.CreativeId) - logrus.Infof(" 最后一条: campaignId=%v, creativeId=%v", lastItem.CampaignId, lastItem.CreativeId) - } - } else { - logrus.Info("从真实 API 同步快手广告账户报表") - respBytes, err := s.httpClient.Post(ctx, "/rest/openapi/gw/esp/report/accountReport", req) - if err != nil { - result.Error = fmt.Errorf("调用 API 失败:%w", err) - return result, result.Error - } - - responseData = &AccountReportResponse{} - if err := json.Unmarshal(respBytes, responseData); err != nil { - result.Error = fmt.Errorf("解析响应失败:%w", err) - return result, result.Error - } - - if responseData.Code != 0 { - result.Error = fmt.Errorf("API 返回错误:code=%d, message=%s", responseData.Code, responseData.Message) - return result, result.Error - } - } - - if saveSum && responseData.Data.Sum != nil { - sumItem := s.converter.ConvertToSumItem(responseData.Data.Sum, "account_report", req.PageInfo.CurrentPage) - sumResult, saveErr := s.saveSumData(ctx, sumItem) - if saveErr != nil { - logrus.Errorf("保存汇总数据失败:%v", saveErr) - result.Error = fmt.Errorf("保存汇总数据失败:%w", saveErr) - } else { - result.SumSuccess = true - result.SumID = sumResult.Id - logrus.Infof("成功保存汇总数据,ID=%d", sumResult.Id) - } - } - - if len(responseData.Data.Detail) > 0 { - detailItems := s.converter.ConvertToDetailItems(responseData.Data.Detail, "account_report", req.PageInfo.CurrentPage) - - logrus.Infof("▶ 准备插入 %d 条明细数据(page=%d)", len(detailItems), req.PageInfo.CurrentPage) - - detailResult, saveErr := s.saveDetailData(ctx, detailItems) - if saveErr != nil { - logrus.Errorf("保存明细数据失败:%v", saveErr) - result.Error = fmt.Errorf("保存明细数据失败:%w", saveErr) - } else { - result.DetailSuccess = true - result.DetailCount = len(detailItems) - result.DetailSuccessCount = detailResult.SuccessCount - result.DetailFailCount = detailResult.FailCount - logrus.Infof("✓ 成功保存 %d 条明细数据(成功=%d, 失败=%d)", len(detailItems), detailResult.SuccessCount, detailResult.FailCount) - } - } - - return result, result.Error -} - -// SyncAccountReportWithPagination 带分页处理的同步方法(支持全量数据抽取) -func (s *SyncService) SyncAccountReportWithPagination(ctx context.Context, req *AccountReportRequest, useMock bool, maxRetries int) (*SyncResult, error) { - startTime := time.Now() - parentTaskID := fmt.Sprintf("%d_%d_account", req.AdvertiserID, req.StartTime) - - logReq := &taskDto.CreateSyncTaskLogReq{ - TaskID: parentTaskID, - TaskType: "account_report", - AdvertiserID: req.AdvertiserID, - StartTime: time.UnixMilli(req.StartTime), - EndTime: time.UnixMilli(req.EndTime), - Status: "pending", - MaxRetry: maxRetries, - RequestParams: req, - } - - parentLogID, err := dao.SyncTaskLog.Create(ctx, logReq) - if err != nil { - logrus.Errorf("创建主任务日志失败:%v", err) - } - - updateParentLog := func(status, errMsg, errorCode string, summary interface{}) { - if parentLogID == 0 { - return - } - duration := time.Since(startTime).Milliseconds() - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: parentLogID, - Status: status, - ErrorMessage: errMsg, - ErrorCode: errorCode, - DurationMs: &duration, - } - - if status == "success" || status == "manual_review" { - completedAt := time.Now() - updateReq.CompletedAt = completedAt - } - - if summary != nil { - updateReq.ResultSummary = summary - } - - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新主任务日志失败:%v", err) - } - } - - updateParentLog("running", "", "", nil) - - aggregatedResult := &SyncResult{ - SumSuccess: false, - SumID: 0, - TaskLogID: parentLogID, - PageResults: make([]*PageSyncResult, 0), - } - - totalCount := 0 - currentPage := 1 - pageSize := 10 - - if req.PageInfo == nil { - req.PageInfo = &PageInfo{} - } - - if req.PageInfo.PageSize > 0 { - pageSize = req.PageInfo.PageSize - } - - successPages := 0 - failedPages := 0 - - var totalPages int - - for { - logrus.Infof(">>> 正在同步第 %d 页数据...", currentPage) - - req.PageInfo.CurrentPage = currentPage - req.PageInfo.PageSize = pageSize - - pageTaskID := fmt.Sprintf("%s_page_%d", parentTaskID, currentPage) - pageStartTime := time.Now() - - pageResult := &PageSyncResult{ - PageNumber: currentPage, - Success: false, - RecordCount: 0, - RetryCount: 0, - } - - result, pageLogID, err := s.SyncSinglePageWithTask(ctx, req, useMock, maxRetries, pageTaskID, currentPage) - pageDuration := time.Since(pageStartTime).Milliseconds() - pageResult.DurationMs = pageDuration - pageResult.PageTaskLogID = pageLogID - - if err != nil { - logrus.Errorf("第 %d 页同步失败:%v", currentPage, err) - pageResult.ErrorMessage = err.Error() - failedPages++ - - aggregatedResult.PageResults = append(aggregatedResult.PageResults, pageResult) - - if failedPages > maxRetries { - logrus.Warnf("失败页数超过阈值 %d,终止同步", maxRetries) - break - } - - currentPage++ - time.Sleep(500 * time.Millisecond) - continue - } - - if result.SumSuccess && aggregatedResult.SumID == 0 { - aggregatedResult.SumSuccess = true - aggregatedResult.SumID = result.SumID - logrus.Infof("✓ 汇总数据已保存,ID=%d", result.SumID) - } - - if result.DetailSuccess && result.DetailCount > 0 { - totalCount += result.DetailCount - pageResult.Success = true - pageResult.RecordCount = result.DetailCount - successPages++ - logrus.Infof("✓ 第 %d 页获取到 %d 条明细数据,累计 %d 条", currentPage, result.DetailCount, totalCount) - } - - aggregatedResult.PageResults = append(aggregatedResult.PageResults, pageResult) - - currentData := s.fetchCurrentData(req, useMock) - if currentData != nil && currentData.TotalCount > 0 { - totalPages = (currentData.TotalCount + pageSize - 1) / pageSize - logrus.Infof("总记录数:%d, 总页数:%d, 当前页:%d/%d", - currentData.TotalCount, totalPages, currentPage, totalPages) - - if currentPage >= totalPages { - logrus.Infof("✓ 已同步所有页面数据,共 %d 页,%d 条记录", totalPages, currentData.TotalCount) - break - } - } - - if result.DetailCount < pageSize { - logrus.Infof("✓ 当前页数据不足 %d 条,已到达最后一页", pageSize) - break - } - - currentPage++ - time.Sleep(300 * time.Millisecond) - } - - logrus.Infof("分页同步完成 - 成功:%d页, 失败:%d页, 总明细:%d条", - successPages, failedPages, totalCount) - - // 统计所有子任务的结果 - totalDetailCount := 0 - var totalSuccessCount int64 - var totalFailCount int64 - - for _, pageResult := range aggregatedResult.PageResults { - if pageResult.Success { - totalDetailCount += pageResult.RecordCount - totalSuccessCount++ - } else { - totalFailCount++ - } - } - - aggregatedResult.DetailCount = totalDetailCount - aggregatedResult.DetailSuccessCount = totalSuccessCount - aggregatedResult.DetailFailCount = totalFailCount - - if failedPages > 0 { - logrus.Warnf("存在 %d 个失败的页面,主任务标记为部分失败", failedPages) - - summary := map[string]interface{}{ - "sum_id": aggregatedResult.SumID, - "detail_count": totalDetailCount, - "total_pages": totalPages, - "success_pages": successPages, - "failed_pages": failedPages, - "page_results": aggregatedResult.PageResults, - } - updateParentLog("partial_failed", fmt.Sprintf("%d 个页面同步失败", failedPages), "PAGE_SYNC_FAILED", summary) - } else { - logrus.Info("✓ 所有页面同步成功") - - summary := map[string]interface{}{ - "sum_id": aggregatedResult.SumID, - "detail_count": totalDetailCount, - "total_pages": totalPages, - "success_pages": successPages, - "failed_pages": 0, - "page_results": aggregatedResult.PageResults, - } - updateParentLog("success", "", "", summary) - } - - return aggregatedResult, aggregatedResult.Error -} - -func (s *SyncService) SyncSinglePageWithTask(ctx context.Context, req *AccountReportRequest, useMock bool, maxRetries int, pageTaskID string, pageNumber int) (*SyncResult, int64, error) { - pageStartTime := time.Now() - - pageLogReq := &taskDto.CreateSyncTaskLogReq{ - TaskID: pageTaskID, - TaskType: "account_report_page", - AdvertiserID: req.AdvertiserID, - StartTime: time.UnixMilli(req.StartTime), - EndTime: time.UnixMilli(req.EndTime), - Status: "pending", - MaxRetry: maxRetries, - PageInfo: req.PageInfo, - RequestParams: map[string]interface{}{ - "page_number": pageNumber, - "page_size": req.PageInfo.PageSize, - }, - } - - pageLogID, err := dao.SyncTaskLog.Create(ctx, pageLogReq) - if err != nil { - logrus.Errorf("创建分页任务日志失败:%v", err) - } - - updatePageLog := func(status, errMsg, errorCode string, retryCount int) { - if pageLogID == 0 { - return - } - duration := time.Since(pageStartTime).Milliseconds() - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: pageLogID, - Status: status, - ErrorMessage: errMsg, - ErrorCode: errorCode, - DurationMs: &duration, - } - - if retryCount > 0 { - updateReq.RetryCount = &retryCount - } - - if status == "success" || status == "failed" || status == "partial_failed" { - completedAt := time.Now() - updateReq.CompletedAt = completedAt - } - - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新分页任务日志失败:%v", err) - } - } - - updatePageLog("running", "", "", 0) - - logrus.Infof(">>> 开始同步第 %d 页数据...", pageNumber) - - var lastResult *SyncResult - var lastErr error - - for attempt := 0; attempt <= maxRetries; attempt++ { - saveSum := (attempt == 0 && pageNumber == 1) - result, err := s.SyncAccountReport(ctx, req, useMock, saveSum) - lastResult = result - lastErr = err - - if err == nil { - logrus.Infof("第 %d 页同步成功,尝试次数:%d", pageNumber, attempt+1) - - updatePageLog("success", "", "", attempt) - - return result, pageLogID, nil - } - - logrus.Warnf("第 %d 页同步失败,第 %d 次重试,错误:%v", pageNumber, attempt+1, err) - } - - updatePageLog("failed", lastErr.Error(), "PAGE_SYNC_FAILED", maxRetries) - return lastResult, pageLogID, lastErr -} - -func (s *SyncService) syncSinglePageWithTaskForConcurrent(ctx context.Context, req *AccountReportRequest, useMock bool, maxRetries int, pageTaskID string, pageNumber int, isFirstPage bool) (*SyncResult, int64, error) { - pageStartTime := time.Now() - - pageLogReq := &taskDto.CreateSyncTaskLogReq{ - TaskID: pageTaskID, - TaskType: "account_report_page", - AdvertiserID: req.AdvertiserID, - StartTime: time.UnixMilli(req.StartTime), - EndTime: time.UnixMilli(req.EndTime), - Status: "pending", - MaxRetry: maxRetries, - PageInfo: req.PageInfo, - RequestParams: map[string]interface{}{ - "page_number": pageNumber, - "page_size": req.PageInfo.PageSize, - }, - } - - pageLogID, err := dao.SyncTaskLog.Create(ctx, pageLogReq) - if err != nil { - logrus.Errorf("创建分页任务日志失败(page=%d):%v", pageNumber, err) - return nil, 0, fmt.Errorf("创建分页任务日志失败:%w", err) - } - - updatePageLog := func(status, errMsg, errorCode string, retryCount int) { - if pageLogID == 0 { - return - } - duration := time.Since(pageStartTime).Milliseconds() - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: pageLogID, - Status: status, - ErrorMessage: errMsg, - ErrorCode: errorCode, - DurationMs: &duration, - } - - if retryCount > 0 { - updateReq.RetryCount = &retryCount - } - - if status == "success" || status == "failed" || status == "partial_failed" { - completedAt := time.Now() - updateReq.CompletedAt = completedAt - } - - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新分页任务日志失败:%v", err) - } - } - - updatePageLog("running", "", "", 0) - - logrus.Infof(">>> 开始同步第 %d 页数据...", pageNumber) - - var lastResult *SyncResult - var lastErr error - - for attempt := 0; attempt <= maxRetries; attempt++ { - saveSum := isFirstPage && (attempt == 0) - result, err := s.SyncAccountReport(ctx, req, useMock, saveSum) - lastResult = result - lastErr = err - - if err == nil { - logrus.Infof("第 %d 页同步成功,尝试次数:%d", pageNumber, attempt+1) - - updatePageLog("success", "", "", attempt) - - return result, pageLogID, nil - } - - logrus.Warnf("第 %d 页同步失败,第 %d 次重试,错误:%v", pageNumber, attempt+1, err) - } - - updatePageLog("failed", lastErr.Error(), "PAGE_SYNC_FAILED", maxRetries) - return lastResult, pageLogID, lastErr -} - -func (s *SyncService) SyncWithRetry(ctx context.Context, req *AccountReportRequest, useMock bool, maxRetries int) (*SyncResult, error) { - var lastResult *SyncResult - var lastErr error - - for attempt := 0; attempt <= maxRetries; attempt++ { - saveSum := (attempt == 0 && req.PageInfo.CurrentPage == 1) - result, err := s.SyncAccountReport(ctx, req, useMock, saveSum) - lastResult = result - lastErr = err - - if err == nil { - logrus.Infof("同步成功,尝试次数:%d", attempt+1) - return result, nil - } - - logrus.Warnf("同步失败,第 %d 次重试,错误:%v", attempt+1, err) - } - - return lastResult, lastErr -} - -type ConcurrentSyncConfig struct { - MaxConcurrency int - UseMock bool - MaxRetries int -} - -func (s *SyncService) SyncAccountReportConcurrent(ctx context.Context, req *AccountReportRequest, config ConcurrentSyncConfig) (*SyncResult, error) { - startTime := time.Now() - batchID := startTime.UnixNano() - parentTaskID := fmt.Sprintf("%d_%d_%d_account", req.AdvertiserID, req.StartTime, batchID) - - logReq := &taskDto.CreateSyncTaskLogReq{ - TaskID: parentTaskID, - TaskType: "account_report", - AdvertiserID: req.AdvertiserID, - StartTime: time.UnixMilli(req.StartTime), - EndTime: time.UnixMilli(req.EndTime), - Status: "pending", - MaxRetry: config.MaxRetries, - RequestParams: req, - } - - parentLogID, err := dao.SyncTaskLog.Create(ctx, logReq) - if err != nil { - logrus.Errorf("创建主任务日志失败:%v", err) - } - - updateParentLog := func(status, errMsg, errorCode string, summary interface{}) { - if parentLogID == 0 { - return - } - duration := time.Since(startTime).Milliseconds() - updateReq := &taskDto.UpdateSyncTaskLogReq{ - ID: parentLogID, - Status: status, - ErrorMessage: errMsg, - ErrorCode: errorCode, - DurationMs: &duration, - } - - if status == "success" || status == "manual_review" { - completedAt := time.Now() - updateReq.CompletedAt = completedAt - } - - if summary != nil { - updateReq.ResultSummary = summary - } - - if err := dao.SyncTaskLog.Update(ctx, updateReq); err != nil { - logrus.Errorf("更新主任务日志失败:%v", err) - } - } - - updateParentLog("running", "", "", nil) - - if req.PageInfo == nil { - req.PageInfo = &PageInfo{} - } - - pageSize := 10 - if req.PageInfo.PageSize > 0 { - pageSize = req.PageInfo.PageSize - } - - firstPageReq := *req - firstPageReq.PageInfo.CurrentPage = 1 - firstPageReq.PageInfo.PageSize = pageSize - - currentData := s.fetchCurrentData(&firstPageReq, config.UseMock) - if currentData == nil || currentData.TotalCount == 0 { - logrus.Warn("未获取到总记录数,降级为串行同步") - return s.SyncAccountReportWithPagination(ctx, req, config.UseMock, config.MaxRetries) - } - - totalPages := (currentData.TotalCount + pageSize - 1) / pageSize - logrus.Infof("开始并发同步 - 批次ID:%d, 总记录数:%d, 总页数:%d, 每页大小:%d, 并发数:%d", - batchID, currentData.TotalCount, totalPages, pageSize, config.MaxConcurrency) - - updateParentLog("running", "", "", map[string]interface{}{ - "total_pages": totalPages, - "total_records": currentData.TotalCount, - "page_size": pageSize, - "concurrency": config.MaxConcurrency, - "batch_id": batchID, - }) - - pageResults := make([]*PageSyncResult, totalPages) - var pageResultsMu sync.Mutex - - var sumSuccess bool - var sumID int64 - var sumMu sync.Mutex - - var totalDetailCount int32 - var successPages int64 - var failedPages int64 - - sem := semaphore.NewWeighted(int64(config.MaxConcurrency)) - eg, egCtx := errgroup.WithContext(ctx) - - for pageNum := 1; pageNum <= totalPages; pageNum++ { - if err := sem.Acquire(ctx, 1); err != nil { - logrus.Errorf("获取信号量失败:%v", err) - break - } - - currentPage := pageNum - eg.Go(func() error { - defer sem.Release(1) - - pageTaskID := fmt.Sprintf("%s_page_%d", parentTaskID, currentPage) - pageStartTime := time.Now() - - pageReq := *req - pageReq.PageInfo = &PageInfo{ - CurrentPage: currentPage, - PageSize: pageSize, - } - - result, pageLogID, err := s.syncSinglePageWithTaskForConcurrent(egCtx, &pageReq, config.UseMock, config.MaxRetries, pageTaskID, currentPage, currentPage == 1) - pageDuration := time.Since(pageStartTime).Milliseconds() - - pageResult := &PageSyncResult{ - PageNumber: currentPage, - Success: false, - RecordCount: 0, - DurationMs: pageDuration, - ErrorMessage: "", - RetryCount: 0, - PageTaskLogID: pageLogID, - } - - if err != nil { - logrus.Errorf("第 %d 页同步失败:%v", currentPage, err) - pageResult.ErrorMessage = err.Error() - - pageResultsMu.Lock() - pageResults[currentPage-1] = pageResult - pageResultsMu.Unlock() - - newFailedCount := atomic.AddInt64(&failedPages, 1) - if int(newFailedCount) > config.MaxRetries { - logrus.Warnf("失败页数超过阈值 %d", config.MaxRetries) - } - return nil - } - - if result.SumSuccess { - sumMu.Lock() - if !sumSuccess { - sumSuccess = true - sumID = result.SumID - logrus.Infof("✓ 汇总数据已保存,ID=%d(来自第 %d 页)", result.SumID, currentPage) - } - sumMu.Unlock() - } - - if result.DetailSuccess && result.DetailCount > 0 { - pageResult.Success = true - pageResult.RecordCount = result.DetailCount - - atomic.AddInt32(&totalDetailCount, int32(result.DetailCount)) - atomic.AddInt64(&successPages, 1) - - logrus.Debugf("✓ 第 %d 页完成:%d 条明细,耗时 %dms", currentPage, result.DetailCount, pageDuration) - } - - pageResultsMu.Lock() - pageResults[currentPage-1] = pageResult - pageResultsMu.Unlock() - - return nil - }) - } - - if err := eg.Wait(); err != nil { - logrus.Errorf("协程组执行出错:%v", err) - updateParentLog("failed", err.Error(), "CONCURRENT_SYNC_FAILED", nil) - return &SyncResult{ - SumSuccess: sumSuccess, - SumID: sumID, - TaskLogID: parentLogID, - PageResults: pageResults, - Error: err, - }, err - } - - actualResults := make([]*PageSyncResult, 0, len(pageResults)) - for _, pr := range pageResults { - if pr != nil { - actualResults = append(actualResults, pr) - } - } - - finalDetailCount := atomic.LoadInt32(&totalDetailCount) - finalSuccessPages := atomic.LoadInt64(&successPages) - finalFailedPages := atomic.LoadInt64(&failedPages) - - logrus.Infof("并发同步完成 - 成功:%d页, 失败:%d页, 总明细:%d条", - finalSuccessPages, finalFailedPages, finalDetailCount) - - aggregatedResult := &SyncResult{ - SumSuccess: sumSuccess, - SumID: sumID, - TaskLogID: parentLogID, - DetailCount: int(finalDetailCount), - DetailSuccessCount: finalSuccessPages, - DetailFailCount: finalFailedPages, - PageResults: actualResults, - } - - if finalFailedPages > 0 { - logrus.Warnf("存在 %d 个失败的页面,主任务标记为部分失败", finalFailedPages) - - summary := map[string]interface{}{ - "sum_id": sumID, - "detail_count": finalDetailCount, - "total_pages": totalPages, - "success_pages": finalSuccessPages, - "failed_pages": finalFailedPages, - "page_results": actualResults, - } - updateParentLog("partial_failed", fmt.Sprintf("%d 个页面同步失败", finalFailedPages), "PAGE_SYNC_FAILED", summary) - } else { - logrus.Info("✓ 所有页面同步成功") - - summary := map[string]interface{}{ - "sum_id": sumID, - "detail_count": finalDetailCount, - "total_pages": totalPages, - "success_pages": finalSuccessPages, - "failed_pages": 0, - "page_results": actualResults, - } - updateParentLog("success", "", "", summary) - } - - return aggregatedResult, nil -} - -func (s *SyncService) fetchCurrentData(req *AccountReportRequest, useMock bool) *AccountReportData { - if useMock { - responseData := s.mockGen.GenerateAccountReportResponseWithPage(req.PageInfo.CurrentPage, req.PageInfo.PageSize) - if responseData != nil && responseData.Data != nil { - return responseData.Data - } - return nil - } - - respBytes, err := s.httpClient.Post(context.Background(), "/rest/openapi/gw/esp/report/accountReport", req) - if err != nil { - return nil - } - - responseData := &AccountReportResponse{} - if err := json.Unmarshal(respBytes, responseData); err != nil { - return nil - } - - if responseData.Code == 0 && responseData.Data != nil { - return responseData.Data - } - - return nil -} - -func (s *SyncService) saveSumData(ctx context.Context, item *dto.CidAccountReportSumItem) (*dto.CreateCidAccountReportSumRes, error) { - return copydata.CidAccountReportDetail.CreateSum(ctx, item) -} - -func (s *SyncService) saveDetailData(ctx context.Context, items []*dto.CidAccountReportDetailItem) (*dto.BatchCreateCidAccountReportDetailRes, error) { - req := &dto.BatchCreateCidAccountReportDetailReq{ - Items: items, - } - return copydata.CidAccountReportDetail.BatchCreate(ctx, req) -} diff --git a/syncdata/sync_test.go b/syncdata/sync_test.go deleted file mode 100644 index 6beaf71..0000000 --- a/syncdata/sync_test.go +++ /dev/null @@ -1,135 +0,0 @@ -package syncdata - -import ( - "fmt" - "testing" - "time" - - _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" - "github.com/gogf/gf/v2/frame/g" - "github.com/gogf/gf/v2/os/gctx" -) - -func init() { - fmt.Println("=== 初始化测试环境 ===") - ctx := gctx.New() - - db := g.DB() - if db != nil { - _, err := db.Query(ctx, "SELECT 1") - if err == nil { - fmt.Println("✓ 数据库连接成功") - } else { - fmt.Printf("⚠️ 数据库连接失败:%v\n", err) - fmt.Println("⚠️ 将跳过数据库相关测试") - } - } else { - fmt.Println("⚠️ 数据库未初始化") - } - fmt.Println("========================") -} - -func TestMockDataGeneration(t *testing.T) { - mockGen := NewMockDataGenerator() - - req := mockGen.GenerateAccountReportRequest() - if req == nil { - t.Error("请求数据生成失败") - return - } - - fmt.Printf("✓ Mock 请求生成成功:AdvertiserID=%d\n", req.AdvertiserID) -} - -func TestDataConverter(t *testing.T) { - converter := NewDataConverter() - mockGen := NewMockDataGenerator() - - responseData := mockGen.GenerateAccountReportResponse() - if responseData == nil || responseData.Data.Sum == nil { - t.Fatal("Mock 数据生成失败") - } - - sumItem := converter.ConvertToSumItem(responseData.Data.Sum, "account_report", 1) - if sumItem == nil { - t.Fatal("转换为汇总数据失败") - } - - fmt.Printf("✓ 汇总数据转换成功:计划=%s\n", sumItem.CampaignName) - - detailItems := converter.ConvertToDetailItems(responseData.Data.Detail, "account_report", 1) - if len(detailItems) == 0 { - t.Fatal("转换为明细数据失败") - } - - fmt.Printf("✓ 明细数据转换成功:数量=%d\n", len(detailItems)) -} - -func TestSyncAccountReportWithDB(t *testing.T) { - ctx := gctx.New() - syncService := NewSyncService() - - req := &AccountReportRequest{ - AdvertiserID: 10001, - StartTime: time.Now().AddDate(0, 0, -30).UnixNano() / 1e6, - EndTime: time.Now().UnixNano() / 1e6, - SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, - GroupType: 1, - QueryVersion: 1, - } - - result, err := syncService.SyncAccountReport(ctx, req, true) - if err != nil { - t.Logf("同步失败(可能是数据库问题): %v", err) - return - } - - fmt.Printf("✓ 同步结果:汇总成功=%v, 汇总 ID=%d, 明细数量=%d\n", - result.SumSuccess, result.SumID, result.DetailCount) -} - -// -//// TestScheduledSyncTask 测试定时同步任务(每小时执行一次,全量分页抽取) -//func TestScheduledSyncTask(t *testing.T) { -// ctx := gctx.New() -// syncService := NewSyncService() -// -// req := &AccountReportRequest{ -// AdvertiserID: 10001, -// StartTime: time.Now().AddDate(0, 0, -30).UnixNano() / 1e6, -// EndTime: time.Now().UnixNano() / 1e6, -// SelectColumns: []string{"impression", "click", "cost", "t0GMV"}, -// GroupType: 1, -// QueryVersion: 1, -// } -// -// logrus.Info("=== 开始执行定时同步任务 ===") -// result, err := syncService.SyncAccountReportWithPagination(ctx, req, true, 3) -// if err != nil { -// t.Logf("定时同步任务失败:%v", err) -// return -// } -// -// fmt.Printf("✓ 定时同步完成:\n") -// fmt.Printf(" 汇总数据:成功=%v, ID=%d\n", result.SumSuccess, result.SumID) -// fmt.Printf(" 明细数据:总数=%d, 成功=%d, 失败=%d\n", -// result.DetailCount, result.DetailSuccessCount, result.DetailFailCount) -//} - -func BenchmarkSyncAccountReport(b *testing.B) { - ctx := gctx.New() - syncService := NewSyncService() - req := &AccountReportRequest{ - AdvertiserID: 10001, - StartTime: time.Now().AddDate(0, 0, -30).UnixNano() / 1e6, - EndTime: time.Now().UnixNano() / 1e6, - SelectColumns: []string{"impression", "click", "cost"}, - GroupType: 1, - QueryVersion: 1, - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - _, _ = syncService.SyncAccountReport(ctx, req, true) - } -} diff --git a/test-hpa-strong.ps1 b/test-hpa-strong.ps1 deleted file mode 100644 index 81f6030..0000000 --- a/test-hpa-strong.ps1 +++ /dev/null @@ -1,133 +0,0 @@ -Write-Host "=== HPA Stress Test ===" -ForegroundColor Cyan -Write-Host "" - -# 配置参数 -$url = "http://localhost:30301" -$jobCount = 50 -$requestPerJob = 5000 - -Write-Host "Configuration:" -ForegroundColor Yellow -Write-Host " Target URL: $url" -ForegroundColor White -Write-Host " Concurrent Jobs: $jobCount" -ForegroundColor White -Write-Host " Requests per Job: $requestPerJob" -ForegroundColor White -Write-Host " Total Requests: $($jobCount * $requestPerJob)" -ForegroundColor White -Write-Host "" - -# 清理旧任务 -Write-Host "[1/4] Cleaning up old jobs..." -ForegroundColor Cyan -Get-Job | Where-Object { $_.Name -like "HPA-*" } | Stop-Job | Remove-Job -Start-Sleep -Seconds 2 -Write-Host "[OK] Cleaned" -ForegroundColor Green -Write-Host "" - -# 启动并发任务 -Write-Host "[2/4] Starting $jobCount concurrent jobs..." -ForegroundColor Cyan -$jobs = @() - -for ($i = 1; $i -le $jobCount; $i++) { - try { - $job = Start-Job -Name "HPA-$i" -ScriptBlock { - param($targetUrl, $totalRequests) - $success = 0 - $failed = 0 - - for ($j = 1; $j -le $totalRequests; $j++) { - try { - $response = Invoke-WebRequest -Uri $targetUrl -Method GET -TimeoutSec 3 -UseBasicParsing - if ($response.StatusCode -eq 200) { - $success++ - } - } catch { - $failed++ - } - - # 每 500 个请求短暂休息,避免完全耗尽资源 - if ($j % 500 -eq 0) { - Start-Sleep -Milliseconds 50 - } - } - - return @{ - Success = $success - Failed = $failed - } - } -ArgumentList $url, $requestPerJob - - $jobs += $job - - if ($i % 10 -eq 0) { - Write-Host " Started $i/$jobCount jobs..." -ForegroundColor Gray - } - } catch { - Write-Host " Failed to start job $i : $_" -ForegroundColor Red - } -} - -Write-Host "" -Write-Host "[OK] All $jobCount jobs started" -ForegroundColor Green -Write-Host "" - -# 显示监控命令 -Write-Host "[3/4] Monitoring Commands (run in separate windows):" -ForegroundColor Cyan -Write-Host " Window 1 - HPA Status:" -ForegroundColor Yellow -Write-Host " kubectl get hpa data-engine-hpa -w" -ForegroundColor White -Write-Host "" -Write-Host " Window 2 - Pod Status:" -ForegroundColor Yellow -Write-Host " kubectl get pods -l app=data-engine -w" -ForegroundColor White -Write-Host "" -Write-Host " Window 3 - Resource Usage:" -ForegroundColor Yellow -Write-Host " while(`$true) { Clear-Host; kubectl top pods -l app=data-engine; kubectl get hpa data-engine-hpa; Start-Sleep 3 }" -ForegroundColor White -Write-Host "" - -# 等待用户确认 -Write-Host "[4/4] Load test is running..." -ForegroundColor Green -Write-Host "Press any key to stop all jobs and see results..." -ForegroundColor Yellow -$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") -Write-Host "" - -# 停止所有任务 -Write-Host "Stopping all jobs..." -ForegroundColor Cyan -Get-Job -Name "HPA-*" | Stop-Job - -# 收集结果 -Write-Host "Collecting results..." -ForegroundColor Cyan -$results = Get-Job -Name "HPA-*" | Receive-Job -Wait -Get-Job -Name "HPA-*" | Remove-Job - -# 统计 -$totalSuccess = 0 -$totalFailed = 0 -foreach ($result in $results) { - $totalSuccess += $result.Success - $totalFailed += $result.Failed -} - -Write-Host "" -Write-Host "========================================" -ForegroundColor Cyan -Write-Host " TEST RESULTS" -ForegroundColor Cyan -Write-Host "========================================" -ForegroundColor Cyan -Write-Host "" -Write-Host "Total Requests: $($totalSuccess + $totalFailed)" -ForegroundColor White -Write-Host "Successful: $totalSuccess" -ForegroundColor Green -Write-Host "Failed: $totalFailed" -ForegroundColor $(if ($totalFailed -gt 0) { "Red" } else { "Green" }) -Write-Host "" - -# 显示最终状态 -Write-Host "========================================" -ForegroundColor Cyan -Write-Host " FINAL STATUS" -ForegroundColor Cyan -Write-Host "========================================" -ForegroundColor Cyan -Write-Host "" -Write-Host "[HPA Status]" -ForegroundColor Yellow -kubectl get hpa data-engine-hpa -Write-Host "" -Write-Host "[Pod List]" -ForegroundColor Yellow -kubectl get pods -l app=data-engine -Write-Host "" -Write-Host "[Resource Usage]" -ForegroundColor Yellow -kubectl top pods -l app=data-engine 2>$null -if ($LASTEXITCODE -ne 0) { - Write-Host " Metrics not available" -ForegroundColor Gray -} -Write-Host "" -Write-Host "========================================" -ForegroundColor Cyan -Write-Host "Test completed!" -ForegroundColor Green \ No newline at end of file diff --git a/update.sql b/update.sql deleted file mode 100644 index 6c6548a..0000000 --- a/update.sql +++ /dev/null @@ -1,219 +0,0 @@ --- 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表示未删除';