123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- 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"`
- }
|