You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.7 KiB
159 lines
3.7 KiB
package data |
|
|
|
import ( |
|
"go-common/app/interface/main/creative/model/archive" |
|
upgrpc "go-common/app/service/main/up/api/v1" |
|
"go-common/app/service/main/up/model" |
|
) |
|
|
|
// ArchiveStat for archive stat. |
|
type ArchiveStat struct { |
|
Play int64 `json:"play"` |
|
Dm int64 `json:"dm"` |
|
Reply int64 `json:"reply"` |
|
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"` |
|
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"` //喜欢 |
|
} |
|
|
|
//CopyTo copy to |
|
func (u *UpBaseStat) CopyTo(stat *model.UpBaseStat) { |
|
stat.Dm = u.Dm |
|
stat.Fans = u.Fans |
|
stat.Fav = u.Fav |
|
stat.View = u.View |
|
stat.Reply = u.Reply |
|
stat.Like = u.Like |
|
} |
|
|
|
// CopyToReply copy to reply |
|
func (u *UpBaseStat) CopyToReply(stat *upgrpc.UpBaseStatReply) { |
|
if u == nil { |
|
return |
|
} |
|
stat.Dm = u.Dm |
|
stat.Fans = u.Fans |
|
stat.Fav = u.Fav |
|
stat.View = u.View |
|
stat.Reply = u.Reply |
|
stat.Like = u.Like |
|
} |
|
|
|
// 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) |
|
) |
|
|
|
var ( |
|
typeNameMap = map[int8]string{ |
|
Play: "play", |
|
Dm: "dm", |
|
Reply: "reply", |
|
Share: "share", |
|
Coin: "coin", |
|
Fav: "fav", |
|
Elec: "elec", |
|
} |
|
) |
|
|
|
//IncrTy return incr data type. |
|
func IncrTy(ty int8) (val string, ok bool) { |
|
val, ok = typeNameMap[ty] |
|
return |
|
}
|
|
|