定时任务抽取数据
This commit is contained in:
272
sync/mock_generator.go
Normal file
272
sync/mock_generator.go
Normal file
@@ -0,0 +1,272 @@
|
||||
package sync
|
||||
|
||||
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) GenerateCampaignReportRequest() *CampaignReportRequest {
|
||||
return &CampaignReportRequest{
|
||||
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: &CampaignSelectParam{
|
||||
CampaignIDs: []int64{1, 2, 3},
|
||||
},
|
||||
PageInfo: &PageInfo{
|
||||
CurrentPage: 1,
|
||||
PageSize: 20,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MockDataGenerator) GenerateCampaignReportResponse() *CampaignReportResponse {
|
||||
sumData := m.generateSumData()
|
||||
detailData := m.generateDetailData(5)
|
||||
|
||||
return &CampaignReportResponse{
|
||||
Code: 0,
|
||||
Message: "success",
|
||||
Data: &CampaignReportData{
|
||||
Sum: sumData,
|
||||
Detail: detailData,
|
||||
TotalCount: len(detailData),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MockDataGenerator) generateSumData() *CampaignReportSum {
|
||||
cost := m.randomFloat(1000, 10000)
|
||||
impression := m.randomInt64(10000, 100000)
|
||||
click := m.randomInt64(100, 1000)
|
||||
|
||||
return &CampaignReportSum{
|
||||
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: m.randomIntPtr(1, 100),
|
||||
CampaignName: "测试计划",
|
||||
UnitId: m.randomIntPtr(1, 50),
|
||||
UnitName: "测试单元",
|
||||
CreativeId: m.randomIntPtr(1, 20),
|
||||
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 (m *MockDataGenerator) generateDetailData(count int) []*CampaignReportItem {
|
||||
items := make([]*CampaignReportItem, count)
|
||||
for i := 0; i < count; i++ {
|
||||
items[i] = (*CampaignReportItem)(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
|
||||
}
|
||||
Reference in New Issue
Block a user