data.go 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package data
  2. import (
  3. xtime "go-common/library/time"
  4. "go-common/app/interface/main/creative/model/medal"
  5. )
  6. // Stat info
  7. type Stat struct {
  8. FanLast int64 `json:"fan_last"`
  9. Fan int64 `json:"fan"`
  10. DmLast int64 `json:"dm_last"`
  11. Dm int64 `json:"dm"`
  12. CommentLast int64 `json:"comment_last"`
  13. Comment int64 `json:"comment"`
  14. Play int64 `json:"play"`
  15. PlayLast int64 `json:"play_last"`
  16. Fav int64 `json:"fav"`
  17. FavLast int64 `json:"fav_last"`
  18. Like int64 `json:"like"`
  19. LikeLast int64 `json:"like_last"`
  20. Share int64 `json:"share"`
  21. ShareLast int64 `json:"share_last"`
  22. Elec int64 `json:"elec"`
  23. ElecLast int64 `json:"elec_last"`
  24. Coin int64 `json:"coin"`
  25. CoinLast int64 `json:"coin_last"`
  26. Day30 map[string]int `json:"30,omitempty"`
  27. Arcs map[string][]*Arc `json:"arcs"`
  28. }
  29. // Arc Arcs info.
  30. type Arc struct {
  31. Aid int64 `json:"aid"`
  32. Title string `json:"title"`
  33. Click int64 `json:"click"`
  34. }
  35. // Tags Arcs info
  36. type Tags struct {
  37. Tags []string `json:"tags"`
  38. }
  39. // CheckedTag tags with checked
  40. type CheckedTag struct {
  41. Tag string `json:"tag"`
  42. Checked int `json:"checked"`
  43. }
  44. // AppStat arc stat.
  45. type AppStat struct {
  46. Date string `json:"date"`
  47. Num int64 `json:"num"`
  48. }
  49. // AppStatList for arc stat list.
  50. type AppStatList struct {
  51. Danmu []*AppStat `json:"danmu"`
  52. View []*AppStat `json:"view"`
  53. Fans []*AppStat `json:"fans"`
  54. Comment []*AppStat `json:"comment"`
  55. Show int8 `json:"show"`
  56. }
  57. // ViewerTrend for up trend data.
  58. type ViewerTrend struct {
  59. Tag map[int]string `json:"tag"`
  60. Ty map[string]int64 `json:"ty"`
  61. }
  62. // ViewerIncr for up increment data.
  63. type ViewerIncr struct {
  64. Arcs []*ArcInc `json:"arc_inc"`
  65. TotalIncr int `json:"total_inc"`
  66. TyRank map[string]int `json:"type_rank"`
  67. }
  68. // ArcInc for archive increment data.
  69. type ArcInc struct {
  70. AID int64 `json:"aid"`
  71. Incr int `json:"incr"`
  72. Title string `json:"title"`
  73. DayTime int64 `json:"daytime"`
  74. PTime xtime.Time `json:"ptime"`
  75. }
  76. // PeriodTip period tip for data.
  77. type PeriodTip struct {
  78. ModuleOne string `json:"module_one"`
  79. ModuleTwo string `json:"module_two"`
  80. ModuleThree string `json:"module_three"`
  81. ModuleFour string `json:"module_four"`
  82. }
  83. // AppViewerIncr for up increment data.
  84. type AppViewerIncr struct {
  85. DateKey int64 `json:"date_key"`
  86. Arcs []*ArcInc `json:"arc_inc"`
  87. TotalIncr int `json:"total_inc"`
  88. TyRank []*Rank `json:"type_rank"`
  89. }
  90. // ThirtyDay for 30 days data.
  91. type ThirtyDay struct {
  92. DateKey int64 `json:"date_key"`
  93. TotalIncr int64 `json:"total_inc"`
  94. }
  95. // Rank type rank for up data.
  96. type Rank struct {
  97. Name string `json:"name"`
  98. Rank int `json:"rank"`
  99. }
  100. // CreatorDataShow for display archive/article data module.
  101. type CreatorDataShow struct {
  102. Archive int `json:"archive"`
  103. Article int `json:"article"`
  104. }
  105. // AppFan for stat.
  106. type AppFan struct {
  107. Summary map[string]int64 `json:"summary"`
  108. RankMap map[string]map[string]int32 `json:"-"`
  109. TypeList map[string]int64 `json:"type_list"`
  110. TagList []*Rank `json:"tag_list"`
  111. ViewerArea map[string]int64 `json:"viewer_area"`
  112. ViewerBase *ViewerBase `json:"viewer_base"`
  113. }
  114. //AppOverView for data overview.
  115. type AppOverView struct {
  116. Stat *Stat `json:"stat"`
  117. AllArcIncr []*ThirtyDay `json:"all_arc_inc"`
  118. SingleArcInc []*ArcInc `json:"single_arc_inc"`
  119. }
  120. //VideoQuit customer play Retention Rate
  121. type VideoQuit struct {
  122. Point []int64 `json:"point"`
  123. Duration []int64 `json:"duration"`
  124. }
  125. //for fan manager top mids.
  126. const (
  127. //Total 粉丝管理-累计数据
  128. Total = iota
  129. //Seven 粉丝管理-7日数据
  130. Seven
  131. //Thirty 粉丝管理-30日数据
  132. Thirty
  133. //Ninety 粉丝管理-90日数据
  134. Ninety
  135. //PlayDuration 播放时长
  136. PlayDuration = "video_play"
  137. //VideoAct 视频互动
  138. VideoAct = "video_act"
  139. //DynamicAct 动态互动
  140. DynamicAct = "dynamic_act"
  141. )
  142. // WebFan for stat.
  143. type WebFan struct {
  144. RankMap map[string]map[string]int32 `json:"-"`
  145. Summary map[string]int32 `json:"summary"`
  146. RankList map[string][]*RankInfo `json:"rank_list"`
  147. RankMedal map[string][]*medal.FansRank `json:"rank_medal"`
  148. Source map[string]int32 `json:"source"`
  149. }
  150. // FansAnalysis for medal fans.
  151. type FansAnalysis struct {
  152. F map[string]int32 `family:"f"`
  153. T map[string]int32 `family:"t"`
  154. S map[string]int32 `family:"s"`
  155. }
  156. //FansAnalysisByF for f family
  157. type FansAnalysisByF struct {
  158. All int32 `family:"f" qualifier:"all" json:"total"` //总粉丝
  159. Inc int32 `family:"f" qualifier:"inc" json:"inc"` //新增粉丝
  160. Act int32 `family:"f" qualifier:"act" json:"active"` //活跃粉丝
  161. Mdl int32 `family:"f" qualifier:"mdl" json:"medal"` //领取勋章粉丝
  162. Elec int32 `family:"f" qualifier:"elec" json:"elec"` //充电粉丝
  163. ActDiff int32 `family:"f" qualifier:"act_diff" json:"act_diff"` //活跃粉丝(增量)
  164. MdlDiff int32 `family:"f" qualifier:"mdl_diff" json:"mdl_diff"` //领取勋章粉丝(增量)
  165. ElecDiff int32 `family:"f" qualifier:"elec_diff" json:"elec_diff"` //领取勋章粉丝(增量)
  166. Play int32 `family:"f" qualifier:"v" json:"v"` //播放粉丝占比*10000
  167. Dm int32 `family:"f" qualifier:"dm" json:"dm"` //弹幕粉丝占比*10000
  168. Reply int32 `family:"f" qualifier:"r" json:"r"` //评论粉丝占比*10000
  169. Coin int32 `family:"f" qualifier:"c" json:"c"` //投币粉丝占比*10000
  170. //粉丝活跃占比
  171. InterRatio int32 `family:"f" qualifier:"inter" json:"inter"` //互动活跃度*10000
  172. PlayRatio int32 `family:"f" qualifier:"vv" json:"vv"` //观看活跃度*10000
  173. DanmuRatio int32 `family:"f" qualifier:"da" json:"da"` //弹幕活跃度占比*10000
  174. ReplyRatio int32 `family:"f" qualifier:"re" json:"re"` //评论活跃度占比*10000
  175. CoinRatio int32 `family:"f" qualifier:"co" json:"co"` //投币活跃度占比*10000
  176. FavRatio int32 `family:"f" qualifier:"fv" json:"fv"` //收藏活跃度占比*10000
  177. ShareRatio int32 `family:"f" qualifier:"sh" json:"sh"` //投币活跃度占比*10000
  178. LikeRatio int32 `family:"f" qualifier:"lk" json:"lk"` //收藏活跃度占比*10000
  179. //3.4需求
  180. NewAct int32 `family:"f" qualifier:"new_act" json:"new_act"` //活跃粉丝数字段
  181. NewInter int32 `family:"f" qualifier:"new_inter" json:"new_inter"` //互动活跃度字段
  182. NewReply int32 `family:"f" qualifier:"new_re" json:"new_re"` //评论
  183. NewDanmu int32 `family:"f" qualifier:"new_da" json:"new_da"` //弹幕
  184. NewCoin int32 `family:"f" qualifier:"new_co" json:"new_co"` //投币
  185. NewLike int32 `family:"f" qualifier:"new_lk" json:"new_lk"` //投币
  186. NewFav int32 `family:"f" qualifier:"new_fv" json:"new_fv"` //投币
  187. NewShare int32 `family:"f" qualifier:"new_sh" json:"new_sh"` //投币
  188. LiveDanmu int32 `family:"f" qualifier:"live_dm" json:"live_dm"` //直播弹幕
  189. LiveCoin int32 `family:"f" qualifier:"live_coin" json:"live_coin"` //直播送礼
  190. }
  191. //FansAnalysisByT for family t
  192. type FansAnalysisByT struct {
  193. PlayDuration map[string]int32 `family:"t" qualifier:"dr" json:"dr"` //播放时长排行
  194. VidoeAction map[string]int32 `family:"t" qualifier:"act" json:"act"` //视频互动量排行
  195. DynamicAction map[string]int32 `family:"t" qualifier:"dy" json:"dy"` //动态互动量排行
  196. }
  197. //FansAnalysisByS for family s
  198. type FansAnalysisByS struct { //粉丝来源页面占比
  199. Space int32 `family:"s" qualifier:"pf1" json:"space"` //视频互动量排行
  200. Main int32 `family:"s" qualifier:"pf2" json:"main"` //主站播放页
  201. Live int32 `family:"s" qualifier:"pf4" json:"live"` //直播
  202. Audio int32 `family:"s" qualifier:"pf5" json:"audio"` // 音乐
  203. Article int32 `family:"s" qualifier:"pf6" json:"article"` // 文章
  204. }
  205. // RankInfo str
  206. type RankInfo struct {
  207. MID int64 `json:"mid"`
  208. Uname string `json:"uname"`
  209. Photo string `json:"photo"`
  210. Relation int `json:"relation"`
  211. }
  212. // PlaySource for play soucre.
  213. type PlaySource struct {
  214. PlayProportion map[string]int32 `json:"play_proportion"`
  215. PageSource map[string]int32 `json:"page_source"`
  216. }
  217. // ArchivePlay for archive play.
  218. type ArchivePlay struct {
  219. AID int64 `json:"aid"`
  220. View int32 `json:"view"`
  221. Rate int32 `json:"rate"`
  222. CTime int32 `json:"ctime"`
  223. Duration int64 `json:"duration"`
  224. AvgDuration int64 `json:"avg_duration"`
  225. Title string `json:"title"`
  226. }
  227. //ArchivePlayList for arc play list.
  228. type ArchivePlayList struct {
  229. ArcPlayList []*ArchivePlay `json:"arc_play_list"`
  230. }
  231. // UpFansMedal for medal fans.
  232. type UpFansMedal struct {
  233. MedalFans int32 `family:"f" qualifier:"medal_fans" json:"medal_fans"` //领取勋章数
  234. WearMedalFans int32 `family:"f" qualifier:"wear_medal_fans" json:"wear_medal_fans"` //佩戴勋章数
  235. }
  236. // Tip for base survey.
  237. func Tip() (pt *PeriodTip) {
  238. pt = &PeriodTip{
  239. ModuleOne: "各维度每日12:00 a.m. 更新前一日数据",
  240. ModuleTwo: "每日12:00 a.m. 更新前一日数据",
  241. ModuleThree: "每周二12:00 a.m. 更新前一周数据",
  242. ModuleFour: "各维度每日12:00 a.m. 更新前一日数据",
  243. }
  244. return
  245. }