12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package model
- import (
- "fmt"
- "go-common/library/time"
- )
- const (
- // ViewCountType view count type.
- ViewCountType = "view"
- // FavCountType fav count type.
- FavCountType = "favorite"
- // ReplyCountType reply count type.
- ReplyCountType = "reply"
- // ShareCountType share count type.
- ShareCountType = "share"
- )
- // StatM playlist's topic stat message in databus.
- type StatM struct {
- Type string `json:"type"`
- ID int64 `json:"id"`
- Aid int64 `json:"aid"`
- Count *int64 `json:"count"`
- Timestamp time.Time `json:"timestamp"`
- IP string `json:"ip"`
- }
- // StatMsg means playlist's stat message in databus.
- type StatMsg struct {
- Type string `json:"type"`
- Pid int64 `json:"pid"`
- Mid int64 `json:"mid"`
- Fid int64 `json:"fid"`
- Aid int64 `json:"aid"`
- View *int64 `json:"view"`
- Favorite *int64 `json:"fav"`
- Reply *int64 `json:"reply"`
- Share *int64 `json:"share"`
- MTime time.Time `json:"mtime"`
- IP string `json:"ip"`
- }
- // String format sm
- func (sm *StatM) String(tp string) (res string) {
- if sm == nil {
- res = "<nil>"
- return
- }
- res = fmt.Sprintf("pid: %v, aid: %v, ip: %v, "+tp+"(%s) count(%d)", sm.ID, sm.Aid, sm.IP, formatPInt(sm.Count))
- return
- }
- func formatPInt(s *int64) (res string) {
- if s == nil {
- return "<nil>"
- }
- return fmt.Sprintf("%d", *s)
- }
- // Merge merges stat.
- func Merge(last, m *StatMsg) {
- if m.View != nil && *m.View >= 0 {
- *last.View = *m.View
- }
- if m.Share != nil && *m.Share >= 0 {
- *last.Share = *m.Share
- }
- if m.Favorite != nil && *m.Favorite >= 0 {
- *last.Favorite = *m.Favorite
- }
- if m.Reply != nil && *m.Reply >= 0 {
- *last.Reply = *m.Reply
- }
- }
|