Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"archive.go",
"article.go",
"data.go",
],
importpath = "go-common/app/interface/main/creative/model/data",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/creative/model/archive:go_default_library",
"//app/interface/main/creative/model/medal:go_default_library",
"//library/time:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,159 @@
package data
import "go-common/app/interface/main/creative/model/archive"
// ArchiveStat for archive stat.
type ArchiveStat struct {
Play int64 `json:"play"`
Dm int64 `json:"dm"`
Reply int64 `json:"reply"`
Like int64 `json:"like"`
Coin int64 `json:"coin"`
Elec int64 `json:"elec"`
Fav int64 `json:"fav"`
Share int64 `json:"share"`
}
// ArchiveSource for archive source
type ArchiveSource struct {
Mainsite int64 `json:"mainsite"`
Outsite int64 `json:"outsite"`
Mobile int64 `json:"mobile"`
Others int64 `json:"others"`
WebPC int64 `json:"-"`
WebH5 int64 `json:"-"`
IOS int64 `json:"-"`
Android int64 `json:"-"`
}
// ArchiveGroup for archive group.
type ArchiveGroup struct {
Fans int64 `json:"fans"`
Guest int64 `json:"guest"`
}
// ArchiveArea for archive area.
type ArchiveArea struct {
Location string `json:"location"`
Count int64 `json:"count"`
}
// ArchiveData for single archive stats.
type ArchiveData struct {
ArchiveStat *ArchiveStat `json:"stat"`
ArchiveSource *ArchiveSource `json:"source"`
ArchiveGroup *ArchiveGroup `json:"group"`
ArchivePlay *ArchivePlay `json:"play"`
ArchiveAreas []*ArchiveArea `json:"area"`
Videos []*archive.SimpleVideo `json:"videos,omitempty"`
}
// UpBaseStat for up base.
type UpBaseStat struct {
View int64 `json:"view"`
Reply int64 `json:"reply"`
Dm int64 `json:"dm"`
Fans int64 `json:"fans"`
Fav int64 `json:"fav"`
Like int64 `json:"like"`
Share int64 `json:"share"`
Coin int64 `json:"coin"`
Elec int64 `json:"elec"`
}
// ViewerBase for up base data analysis.
type ViewerBase struct {
Male int64 `json:"male"`
Female int64 `json:"female"`
AgeOne int64 `json:"age_one"`
AgeTwo int64 `json:"age_two"`
AgeThree int64 `json:"age_three"`
AgeFour int64 `json:"age_four"`
PlatPC int64 `json:"plat_pc"`
PlatH5 int64 `json:"plat_h5"`
PlatOut int64 `json:"plat_out"`
PlatIOS int64 `json:"plat_ios"`
PlatAndroid int64 `json:"plat_android"`
PlatOtherApp int64 `json:"plat_other_app"`
}
// ViewerActionHour for up action data analysis.
type ViewerActionHour struct {
View map[int]int `json:"view"`
Reply map[int]int `json:"reply"`
Dm map[int]int `json:"danmu"`
Elec map[int]int `json:"elec"`
Contract map[int]int `json:"contract"`
}
// Trend for up trend data analysis.
type Trend struct {
Ty map[int]int64
Tag map[int]int64
}
// UpDataIncrMeta for Play/Dm/Reply/Fav/Share/Elec/Coin incr.
type UpDataIncrMeta struct {
Incr int `json:"-"`
TopAIDList map[int]int64 `json:"-"`
TopIncrList map[int]int `json:"-"`
Rank map[int]int `json:"-"`
TyRank map[string]int `json:"-"`
}
const (
//Play 播放相关.
Play = int8(1)
//Dm 弹幕相关.
Dm = int8(2)
//Reply 评论相关.
Reply = int8(3)
//Share 分享相关.
Share = int8(4)
//Coin 投币相关.
Coin = int8(5)
//Fav 收藏相关.
Fav = int8(6)
//Elec 充电相关.
Elec = int8(7)
//Like 点赞相关.
Like = int8(8)
)
var (
typeNameMap = map[int8]string{
Play: "play",
Dm: "dm",
Reply: "reply",
Share: "share",
Coin: "coin",
Fav: "fav",
Elec: "elec",
Like: "like",
}
)
//IncrTy return incr data type.
func IncrTy(ty int8) (val string, ok bool) {
val, ok = typeNameMap[ty]
return
}
// ArchiveMaxStat 获取单个稿件最多播放、评论、弹幕。。。
type ArchiveMaxStat struct {
PlayV int64 `family:"f" qualifier:"play_v" json:"play_v"`
PlayA int64 `family:"f" qualifier:"play_a" json:"play_a"`
CoinV int64 `family:"f" qualifier:"coin_v" json:"coin_v"`
CoinA int64 `family:"f" qualifier:"coin_a" json:"coin_a"`
LikeV int64 `family:"f" qualifier:"like_v" json:"like_v"`
LikeA int64 `family:"f" qualifier:"like_a" json:"like_a"`
ReplyV int64 `family:"f" qualifier:"reply_v" json:"reply_v"`
ReplyA int64 `family:"f" qualifier:"reply_a" json:"reply_a"`
ShareV int64 `family:"f" qualifier:"share_v" json:"share_v"`
ShareA int64 `family:"f" qualifier:"share_a" json:"share_a"`
FavV int64 `family:"f" qualifier:"fav_v" json:"fav_v"`
FavA int64 `family:"f" qualifier:"fav_a" json:"fav_a"`
DmV int64 `family:"f" qualifier:"dm_v" json:"dm_v"`
DmA int64 `family:"f" qualifier:"dm_a" json:"dm_a"`
FromPhoneNum int64 `family:"f" qualifier:"from_phone_num" json:"from_phone_num"`
}

