Initial commit
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
package dailystatmod
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"stat/common/log"
|
||||
"stat/common/mongos"
|
||||
"stat/common/utils"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
// 初始化model
|
||||
func Init() {
|
||||
// 获取数据库表
|
||||
db = mongos.New(mongos.MgoManager, CollDailyStat)
|
||||
|
||||
indexes := []mongo.IndexModel{
|
||||
{
|
||||
Keys: bson.D{{Key: "sumDate", Value: 1}},
|
||||
},
|
||||
}
|
||||
|
||||
if _, err := db.CreateIndex(context.Background(), indexes); err != nil {
|
||||
panic(fmt.Sprintf("Model %s InitIndex error %+v", CollDailyStat, err))
|
||||
}
|
||||
}
|
||||
|
||||
// UpsertDailyStat 更新或插入一条统计记录
|
||||
func UpsertDailyStat(ctx context.Context, sumDate time.Time, appId int32, doc DailyStatDoc) (err error) {
|
||||
var filter = bson.M{
|
||||
"sumDate": sumDate,
|
||||
"appId": appId,
|
||||
}
|
||||
var update = mongos.ToBsonM(doc)
|
||||
|
||||
exists, err := db.Exists(ctx, filter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if exists {
|
||||
_, err = db.UpdateOne(ctx, filter, bson.M{"$set": update})
|
||||
} else {
|
||||
insertDoc := update
|
||||
insertDoc["sumDate"] = sumDate
|
||||
insertDoc["appId"] = appId
|
||||
|
||||
_, err = db.InsertOne(ctx, insertDoc)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 获取日常统计列表
|
||||
func GetDailyStatList(ctx context.Context, appId *[]int32, start, end *time.Time, skip, limit int64) (count int64, data []*DailyStatMod, err error) {
|
||||
filter := bson.M{}
|
||||
if appId != nil {
|
||||
filter["appId"] = bson.M{"$in": appId}
|
||||
}
|
||||
|
||||
if start != nil && end != nil {
|
||||
filter["sumDate"] = bson.M{"$gte": start, "$lt": end}
|
||||
} else if start != nil {
|
||||
filter["sumDate"] = bson.M{"$gte": start}
|
||||
} else if end != nil {
|
||||
filter["sumDate"] = bson.M{"$lt": end}
|
||||
}
|
||||
|
||||
sort := bson.D{{Key: "sumDate", Value: -1}}
|
||||
|
||||
opts := options.Find().SetSort(sort).SetSkip(skip).SetLimit(limit)
|
||||
|
||||
if err = db.Find(ctx, &data, filter, opts); err != nil {
|
||||
log.Error("channel GetDailyStatList Find err", log.E(err))
|
||||
return
|
||||
}
|
||||
|
||||
if count, err = db.Count(ctx, filter); err != nil {
|
||||
log.Error("channel GetDailyStatList Count err", log.E(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 获取日常统计列表
|
||||
func GetDailyStatTotalList(ctx context.Context, appId *int32, start, end *time.Time) (data []*DailyStatMod, err error) {
|
||||
filter := bson.M{}
|
||||
if appId != nil {
|
||||
filter["appId"] = appId
|
||||
}
|
||||
|
||||
if start != nil && end != nil {
|
||||
filter["sumDate"] = bson.M{"$gte": start, "$lt": end}
|
||||
} else if start != nil {
|
||||
filter["sumDate"] = bson.M{"$gte": start}
|
||||
} else if end != nil {
|
||||
filter["sumDate"] = bson.M{"$lt": end}
|
||||
}
|
||||
|
||||
if err = db.Find(ctx, &data, filter); err != nil {
|
||||
log.Error("channel GetDailyStatList Find err", log.E(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
type OnItem func(item *DailyStatMod)
|
||||
|
||||
// 获取日常统计列表
|
||||
func GetDailyStatTotalListShard(ctx context.Context, appId *[]int32, start, end *time.Time, shard time.Duration, onItem OnItem) error {
|
||||
if start == nil {
|
||||
b := utils.DefaultStatBeginTime
|
||||
start = &b
|
||||
}
|
||||
if end == nil {
|
||||
e := time.Now()
|
||||
end = &e
|
||||
}
|
||||
segments := utils.CalcTimeSegments(*start, *end, shard)
|
||||
for _, segment := range segments {
|
||||
filter := bson.M{
|
||||
"sumDate": bson.M{"$gte": segment.Begin, "$lt": segment.End},
|
||||
}
|
||||
if appId != nil {
|
||||
filter["appId"] = bson.M{"$in": appId}
|
||||
}
|
||||
list := make([]*DailyStatMod, 0)
|
||||
if err := db.Find(ctx, &list, filter); err != nil {
|
||||
log.Error("channel GetDailyStatList Find err", log.E(err))
|
||||
return err
|
||||
}
|
||||
for _, item := range list {
|
||||
onItem(item)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取日常统计列表
|
||||
func FindOneDailyStat(ctx context.Context, appId int32, sumDate time.Time) (data DailyStatMod, err error) {
|
||||
filter := bson.M{
|
||||
"appId": appId,
|
||||
"sumDate": sumDate,
|
||||
}
|
||||
|
||||
if err = db.FindOne(ctx, &data, filter); err != nil {
|
||||
log.Error("channel GetDailyStatList Find err", log.E(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func FindDailyStatList(ctx context.Context, appIds []int32, sumDate time.Time) (list []DailyStatMod, err error) {
|
||||
filter := bson.M{
|
||||
"appId": bson.M{"$in": appIds},
|
||||
"sumDate": sumDate,
|
||||
}
|
||||
|
||||
log.Info("FindDailyStatList", log.Any("filter", filter))
|
||||
|
||||
list = make([]DailyStatMod, 0)
|
||||
if err = db.Find(ctx, &list, filter); err != nil {
|
||||
log.Error("channel GetDailyStatList Find err", log.E(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package dailystatmod
|
||||
|
||||
import "time"
|
||||
|
||||
var (
|
||||
fixTime time.Time
|
||||
)
|
||||
|
||||
func init() {
|
||||
time.Local, _ = time.LoadLocation("Asia/Shanghai")
|
||||
fixTime, _ = time.ParseInLocation("2006-01-02", "2023-07-14", time.Local)
|
||||
}
|
||||
|
||||
func (s *DailyStatMod) CorrectValidData() *DailyStatMod {
|
||||
if s.SumDate.Before(fixTime) {
|
||||
s.TotalAmount = s.DirectAmount + s.FissionAmount + s.DeductionAmount
|
||||
s.NewTotalCount = s.NewDirectCount + s.NewFissionCount + s.NewDeductionCount
|
||||
s.TotalVisitCount = s.DirectVisitCount + s.FissionVisitCount + s.DeductionVisitCount
|
||||
s.LightAddCount = s.LightDirectCount + s.LightFissionCount + s.LightDeductionCount
|
||||
s.LightRechargeCount = s.LightDirectRechargeCount + s.LightFissionRechargeCount + s.LightDeductionRechargeCount
|
||||
s.LightRechargeAmount = s.LightDirectRechargeAmount + s.LightFissionRechargeAmount + s.LightDeductionRechargeAmount
|
||||
}
|
||||
return s
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
package dailystatmod
|
||||
|
||||
import (
|
||||
"stat/common/mongos"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 表名
|
||||
const CollDailyStat = "daily_stat"
|
||||
|
||||
var db *mongos.MongoTool
|
||||
|
||||
// DailyStatMod APP日常统计
|
||||
type DailyStatMod struct {
|
||||
SumDate time.Time `bson:"sumDate"` // 记录时间 按天对齐
|
||||
AppId int32 `bson:"appId"` // appId
|
||||
// 注册用户
|
||||
NewTotalCount int64 `bson:"newTotalCount,omitempty"` // 注册总量
|
||||
NewDirectCount int64 `bson:"newDirectCount,omitempty"` // 直推注册
|
||||
NewFissionCount int64 `bson:"newFissionCount,omitempty"` // 裂变注册
|
||||
NewDeductionCount int64 `bson:"newDeductionCount,omitempty"` // 扣量注册
|
||||
NewNaturalCount int64 `bson:"newNaturalCount,omitempty"` // 自然注册
|
||||
NewWebCount int64 `bson:"newWebCount,omitempty"` // 官网注册
|
||||
NewDistrictCount int64 `bson:"newDistrictCount,omitempty"` // 渠道注册
|
||||
NewNormalCount int64 `bson:"newNormalCount,omitempty"` // 自来注册
|
||||
AndroidAddCount int64 `bson:"androidAddCount,omitempty"` // android注册
|
||||
IosAddCount int64 `bson:"iosAddCount,omitempty"` // ios注册
|
||||
// 轻量注册
|
||||
LightAddCount int64 `bson:"lightAddCount,omitempty"` // ##轻量注册
|
||||
LightGuestAddCount int64 `bson:"lightGuestAddCount,omitempty"` // 轻量游客注册
|
||||
LightFormalAddCount int64 `bson:"lightFormalAddCount,omitempty"` // 轻量正式注册
|
||||
LightDirectCount int64 `bson:"lightDirectCount,omitempty"` // 轻量直推注册
|
||||
LightFissionCount int64 `bson:"lightFissionCount,omitempty"` // 轻量裂变注册
|
||||
LightDeductionCount int64 `bson:"lightDeductionCount,omitempty"` // 轻量扣量注册
|
||||
LightNaturalCount int64 `bson:"lightNaturalCount,omitempty"` // 轻量自然注册
|
||||
LightWebCount int64 `bson:"lightWebCount,omitempty"` // 轻量官网注册
|
||||
LightDistrictCount int64 `bson:"lightDistrictCount,omitempty"` // 轻量渠道注册
|
||||
LightNormalCount int64 `bson:"lightNormalCount,omitempty"` // 轻量自来注册
|
||||
// H5注册
|
||||
H5AddCount int64 `bson:"h5AddCount,omitempty"` // H5注册
|
||||
H5FormalCount int64 `bson:"h5FormalCount,omitempty"` // H5正式注册
|
||||
H5PcAddCount int64 `bson:"h5PcAddCount,omitempty"` // H5Pc注册
|
||||
H5IosAddCount int64 `bson:"h5IosAddCount,omitempty"` // H5Ios注册
|
||||
H5AndroidAddCount int64 `bson:"h5AndroidAddCount,omitempty"` // H5Android注册
|
||||
// 访问统计
|
||||
TotalVisitCount int64 `bson:"totalVisitCount,omitempty"` // 总计访问数
|
||||
DirectVisitCount int64 `bson:"directVisitCount,omitempty"` // 直推访问数
|
||||
FissionVisitCount int64 `bson:"fissionVisitCount,omitempty"` // 裂变访问数
|
||||
DeductionVisitCount int64 `bson:"deductionVisitCount,omitempty"` // 扣量访问数
|
||||
NaturalVisitCount int64 `bson:"naturalVisitCount,omitempty"` // 自然访问数
|
||||
TodayDistrictVisitCount int64 `bson:"todayDistrictVisitCount,omitempty"` // 当日渠道访问量
|
||||
TodayWebVisitCount int64 `bson:"todayWebVisitCount,omitempty"` // 当日官网访问量
|
||||
TodayNormalVisitCount int64 `bson:"todayNormalVisitCount,omitempty"` // 当日自来访问量
|
||||
TodayIosVisitCount int64 `bson:"todayIosVisitCount,omitempty"` // 当日IOS访问量
|
||||
TodayAndroidVisitCount int64 `bson:"todayAndroidVisitCount,omitempty"` // 当日安卓访问量
|
||||
// 轻量访问
|
||||
LightVisitCount int64 `bson:"lightVisitCount,omitempty"` // 当日Light访问量
|
||||
LightDirectVisitCount int64 `bson:"lightDirectVisitCount,omitempty"` // 轻量直推访问
|
||||
LightFissionVisitCount int64 `bson:"lightFissionVisitCount,omitempty"` // 轻量裂变访问
|
||||
LightDeductionVisitCount int64 `bson:"lightDeductionVisitCount,omitempty"` // 轻量扣量访问
|
||||
LightNaturalVisitCount int64 `bson:"lightNaturalVisitCount,omitempty"` // 轻量自然访问
|
||||
LightWebVisitCount int64 `bson:"lightWebVisitCount,omitempty"` // 轻量官网访问
|
||||
LightDistrictVisitCount int64 `bson:"lightDistrictVisitCount,omitempty"` // 轻量渠道访问
|
||||
LightNormalVisitCount int64 `bson:"lightNormalVisitCount,omitempty"` // 轻量自来访问
|
||||
// H5访问
|
||||
TodayH5VisitCount int64 `bson:"todayH5VisitCount,omitempty"` // 当日H5访问量
|
||||
TodayH5PcVisitCount int64 `bson:"todayH5PcVisitCount,omitempty"` // 当日H5Pc访问量
|
||||
TodayH5IosVisitCount int64 `bson:"todayH5IosVisitCount,omitempty"` // 当日H5Ios访问量
|
||||
TodayH5AndroidVisitCount int64 `bson:"todayH5AndroidVisitCount,omitempty"` // 当日H5Android访问量
|
||||
// 落地页访问
|
||||
LandpageAndroidClick int64 `bson:"landpageAndroidClick,omitempty"` // 落地页android访问次数
|
||||
LandpageIosAppstoreClick int64 `bson:"landpageIosAppstoreClick,omitempty"` // 落地页iOS商店包访问次数
|
||||
LandpageIosAthorClick int64 `bson:"landpageIosAthorClick,omitempty"` // 落地页iOS其他包访问次数
|
||||
LandpageIosH5Click int64 `bson:"landpageIosH5Click,omitempty"` // 落地页H5访问次数
|
||||
// 当日充值
|
||||
TotalAmount int64 `bson:"totalAmount,omitempty"` // 充值金额
|
||||
SuccessRechargeOrder int64 `bson:"successRechargeOrder,omitempty"` // 充值成功订单数
|
||||
DirectAmount int64 `bson:"directAmount,omitempty"` // 直推充值金额
|
||||
DirectAmountCount int64 `bson:"directAmountcount,omitempty"` // 直推充值订单
|
||||
FissionAmount int64 `bson:"fissionAmount,omitempty"` // 裂变充值金额
|
||||
FissionAmountCount int64 `bson:"fissionAmountcount,omitempty"` // 裂变充值订单
|
||||
DeductionAmount int64 `bson:"deductionAmount,omitempty"` // 扣量金额
|
||||
DeductionAmountCount int64 `bson:"deductionAmountCount,omitempty"` // 扣量充值订单
|
||||
NaturalAmount int64 `bson:"naturalAmount,omitempty"` // 自然充值
|
||||
NaturalAmountCount int64 `bson:"naturalAmountCount,omitempty"` // 自然充值订单
|
||||
TodayDistrictRecharge int64 `bson:"todayDistrictRecharge,omitempty"` // 当日渠道充值新增
|
||||
TodayWebRecharge int64 `bson:"todayWebRecharge,omitempty"` // 当日官网充值新增
|
||||
TodayNormalRecharge int64 `bson:"todayNormalRecharge,omitempty"` // 当日自来量充值新增
|
||||
TodayAndroidRecharge int64 `bson:"todayAndroidRecharge,omitempty"` // 当日android充值
|
||||
TodayIosRecharge int64 `bson:"todayIosRecharge,omitempty"` // 当日Ios充值
|
||||
TodayH5Recharge int64 `bson:"todayH5Recharge,omitempty"` // 当日H5充值
|
||||
TodayH5FormalRecharge int64 `bson:"todayH5FormalRecharge,omitempty"` // 当日H5Formal充值
|
||||
TodayH5PcRecharge int64 `bson:"todayH5PcRecharge,omitempty"` // 当日H5Pc充值
|
||||
TodayH5IosRecharge int64 `bson:"todayH5IosRecharge,omitempty"` // 当日H5Ios充值
|
||||
TodayH5AndroidRecharge int64 `bson:"todayH5AndroidRecharge,omitempty"` // 当日H5Android充值
|
||||
// 轻量充值次数
|
||||
LightRechargeCount int64 `bson:"lightRechargeCount,omitempty"` // 当日轻量充值次数
|
||||
LightDirectRechargeCount int64 `bson:"lightDirectRechargeCount,omitempty"` // 轻量直推充值次数
|
||||
LightFissionRechargeCount int64 `bson:"lightFissionRechargeCount,omitempty"` // 轻量裂变充值次数
|
||||
LightDeductionRechargeCount int64 `bson:"lightDeductionRechargeCount,omitempty"` // 轻量扣量充值次数
|
||||
LightNaturalRechargeCount int64 `bson:"lightNaturalRechargeCount,omitempty"` // 轻量自然充值次数
|
||||
LightWebRechargeCount int64 `bson:"lightWebRechargeCount,omitempty"` // 轻量官网充值次数
|
||||
LightDistrictRechargeCount int64 `bson:"lightDistrictRechargeCount,omitempty"` // 轻量渠道充值次数
|
||||
LightNormalRechargeCount int64 `bson:"lightNormalRechargeCount,omitempty"` // 轻量自来充值次数
|
||||
// 轻量充值钱数
|
||||
LightRechargeAmount int64 `bson:"lightRechargeAmount,omitempty"` // 当日轻量充值钱数
|
||||
LightDirectRechargeAmount int64 `bson:"lightDirectRechargeAmount,omitempty"` // 轻量直推充值钱数
|
||||
LightFissionRechargeAmount int64 `bson:"lightFissionRechargeAmount,omitempty"` // 轻量裂变充值钱数
|
||||
LightDeductionRechargeAmount int64 `bson:"lightDeductionRechargeAmount,omitempty"` // 轻量扣量充值钱数
|
||||
LightNaturalRechargeAmount int64 `bson:"lightNaturalRechargeAmount,omitempty"` // 轻量自然充值钱数
|
||||
LightWebRechargeAmount int64 `bson:"lightWebRechargeAmount,omitempty"` // 轻量官网充值钱数
|
||||
LightDistrictRechargeAmount int64 `bson:"lightDistrictRechargeAmount,omitempty"` // 轻量渠道充值钱数
|
||||
LightNormalRechargeAmount int64 `bson:"lightNormalRechargeAmount,omitempty"` // 轻量自来充值钱数
|
||||
// 其他充值
|
||||
VipPayByMoney int64 `bson:"vipPayByMoney,omitempty"` // 人民币购买
|
||||
VipPayByAmount int64 `bson:"vipPayByAmount,omitempty"` // 余额购买
|
||||
RepeatAmount int64 `bson:"repeatAmount,omitempty"` // 复冲金额
|
||||
RepeatCount int64 `bson:"repeatCount,omitempty"` // 复冲人数
|
||||
// 游戏充值
|
||||
GameRechageAmount int64 `bson:"gameRechageAmount,omitempty"` // 游戏充值
|
||||
GameWithdrawAmount int64 `bson:"gameWithdrawAmount,omitempty"` // 游戏提现
|
||||
//
|
||||
TodayVipRecharge int64 `bson:"todayVipRecharge,omitempty"` // 当日渠道充值新增
|
||||
NewVipPayMoney int64 `bson:"newVipPayMoney,omitempty"` // 新增购买VIP
|
||||
RepeatVipMoney int64 `bson:"repeatVipMoney,omitempty"` // 复冲VIP
|
||||
// 新增充值
|
||||
NewRechargeAmount int64 `bson:"newRechargeAmount,omitempty"` // 新增充值金额(新用户)
|
||||
NewRechargeCount int64 `bson:"newRechargeCount,omitempty"` // 新增充值数(新用户)
|
||||
|
||||
// 留存率
|
||||
Day1RetainRate float64 `bson:"day1RetainRate,omitempty"` // 次日留存率
|
||||
Day3RetainRate float64 `bson:"day3RetainRate,omitempty"` // 3日留存率
|
||||
Day7RetainRate float64 `bson:"day7RetainRate,omitempty"` // 7日留存率
|
||||
// 订单
|
||||
TotalRechargeOrder int64 `bson:"totalRechargeOrder,omitempty"` // 拉起订单数
|
||||
// 时间
|
||||
UpdatedAt time.Time `bson:"updatedAt,omitempty"` // 更新时间
|
||||
}
|
||||
|
||||
type DailyStatDoc struct {
|
||||
// 注册用户
|
||||
NewTotalCount *int64 `bson:"newTotalCount,omitempty"` // **注册总量
|
||||
NewDirectCount *int64 `bson:"newDirectCount,omitempty"` // 直推注册
|
||||
NewFissionCount *int64 `bson:"newFissionCount,omitempty"` // 裂变注册
|
||||
NewDeductionCount *int64 `bson:"newDeductionCount,omitempty"` // 扣量注册
|
||||
NewNaturalCount *int64 `bson:"newNaturalCount,omitempty"` // 自然注册
|
||||
NewWebCount *int64 `bson:"newWebCount,omitempty"` // 官网注册
|
||||
NewDistrictCount *int64 `bson:"newDistrictCount,omitempty"` // 渠道注册
|
||||
NewNormalCount *int64 `bson:"newNormalCount,omitempty"` // 自来注册
|
||||
AndroidAddCount *int64 `bson:"androidAddCount,omitempty"` // android注册
|
||||
IosAddCount *int64 `bson:"iosAddCount,omitempty"` // ios注册
|
||||
// 轻量注册
|
||||
LightAddCount *int64 `bson:"lightAddCount,omitempty"` // ##轻量注册
|
||||
LightGuestAddCount *int64 `bson:"lightGuestAddCount,omitempty"` // 轻量游客注册
|
||||
LightFormalAddCount *int64 `bson:"lightFormalAddCount,omitempty"` // 轻量正式注册
|
||||
LightDirectCount *int64 `bson:"lightDirectCount,omitempty"` // 轻量直推注册
|
||||
LightFissionCount *int64 `bson:"lightFissionCount,omitempty"` // 轻量裂变注册
|
||||
LightDeductionCount *int64 `bson:"lightDeductionCount,omitempty"` // 轻量扣量注册
|
||||
LightNaturalCount *int64 `bson:"lightNaturalCount,omitempty"` // 轻量自然注册
|
||||
LightWebCount *int64 `bson:"lightWebCount,omitempty"` // 轻量官网注册
|
||||
LightDistrictCount *int64 `bson:"lightDistrictCount,omitempty"` // 轻量渠道注册
|
||||
LightNormalCount *int64 `bson:"lightNormalCount,omitempty"` // 轻量自来注册
|
||||
// H5注册
|
||||
H5AddCount *int64 `bson:"h5AddCount,omitempty"` // H5注册
|
||||
H5FormalCount *int64 `bson:"h5FormalCount,omitempty"` // H5正式注册
|
||||
H5PcAddCount *int64 `bson:"h5PcAddCount,omitempty"` // H5Pc注册
|
||||
H5IosAddCount *int64 `bson:"h5IosAddCount,omitempty"` // H5Ios注册
|
||||
H5AndroidAddCount *int64 `bson:"h5AndroidAddCount,omitempty"` // H5Android注册
|
||||
// 访问统计
|
||||
TotalVisitCount *int64 `bson:"totalVisitCount,omitempty"` // **总计访问数
|
||||
DirectVisitCount *int64 `bson:"directVisitCount,omitempty"` // 直推访问数
|
||||
FissionVisitCount *int64 `bson:"fissionVisitCount,omitempty"` // 裂变访问数
|
||||
DeductionVisitCount *int64 `bson:"deductionVisitCount,omitempty"` // 扣量访问数
|
||||
NaturalVisitCount *int64 `bson:"naturalVisitCount,omitempty"` // **自然访问数
|
||||
TodayDistrictVisitCount *int64 `bson:"todayDistrictVisitCount,omitempty"` // **当日渠道访问量
|
||||
TodayWebVisitCount *int64 `bson:"todayWebVisitCount,omitempty"` // **当日官网访问量
|
||||
TodayNormalVisitCount *int64 `bson:"todayNormalVisitCount,omitempty"` // **当日自来访问量
|
||||
TodayIosVisitCount *int64 `bson:"todayIosVisitCount,omitempty"` // 当日IOS访问量
|
||||
TodayAndroidVisitCount *int64 `bson:"todayAndroidVisitCount,omitempty"` // 当日安卓访问量
|
||||
// 轻量访问
|
||||
LightVisitCount *int64 `bson:"lightVisitCount,omitempty"` // 当日Light访问量
|
||||
LightDirectVisitCount *int64 `bson:"lightDirectVisitCount,omitempty"` // 轻量直推访问
|
||||
LightFissionVisitCount *int64 `bson:"lightFissionVisitCount,omitempty"` // 轻量裂变访问
|
||||
LightDeductionVisitCount *int64 `bson:"lightDeductionVisitCount,omitempty"` // 轻量扣量访问
|
||||
LightNaturalVisitCount *int64 `bson:"lightNaturalVisitCount,omitempty"` // 轻量自然访问
|
||||
LightWebVisitCount *int64 `bson:"lightWebVisitCount,omitempty"` // 轻量官网访问
|
||||
LightDistrictVisitCount *int64 `bson:"lightDistrictVisitCount,omitempty"` // 轻量渠道访问
|
||||
LightNormalVisitCount *int64 `bson:"lightNormalVisitCount,omitempty"` // 轻量自来访问
|
||||
// H5访问
|
||||
TodayH5VisitCount *int64 `bson:"todayH5VisitCount,omitempty"` // 当日H5访问量
|
||||
TodayH5PcVisitCount *int64 `bson:"todayH5PcVisitCount,omitempty"` // 当日H5Pc访问量
|
||||
TodayH5IosVisitCount *int64 `bson:"todayH5IosVisitCount,omitempty"` // 当日H5Ios访问量
|
||||
TodayH5AndroidVisitCount *int64 `bson:"todayH5AndroidVisitCount,omitempty"` // 当日H5Android访问量
|
||||
// 落地页访问
|
||||
LandpageAndroidClick *int64 `bson:"landpageAndroidClick,omitempty"` // 落地页android访问次数
|
||||
LandpageIosAppstoreClick *int64 `bson:"landpageIosAppstoreClick,omitempty"` // 落地页iOS商店包访问次数
|
||||
LandpageIosAthorClick *int64 `bson:"landpageIosAthorClick,omitempty"` // 落地页iOS其他包访问次数
|
||||
LandpageIosH5Click *int64 `bson:"landpageIosH5Click,omitempty"` // 落地页H5访问次数
|
||||
// 当日充值
|
||||
TotalAmount *int64 `bson:"totalAmount,omitempty"` // 充值金额
|
||||
SuccessRechargeOrder *int64 `bson:"successRechargeOrder,omitempty"` // 充值成功订单数
|
||||
DirectAmount *int64 `bson:"directAmount,omitempty"` // 直推充值金额
|
||||
DirectAmountCount *int64 `bson:"directAmountcount,omitempty"` // 直推充值订单
|
||||
FissionAmount *int64 `bson:"fissionAmount,omitempty"` // 裂变充值金额
|
||||
FissionAmountCount *int64 `bson:"fissionAmountcount,omitempty"` // 裂变充值订单
|
||||
DeductionAmount *int64 `bson:"deductionAmount,omitempty"` // 扣量金额
|
||||
DeductionAmountCount *int64 `bson:"deductionAmountCount,omitempty"` // 扣量充值订单
|
||||
NaturalAmount *int64 `bson:"naturalAmount,omitempty"` // 自然充值
|
||||
NaturalAmountCount *int64 `bson:"naturalAmountCount,omitempty"` // **自然充值订单
|
||||
TodayDistrictRecharge *int64 `bson:"todayDistrictRecharge,omitempty"` // 当日渠道充值新增
|
||||
TodayWebRecharge *int64 `bson:"todayWebRecharge,omitempty"` // 当日官网充值新增
|
||||
TodayNormalRecharge *int64 `bson:"todayNormalRecharge,omitempty"` // 当日自来量充值新增
|
||||
TodayAndroidRecharge *int64 `bson:"todayAndroidRecharge,omitempty"` // 当日android充值
|
||||
TodayIosRecharge *int64 `bson:"todayIosRecharge,omitempty"` // 当日Ios充值
|
||||
TodayH5Recharge *int64 `bson:"todayH5Recharge,omitempty"` // 当日H5充值
|
||||
TodayH5FormalRecharge *int64 `bson:"todayH5FormalRecharge,omitempty"` // 当日H5Formal充值
|
||||
TodayH5PcRecharge *int64 `bson:"todayH5PcRecharge,omitempty"` // 当日H5Pc充值
|
||||
TodayH5IosRecharge *int64 `bson:"todayH5IosRecharge,omitempty"` // 当日H5Ios充值
|
||||
TodayH5AndroidRecharge *int64 `bson:"todayH5AndroidRecharge,omitempty"` // 当日H5Android充值
|
||||
// 轻量充值次数
|
||||
LightRechargeCount *int64 `bson:"lightRechargeCount,omitempty"` // 当日轻量充值次数
|
||||
LightDirectRechargeCount *int64 `bson:"lightDirectRechargeCount,omitempty"` // 轻量直推充值次数
|
||||
LightFissionRechargeCount *int64 `bson:"lightFissionRechargeCount,omitempty"` // 轻量裂变充值次数
|
||||
LightDeductionRechargeCount *int64 `bson:"lightDeductionRechargeCount,omitempty"` // 轻量扣量充值次数
|
||||
LightNaturalRechargeCount *int64 `bson:"lightNaturalRechargeCount,omitempty"` // 轻量自然充值次数
|
||||
LightWebRechargeCount *int64 `bson:"lightWebRechargeCount,omitempty"` // 轻量官网充值次数
|
||||
LightDistrictRechargeCount *int64 `bson:"lightDistrictRechargeCount,omitempty"` // 轻量渠道充值次数
|
||||
LightNormalRechargeCount *int64 `bson:"lightNormalRechargeCount,omitempty"` // 轻量自来充值次数
|
||||
// 轻量充值钱数
|
||||
LightRechargeAmount *int64 `bson:"lightRechargeAmount,omitempty"` // 当日轻量充值钱数
|
||||
LightDirectRechargeAmount *int64 `bson:"lightDirectRechargeAmount,omitempty"` // 轻量直推充值钱数
|
||||
LightFissionRechargeAmount *int64 `bson:"lightFissionRechargeAmount,omitempty"` // 轻量裂变充值钱数
|
||||
LightDeductionRechargeAmount *int64 `bson:"lightDeductionRechargeAmount,omitempty"` // 轻量扣量充值钱数
|
||||
LightNaturalRechargeAmount *int64 `bson:"lightNaturalRechargeAmount,omitempty"` // 轻量自然充值钱数
|
||||
LightWebRechargeAmount *int64 `bson:"lightWebRechargeAmount,omitempty"` // 轻量官网充值钱数
|
||||
LightDistrictRechargeAmount *int64 `bson:"lightDistrictRechargeAmount,omitempty"` // 轻量渠道充值钱数
|
||||
LightNormalRechargeAmount *int64 `bson:"lightNormalRechargeAmount,omitempty"` // 轻量自来充值钱数
|
||||
// 其他充值
|
||||
VipPayByMoney *int64 `bson:"vipPayByMoney,omitempty"` // 人民币购买
|
||||
VipPayByAmount *int64 `bson:"vipPayByAmount,omitempty"` // 余额购买
|
||||
RepeatAmount *int64 `bson:"repeatAmount,omitempty"` // 复冲金额
|
||||
RepeatCount *int64 `bson:"repeatCount,omitempty"` // 复冲人数
|
||||
// 游戏充值
|
||||
GameRechageAmount *int64 `bson:"gameRechageAmount,omitempty"` // 游戏充值
|
||||
GameWithdrawAmount *int64 `bson:"gameWithdrawAmount,omitempty"` // 游戏提现
|
||||
//
|
||||
TodayVipRecharge *int64 `bson:"todayVipRecharge,omitempty"` // 当日渠道充值新增
|
||||
NewVipPayMoney *int64 `bson:"newVipPayMoney,omitempty"` // 新增购买VIP
|
||||
RepeatVipMoney *int64 `bson:"repeatVipMoney,omitempty"` // 复冲VIP
|
||||
// 新增充值
|
||||
NewRechargeAmount *int64 `bson:"newRechargeAmount,omitempty"` // 新增充值金额(新用户)
|
||||
NewRechargeCount *int64 `bson:"newRechargeCount,omitempty"` // 新增充值数(新用户)
|
||||
|
||||
// 留存率
|
||||
Day1RetainRate *float64 `bson:"day1RetainRate,omitempty"` // 次日留存率
|
||||
Day3RetainRate *float64 `bson:"day3RetainRate,omitempty"` // 3日留存率
|
||||
Day7RetainRate *float64 `bson:"day7RetainRate,omitempty"` // 7日留存率
|
||||
// 订单
|
||||
TotalRechargeOrder *int64 `bson:"totalRechargeOrder,omitempty"` // 拉起订单数
|
||||
}
|
||||
Reference in New Issue
Block a user