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, } }