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.
286 lines
8.1 KiB
286 lines
8.1 KiB
package datamodel |
|
|
|
import ( |
|
"strconv" |
|
"time" |
|
|
|
xtime "go-common/library/time" |
|
) |
|
|
|
// LogTime |
|
// deserialize format "2006-01-02" |
|
// serialize format unix timestamp |
|
type LogTime time.Time |
|
|
|
const ( |
|
timeLayout = "2006-01-02" |
|
timeLayoutWithQuote = `"2006-01-02"` |
|
) |
|
|
|
//MarshalJSON marshal logdate as timestamp |
|
func (t *LogTime) MarshalJSON() ([]byte, error) { |
|
var scratch [64]byte |
|
var dst = strconv.AppendInt(scratch[:0], (*time.Time)(t).Unix(), 10) |
|
return dst, nil |
|
} |
|
|
|
//UnmarshalJSON parse timestamp or something like "2006-01-02" |
|
func (t *LogTime) UnmarshalJSON(b []byte) (err error) { |
|
var str = string(b) |
|
if str == "null" { |
|
return nil |
|
} |
|
|
|
if len(str) == 0 { |
|
return |
|
} |
|
|
|
if str[0] == '"' { |
|
// Fractional seconds are handled implicitly by Parse. |
|
tmp, e := time.ParseInLocation(timeLayoutWithQuote, string(b), time.Local) |
|
if e != nil { |
|
err = e |
|
return |
|
} |
|
*t = LogTime(tmp) |
|
} else { |
|
// parse as timestamp |
|
num, e := strconv.ParseInt(str, 10, 64) |
|
if e != nil { |
|
err = e |
|
return |
|
} |
|
*t = LogTime(time.Unix(num, 0)) |
|
} |
|
|
|
return |
|
} |
|
|
|
//Time export library time |
|
func (t *LogTime) Time() xtime.Time { |
|
return xtime.Time(time.Time(*t).Unix()) |
|
} |
|
|
|
// see mcn_data.sql for more info |
|
|
|
//McnStatisticBaseInfo2 new from data center |
|
type McnStatisticBaseInfo2 struct { |
|
DanmuAll int64 `json:"danmu_all"` |
|
DanmuInc int64 `json:"danmu_inc"` |
|
ReplyAll int64 `json:"reply_all"` |
|
ReplyInc int64 `json:"reply_inc"` |
|
ShareAll int64 `json:"share_all"` |
|
ShareInc int64 `json:"share_inc"` |
|
CoinAll int64 `json:"coin_all"` |
|
CoinInc int64 `json:"coin_inc"` |
|
FavAll int64 `json:"fav_all"` |
|
FavInc int64 `json:"fav_inc"` |
|
LikeAll int64 `json:"like_all"` |
|
LikeInc int64 `json:"like_inc"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnArchiveD 投稿数及昨日增量 |
|
type DmConMcnArchiveD struct { |
|
McnStatisticBaseInfo2 |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
UpAll int64 `json:"up_all"` |
|
ArchiveAll int64 `json:"archive_all"` |
|
ArchiveInc int64 `json:"archive_inc"` |
|
PlayAll int64 `json:"play_all"` |
|
PlayInc int64 `json:"play_inc"` |
|
FansAll int64 `json:"fans_all"` |
|
FansInc int64 `json:"fans_inc"` |
|
} |
|
|
|
//DmConMcnIndexIncD 播放/弹幕/评论/分享/硬币/收藏/点赞数每日增量 |
|
type DmConMcnIndexIncD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
Value int64 `json:"value"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnIndexSourceD mcn播放/弹幕/评论/分享/硬币/收藏/点赞来源分区 |
|
type DmConMcnIndexSourceD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
TypeID int64 `json:"type_id"` |
|
Rank int64 `json:"rank"` |
|
Value int64 `json:"value"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
TypeName string `json:"type_name"` |
|
} |
|
|
|
//DmConMcnPlaySourceD #mcn稿件播放来源占比 |
|
type DmConMcnPlaySourceD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
Iphone int64 `json:"iphone"` |
|
Android int64 `json:"android"` |
|
Pc int64 `json:"pc"` |
|
H5 int64 `json:"h5"` |
|
Other int64 `json:"other"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansSexW #游客/粉丝性别占比 |
|
type DmConMcnFansSexW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
Male int64 `json:"male"` |
|
Female int64 `json:"female"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansAgeW #游客/粉丝年龄分布 |
|
type DmConMcnFansAgeW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
A int64 `json:"a"` //'0-16岁人数', |
|
B int64 `json:"b"` //'16-25岁人数', |
|
C int64 `json:"c"` //'25-40岁人数', |
|
D int64 `json:"d"` //'40岁以上人数', |
|
Type string `json:"-"` //'粉丝类型,guest、fans', |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansPlayWayW 游客/粉丝观看途径 |
|
type DmConMcnFansPlayWayW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
App int64 `json:"app"` |
|
Pc int64 `json:"pc"` |
|
Outside int64 `json:"outside"` |
|
Other int64 `json:"other"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansAreaW #游客/粉丝地区分布 |
|
type DmConMcnFansAreaW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
Province string `json:"province"` |
|
User int64 `json:"user"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansTypeW #游客/粉丝倾向分布 |
|
type DmConMcnFansTypeW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
TypeID int64 `json:"type_id"` |
|
Play int64 `json:"play"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
TypeName string `json:"type_name"` |
|
} |
|
|
|
//DmConMcnFansD #mcn粉丝数相关 |
|
type DmConMcnFansD struct { |
|
ID int64 `json:"-"` |
|
SignId int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
FansAll int64 `json:"fans_all"` |
|
FansInc int64 `json:"fans_inc"` |
|
ActFans int64 `json:"act_fans"` |
|
FansDecAll int64 `json:"fans_dec_all"` |
|
FansDec int64 `json:"fans_dec"` |
|
ViewFansRate float64 `json:"view_fans_rate"` |
|
ActFansRate float64 `json:"act_fans_rate"` |
|
ReplyFansRate float64 `json:"reply_fans_rate"` |
|
DanmuFansRate float64 `json:"danmu_fans_rate"` |
|
CoinFansRate float64 `json:"coin_fans_rate"` |
|
LikeFansRate float64 `json:"like_fans_rate"` |
|
FavFansRate float64 `json:"fav_fans_rate"` |
|
ShareFansRate float64 `json:"share_fans_rate"` |
|
LiveGiftFansRate float64 `json:"live_gift_fans_rate"` |
|
LiveDanmuFansRate float64 `json:"live_danmu_fans_rate"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansIncD #mcn粉丝按天增量 |
|
type DmConMcnFansIncD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
FansInc int64 `json:"fans_inc"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansDecD #mcn粉丝按天取关数 |
|
type DmConMcnFansDecD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
FansDec int64 `json:"fans_dec"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
//DmConMcnFansAttentionWayD #mcn粉丝关注渠道 |
|
type DmConMcnFansAttentionWayD struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
Homepage int64 `json:"homepage"` |
|
Video int64 `json:"video"` |
|
Article int64 `json:"article"` |
|
Music int64 `json:"music"` |
|
Other int64 `json:"other"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
} |
|
|
|
// DmConMcnFansTagW #游客/粉丝标签地图分布 |
|
type DmConMcnFansTagW struct { |
|
ID int64 `json:"-"` |
|
SignID int64 `json:"-"` |
|
McnMid int64 `json:"-"` |
|
LogDate LogTime `json:"log_date"` |
|
TagID int64 `json:"tag_id"` |
|
Play int64 `json:"play"` |
|
Type string `json:"-"` |
|
Ctime time.Time `json:"-"` |
|
Mtime time.Time `json:"-"` |
|
TagName string `json:"tag_name"` |
|
}
|
|
|