View File

@@ -0,0 +1,66 @@
package data
import xtime "go-common/library/time"
const (
_ byte = iota
//ArtView 阅读
ArtView
//ArtReply 评论
ArtReply
//ArtShare 分享
ArtShare
//ArtCoin 硬币
ArtCoin
//ArtFavTBL 收藏
ArtFavTBL
//ArtLikeTBL 喜欢
ArtLikeTBL
)
var (
artTypeMap = map[byte]struct{}{
ArtView: {},
ArtReply: {},
ArtShare: {},
ArtCoin: {},
ArtFavTBL: {},
ArtLikeTBL: {},
}
)
//CheckType check article data type.
func CheckType(ty byte) bool {
_, ok := artTypeMap[ty]
return ok
}
// ArtTrend for article trend.
type ArtTrend struct {
DateKey int64 `json:"date_key"`
TotalIncr int64 `json:"total_inc"`
}
// ArtRankMap for article rank source.
type ArtRankMap struct {
AIDs map[int]int64
Incrs map[int]int
}
// ArtRankList for article top 10 list.
type ArtRankList struct {
Arts []*ArtMeta `json:"art_rank"`
}
// ArtMeta for article rank meta data.
type ArtMeta struct {
AID int64 `json:"aid"`
Incr int `json:"incr"`
Title string `json:"title"`
PTime xtime.Time `json:"ptime"`
}
// ArtRead for article read source.
type ArtRead struct {
Source map[string]int `family:"f" json:"source"`
}

View File

