Files
data-engine/service/copydata/population_report_service.go
2026-04-02 11:51:44 +08:00

238 lines
11 KiB
Go

package copydata
import (
dao "cid/dao/copydata"
dto "cid/model/dto/copydata"
entity "cid/model/entity/copydata"
"context"
"errors"
)
var PopulationReportService = new(populationReportService)
type populationReportService struct{}
// Create 创建人群报表数据
func (s *populationReportService) Create(ctx context.Context, req *dto.PopulationReportItem) (*dto.CreatePopulationReportRes, error) {
if req.ReportDateStr == "" {
return nil, errors.New("报告日期不能为空")
}
id, err := dao.PopulationReport.Insert(ctx, req)
if err != nil {
return nil, err
}
return &dto.CreatePopulationReportRes{Id: id}, nil
}
// BatchCreate 批量创建人群报表数据
func (s *populationReportService) BatchCreate(ctx context.Context, req []*dto.PopulationReportItem) (*dto.BatchCreatePopulationReportRes, error) {
if len(req) == 0 {
return nil, errors.New("批量创建数据不能为空")
}
successCount, failCount, failedIndexes, err := dao.PopulationReport.BatchInsert(ctx, req)
if err != nil {
return nil, err
}
return &dto.BatchCreatePopulationReportRes{
SuccessCount: successCount,
FailCount: failCount,
FailedItems: failedIndexes,
}, nil
}
// List 查询人群报表数据列表
func (s *populationReportService) List(ctx context.Context, req *dto.ListPopulationReportReq) (*dto.ListPopulationReportRes, error) {
list, total, err := dao.PopulationReport.List(ctx, req)
if err != nil {
return nil, err
}
// 转换为 DTO
items := s.convertToDTOs(list)
return &dto.ListPopulationReportRes{
List: items,
Total: total,
}, nil
}
// convertToDTOs 将实体列表转换为 DTO 列表
func (s *populationReportService) convertToDTOs(entities []*entity.PopulationReport) []*dto.PopulationReportItem {
items := make([]*dto.PopulationReportItem, 0, len(entities))
for _, e := range entities {
items = append(items, s.convertToDTO(e))
}
return items
}
// convertToDTO 将实体转换为 DTO
func (s *populationReportService) convertToDTO(e *entity.PopulationReport) *dto.PopulationReportItem {
return &dto.PopulationReportItem{
PhotoName: e.PhotoName,
PhotoIdStr: e.PhotoIdStr,
PhotoId: e.PhotoId,
ModPriceSegment: e.ModPriceSegment,
AgeSegment: e.AgeSegment,
Province: e.Province,
Gender: e.Gender,
MerchantProductId: e.MerchantProductId,
ReportDateStr: e.ReportDateStr,
CampaignId: e.CampaignId,
CampaignName: e.CampaignName,
UnitId: e.UnitId,
UnitName: e.UnitName,
CreativeId: e.CreativeId,
CreativeName: e.CreativeName,
AdPhotoPlayedFiveRatio: e.AdPhotoPlayedFiveRatio,
AdPhotoPlayedThreeRatio: e.AdPhotoPlayedThreeRatio,
OrderSubmitRoi: e.OrderSubmitRoi,
OrderSubmitAmt: e.OrderSubmitAmt,
EventOrderSubmitCost: e.EventOrderSubmitCost,
EventOrderSubmit: e.EventOrderSubmit,
EventOrderPaidRoi: e.EventOrderPaidRoi,
EventAppInvoked: e.EventAppInvoked,
EventAddShoppingCart: e.EventAddShoppingCart,
ConversionNumCost: e.ConversionNumCost,
AdEffectivePlayNum: e.AdEffectivePlayNum,
AdItemClick: e.AdItemClick,
CostTotal: e.CostTotal,
AdShow: e.AdShow,
AdShow1kCost: e.AdShow1kCost,
Impression: e.Impression,
PhotoClick: e.PhotoClick,
PhotoClickRatio: e.PhotoClickRatio,
Click: e.Click,
ActionbarClick: e.ActionbarClick,
ActionbarClickCost: e.ActionbarClickCost,
EspClickRatio: e.EspClickRatio,
ActionRatio: e.ActionRatio,
AdItemClickCount: e.AdItemClickCount,
EspLivePlayedSeconds: e.EspLivePlayedSeconds,
PlayedThreeSeconds: e.PlayedThreeSeconds,
Play3sRatio: e.Play3sRatio,
PlayedFiveSeconds: e.PlayedFiveSeconds,
Play5sRatio: e.Play5sRatio,
PlayedEnd: e.PlayedEnd,
PlayEndRatio: e.PlayEndRatio,
Share: e.Share,
Comment: e.Comment,
Likes: e.Likes,
Report: e.Report,
Block: e.Block,
ItemNegative: e.ItemNegative,
LiveShare: e.LiveShare,
LiveComment: e.LiveComment,
LiveReward: e.LiveReward,
EffectivePlayCount: e.EffectivePlayCount,
EffectivePlayRatio: e.EffectivePlayRatio,
ConversionNum: e.ConversionNum,
ConversionCostEsp: e.ConversionCostEsp,
Roi: e.Roi,
Gmv: e.Gmv,
T0Gmv: e.T0Gmv,
T1Gmv: e.T1Gmv,
T3Gmv: e.T3Gmv,
T7Gmv: e.T7Gmv,
T15Gmv: e.T15Gmv,
T30Gmv: e.T30Gmv,
T0Roi: e.T0Roi,
T1Roi: e.T1Roi,
T3Roi: e.T3Roi,
T7Roi: e.T7Roi,
T15Roi: e.T15Roi,
T30Roi: e.T30Roi,
PaiedOrder: e.PaiedOrder,
OrderRatio: e.OrderRatio,
T0OrderCnt: e.T0OrderCnt,
T0OrderCntCost: e.T0OrderCntCost,
T0OrderCntRatio: e.T0OrderCntRatio,
T1OrderCnt: e.T1OrderCnt,
T7OrderCnt: e.T7OrderCnt,
T15OrderCnt: e.T15OrderCnt,
T30OrderCnt: e.T30OrderCnt,
MerchantRecoFans: e.MerchantRecoFans,
T1Retention: e.T1Retention,
T7Retention: e.T7Retention,
T15Retention: e.T15Retention,
T30Retention: e.T30Retention,
T1RetentionRatio: e.T1RetentionRatio,
T7RetentionRatio: e.T7RetentionRatio,
T15RetentionRatio: e.T15RetentionRatio,
T30RetentionRatio: e.T30RetentionRatio,
ReservationSuccess: e.ReservationSuccess,
ReservationCost: e.ReservationCost,
StandardLivePlayedStarted: e.StandardLivePlayedStarted,
AdLivePlayCnt: e.AdLivePlayCnt,
AdLivePlayCntCost: e.AdLivePlayCntCost,
LiveAudienceCost: e.LiveAudienceCost,
LiveEventGoodsView: e.LiveEventGoodsView,
GoodsClickRatio: e.GoodsClickRatio,
DirectAttrPlatNewBuyerCnt: e.DirectAttrPlatNewBuyerCnt,
T30AttrPlatTotalBuyerCnt: e.T30AttrPlatTotalBuyerCnt,
DirectAttrSellerNewBuyerCnt: e.DirectAttrSellerNewBuyerCnt,
T30AttrSellerTotalBuyerCnt: e.T30AttrSellerTotalBuyerCnt,
T7IndirectOrderAmt: e.T7IndirectOrderAmt,
T7IndirectOrderCnt: e.T7IndirectOrderCnt,
FansT0GmvPerFans: e.FansT0GmvPerFans,
FansT3GmvPerFans: e.FansT3GmvPerFans,
FansT7GmvPerFans: e.FansT7GmvPerFans,
FansT15GmvPerFans: e.FansT15GmvPerFans,
FansT30GmvPerFans: e.FansT30GmvPerFans,
RecoFansCost: e.RecoFansCost,
QcpxWhiteboxDirectOrderPaymentAmt: e.QcpxWhiteboxDirectOrderPaymentAmt,
QcpxWhiteboxDirectOrderCnt: e.QcpxWhiteboxDirectOrderCnt,
FansT0Gmv: e.FansT0Gmv,
FansT1Gmv: e.FansT1Gmv,
FansT7Gmv: e.FansT7Gmv,
FansT15Gmv: e.FansT15Gmv,
FansT30Gmv: e.FansT30Gmv,
FansT0Roi: e.FansT0Roi,
FansT1Roi: e.FansT1Roi,
FansT7Roi: e.FansT7Roi,
FansT15Roi: e.FansT15Roi,
FansT30Roi: e.FansT30Roi,
T0ShopNewBuyerOrderPaymentAmt: e.T0ShopNewBuyerOrderPaymentAmt,
T1ShopNewBuyerOrderPaymentAmt: e.T1ShopNewBuyerOrderPaymentAmt,
T3ShopNewBuyerOrderPaymentAmt: e.T3ShopNewBuyerOrderPaymentAmt,
T7ShopNewBuyerOrderPaymentAmt: e.T7ShopNewBuyerOrderPaymentAmt,
T15ShopNewBuyerOrderPaymentAmt: e.T15ShopNewBuyerOrderPaymentAmt,
T30ShopNewBuyerOrderPaymentAmt: e.T30ShopNewBuyerOrderPaymentAmt,
T0ShopNewBuyerOrderCnt: e.T0ShopNewBuyerOrderCnt,
T1ShopNewBuyerOrderCnt: e.T1ShopNewBuyerOrderCnt,
T3ShopNewBuyerOrderCnt: e.T3ShopNewBuyerOrderCnt,
T7ShopNewBuyerOrderCnt: e.T7ShopNewBuyerOrderCnt,
T15ShopNewBuyerOrderCnt: e.T15ShopNewBuyerOrderCnt,
T30ShopNewBuyerOrderCnt: e.T30ShopNewBuyerOrderCnt,
T1NewBuyerRepurchaseRatio: e.T1NewBuyerRepurchaseRatio,
T3NewBuyerRepurchaseRatio: e.T3NewBuyerRepurchaseRatio,
T7NewBuyerRepurchaseRatio: e.T7NewBuyerRepurchaseRatio,
T15NewBuyerRepurchaseRatio: e.T15NewBuyerRepurchaseRatio,
T30NewBuyerRepurchaseRatio: e.T30NewBuyerRepurchaseRatio,
T0ShopNewBuyerRoi: e.T0ShopNewBuyerRoi,
T1ShopNewBuyerRoi: e.T1ShopNewBuyerRoi,
T3ShopNewBuyerRoi: e.T3ShopNewBuyerRoi,
T7ShopNewBuyerRoi: e.T7ShopNewBuyerRoi,
T15ShopNewBuyerRoi: e.T15ShopNewBuyerRoi,
T30ShopNewBuyerRoi: e.T30ShopNewBuyerRoi,
CreateCardOrderCnt: e.CreateCardOrderCnt,
ForwardTsCreateCardOrderCnt: e.ForwardTsCreateCardOrderCnt,
CreateCardOrderCost: e.CreateCardOrderCost,
ForwardTsCreateCardOrderCost: e.ForwardTsCreateCardOrderCost,
ActivateCardOrderCnt: e.ActivateCardOrderCnt,
ForwardTsActivateCardOrderCnt: e.ForwardTsActivateCardOrderCnt,
ActivateCardOrderCost: e.ActivateCardOrderCost,
ForwardTsActivateCardOrderCost: e.ForwardTsActivateCardOrderCost,
CreateCardOrderRatio: e.CreateCardOrderRatio,
ForwardTsCreateCardOrderRatio: e.ForwardTsCreateCardOrderRatio,
ActivateCardOrderCntRatio: e.ActivateCardOrderCntRatio,
ForwardTsActivateCardOrderRatio: e.ForwardTsActivateCardOrderRatio,
LivePlayCnt: e.LivePlayCnt,
ItemEntranceClkCnt: e.ItemEntranceClkCnt,
ShowCnt: e.ShowCnt,
}
}