@@ -0,0 +1,276 @@
package data
import (
xtime "go-common/library/time"
"go-common/app/interface/main/creative/model/medal"
)
// Stat info
type Stat struct {
FanLast int64 `json:"fan_last"`
Fan int64 `json:"fan"`
DmLast int64 `json:"dm_last"`
Dm int64 `json:"dm"`
CommentLast int64 `json:"comment_last"`
Comment int64 `json:"comment"`
Play int64 `json:"play"`
PlayLast int64 `json:"play_last"`
Fav int64 `json:"fav"`
FavLast int64 `json:"fav_last"`
Like int64 `json:"like"`
LikeLast int64 `json:"like_last"`
Share int64 `json:"share"`
ShareLast int64 `json:"share_last"`
Elec int64 `json:"elec"`
ElecLast int64 `json:"elec_last"`
Coin int64 `json:"coin"`
CoinLast int64 `json:"coin_last"`
Day30 map[string]int `json:"30,omitempty"`
Arcs map[string][]*Arc `json:"arcs"`
}
// Arc Arcs info.
type Arc struct {
Aid int64 `json:"aid"`
Title string `json:"title"`
Click int64 `json:"click"`
}
// Tags Arcs info
type Tags struct {
Tags []string `json:"tags"`
}
// CheckedTag tags with checked
type CheckedTag struct {
Tag string `json:"tag"`
Checked int `json:"checked"`
}
// AppStat arc stat.
type AppStat struct {
Date string `json:"date"`
Num int64 `json:"num"`
}
// AppStatList for arc stat list.
type AppStatList struct {
Danmu []*AppStat `json:"danmu"`
View []*AppStat `json:"view"`
Fans []*AppStat `json:"fans"`
Comment []*AppStat `json:"comment"`
Show int8 `json:"show"`
}
// ViewerTrend for up trend data.
type ViewerTrend struct {
Tag map[int]string `json:"tag"`
Ty map[string]int64 `json:"ty"`
}
// ViewerIncr for up increment data.
type ViewerIncr struct {
Arcs []*ArcInc `json:"arc_inc"`
TotalIncr int `json:"total_inc"`
TyRank map[string]int `json:"type_rank"`
}
// ArcInc for archive increment data.
type ArcInc struct {
AID int64 `json:"aid"`
Incr int `json:"incr"`
Title string `json:"title"`
DayTime int64 `json:"daytime"`
PTime xtime.Time `json:"ptime"`
}
// PeriodTip period tip for data.
type PeriodTip struct {
ModuleOne string `json:"module_one"`
ModuleTwo string `json:"module_two"`
ModuleThree string `json:"module_three"`
ModuleFour string `json:"module_four"`
}
// AppViewerIncr for up increment data.
type AppViewerIncr struct {
DateKey int64 `json:"date_key"`
Arcs []*ArcInc `json:"arc_inc"`
TotalIncr int `json:"total_inc"`
TyRank []*Rank `json:"type_rank"`
}
// ThirtyDay for 30 days data.
type ThirtyDay struct {
DateKey int64 `json:"date_key"`
TotalIncr int64 `json:"total_inc"`
}
// Rank type rank for up data.
type Rank struct {
Name string `json:"name"`
Rank int `json:"rank"`
}
// CreatorDataShow for display archive/article data module.
type CreatorDataShow struct {
Archive int `json:"archive"`
Article int `json:"article"`
}
// AppFan for stat.
type AppFan struct {
Summary map[string]int64 `json:"summary"`
RankMap map[string]map[string]int32 `json:"-"`
TypeList map[string]int64 `json:"type_list"`
TagList []*Rank `json:"tag_list"`
ViewerArea map[string]int64 `json:"viewer_area"`
ViewerBase *ViewerBase `json:"viewer_base"`
}
//AppOverView for data overview.
type AppOverView struct {
Stat *Stat `json:"stat"`
AllArcIncr []*ThirtyDay `json:"all_arc_inc"`
SingleArcInc []*ArcInc `json:"single_arc_inc"`
}
//VideoQuit customer play Retention Rate
type VideoQuit struct {
Point []int64 `json:"point"`
Duration []int64 `json:"duration"`
}
//for fan manager top mids.
const (
//Total 粉丝管理-累计数据
Total = iota
//Seven 粉丝管理-7日数据
Seven
//Thirty 粉丝管理-30日数据
Thirty
//Ninety 粉丝管理-90日数据
Ninety
//PlayDuration 播放时长
PlayDuration = "video_play"
//VideoAct 视频互动
VideoAct = "video_act"
//DynamicAct 动态互动
DynamicAct = "dynamic_act"
)
// WebFan for stat.
type WebFan struct {
RankMap map[string]map[string]int32 `json:"-"`
Summary map[string]int32 `json:"summary"`
RankList map[string][]*RankInfo `json:"rank_list"`
RankMedal map[string][]*medal.FansRank `json:"rank_medal"`
Source map[string]int32 `json:"source"`
}
// FansAnalysis for medal fans.
type FansAnalysis struct {
F map[string]int32 `family:"f"`
T map[string]int32 `family:"t"`
S map[string]int32 `family:"s"`
}
//FansAnalysisByF for f family
type FansAnalysisByF struct {
All int32 `family:"f" qualifier:"all" json:"total"` //总粉丝
Inc int32 `family:"f" qualifier:"inc" json:"inc"` //新增粉丝
Act int32 `family:"f" qualifier:"act" json:"active"` //活跃粉丝
Mdl int32 `family:"f" qualifier:"mdl" json:"medal"` //领取勋章粉丝
Elec int32 `family:"f" qualifier:"elec" json:"elec"` //充电粉丝
ActDiff int32 `family:"f" qualifier:"act_diff" json:"act_diff"` //活跃粉丝(增量)
MdlDiff int32 `family:"f" qualifier:"mdl_diff" json:"mdl_diff"` //领取勋章粉丝(增量)
ElecDiff int32 `family:"f" qualifier:"elec_diff" json:"elec_diff"` //领取勋章粉丝(增量)
Play int32 `family:"f" qualifier:"v" json:"v"` //播放粉丝占比*10000
Dm int32 `family:"f" qualifier:"dm" json:"dm"` //弹幕粉丝占比*10000
Reply int32 `family:"f" qualifier:"r" json:"r"` //评论粉丝占比*10000
Coin int32 `family:"f" qualifier:"c" json:"c"` //投币粉丝占比*10000
//粉丝活跃占比
InterRatio int32 `family:"f" qualifier:"inter" json:"inter"` //互动活跃度*10000
PlayRatio int32 `family:"f" qualifier:"vv" json:"vv"` //观看活跃度*10000
DanmuRatio int32 `family:"f" qualifier:"da" json:"da"` //弹幕活跃度占比*10000
ReplyRatio int32 `family:"f" qualifier:"re" json:"re"` //评论活跃度占比*10000
CoinRatio int32 `family:"f" qualifier:"co" json:"co"` //投币活跃度占比*10000
FavRatio int32 `family:"f" qualifier:"fv" json:"fv"` //收藏活跃度占比*10000
ShareRatio int32 `family:"f" qualifier:"sh" json:"sh"` //投币活跃度占比*10000
LikeRatio int32 `family:"f" qualifier:"lk" json:"lk"` //收藏活跃度占比*10000
//3.4需求
NewAct int32 `family:"f" qualifier:"new_act" json:"new_act"` //活跃粉丝数字段
NewInter int32 `family:"f" qualifier:"new_inter" json:"new_inter"` //互动活跃度字段
NewReply int32 `family:"f" qualifier:"new_re" json:"new_re"` //评论
NewDanmu int32 `family:"f" qualifier:"new_da" json:"new_da"` //弹幕
NewCoin int32 `family:"f" qualifier:"new_co" json:"new_co"` //投币
NewLike int32 `family:"f" qualifier:"new_lk" json:"new_lk"` //投币
NewFav int32 `family:"f" qualifier:"new_fv" json:"new_fv"` //投币
NewShare int32 `family:"f" qualifier:"new_sh" json:"new_sh"` //投币
LiveDanmu int32 `family:"f" qualifier:"live_dm" json:"live_dm"` //直播弹幕
LiveCoin int32 `family:"f" qualifier:"live_coin" json:"live_coin"` //直播送礼
}
//FansAnalysisByT for family t
type FansAnalysisByT struct {
PlayDuration map[string]int32 `family:"t" qualifier:"dr" json:"dr"` //播放时长排行
VidoeAction map[string]int32 `family:"t" qualifier:"act" json:"act"` //视频互动量排行
DynamicAction map[string]int32 `family:"t" qualifier:"dy" json:"dy"` //动态互动量排行
}
//FansAnalysisByS for family s
type FansAnalysisByS struct { //粉丝来源页面占比
Space int32 `family:"s" qualifier:"pf1" json:"space"` //视频互动量排行
Main int32 `family:"s" qualifier:"pf2" json:"main"` //主站播放页
Live int32 `family:"s" qualifier:"pf4" json:"live"` //直播
Audio int32 `family:"s" qualifier:"pf5" json:"audio"` // 音乐
Article int32 `family:"s" qualifier:"pf6" json:"article"` // 文章
}
// RankInfo str
type RankInfo struct {
MID int64 `json:"mid"`
Uname string `json:"uname"`
Photo string `json:"photo"`
Relation int `json:"relation"`
}
// PlaySource for play soucre.
type PlaySource struct {
PlayProportion map[string]int32 `json:"play_proportion"`
PageSource map[string]int32 `json:"page_source"`
}
// ArchivePlay for archive play.
type ArchivePlay struct {
AID int64 `json:"aid"`
View int32 `json:"view"`
Rate int32 `json:"rate"`
CTime int32 `json:"ctime"`
Duration int64 `json:"duration"`
AvgDuration int64 `json:"avg_duration"`
Title string `json:"title"`
}
//ArchivePlayList for arc play list.
type ArchivePlayList struct {
ArcPlayList []*ArchivePlay `json:"arc_play_list"`
}
// UpFansMedal for medal fans.
type UpFansMedal struct {
MedalFans int32 `family:"f" qualifier:"medal_fans" json:"medal_fans"` //领取勋章数
WearMedalFans int32 `family:"f" qualifier:"wear_medal_fans" json:"wear_medal_fans"` //佩戴勋章数
}
// Tip for base survey.
func Tip() (pt *PeriodTip) {
pt = &PeriodTip{
ModuleOne: "各维度每日12:00 a.m. 更新前一日数据",
ModuleTwo: "每日12:00 a.m. 更新前一日数据",
ModuleThree: "每周二12:00 a.m. 更新前一周数据",
ModuleFour: "各维度每日12:00 a.m. 更新前一日数据",
}
return
}