mirror of https://github.com/chaitin/PandaWiki.git
108 lines
3.3 KiB
Go
108 lines
3.3 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type StatPageScene int
|
|
|
|
const (
|
|
StatPageSceneWelcome StatPageScene = iota + 1
|
|
StatPageSceneNodeDetail
|
|
StatPageSceneChat
|
|
StatPageSceneLogin
|
|
)
|
|
|
|
var (
|
|
StatPageSceneNames = []string{"欢迎页", "问答页", "登录页"}
|
|
)
|
|
|
|
type StatPage struct {
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|
KBID string `json:"kb_id"`
|
|
NodeID string `json:"node_id"`
|
|
UserID uint `json:"user_id"`
|
|
SessionID string `json:"session_id"`
|
|
Scene StatPageScene `json:"scene"` // 1: welcome, 2: detail, 3: chat, 4: login
|
|
IP string `json:"ip"`
|
|
UA string `json:"ua"`
|
|
BrowserName string `json:"browser_name"`
|
|
BrowserOS string `json:"browser_os"`
|
|
Referer string `json:"referer"`
|
|
RefererHost string `json:"referer_host"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type StatPageReq struct {
|
|
Scene StatPageScene `json:"scene" validate:"required,oneof=1 2 3 4"`
|
|
NodeID string `json:"node_id"`
|
|
}
|
|
|
|
type HotPage struct {
|
|
Scene StatPageScene `json:"scene"`
|
|
NodeID string `json:"node_id"`
|
|
NodeName string `json:"node_name" gorm:"-"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
type HotRefererHost struct {
|
|
RefererHost string `json:"referer_host"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
type HotBrowser struct {
|
|
OS []BrowserCount `json:"os"`
|
|
Browser []BrowserCount `json:"browser"`
|
|
}
|
|
|
|
type BrowserCount struct {
|
|
Name string `json:"name"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
type InstantCountResp struct {
|
|
Time string `json:"time"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
type InstantPageResp struct {
|
|
Scene StatPageScene `json:"scene"`
|
|
NodeID string `json:"node_id"`
|
|
NodeName string `json:"node_name" gorm:"-"`
|
|
IP string `json:"ip"`
|
|
IPAddress IPAddress `json:"ip_address" gorm:"-"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
UserID uint `json:"user_id"`
|
|
Info *AuthUserInfo `json:"info"`
|
|
}
|
|
|
|
type ConversationDistribution struct {
|
|
AppType AppType `json:"app_type"`
|
|
AppID string `json:"app_id"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
// StatPageHour 按小时聚合的统计数据
|
|
type StatPageHour struct {
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|
KbID string `json:"kb_id" gorm:"index"`
|
|
Hour time.Time `json:"hour" gorm:"index"` // 按小时截断的时间
|
|
IPCount int64 `json:"ip_count"`
|
|
SessionCount int64 `json:"session_count"`
|
|
PageVisitCount int64 `json:"page_visit_count"`
|
|
ConversationCount int64 `json:"conversation_count"`
|
|
GeoCount MapStrInt64 `json:"geo_count" gorm:"type:jsonb"`
|
|
ConversationDistribution MapStrInt64 `json:"conversation_distribution" gorm:"type:jsonb"`
|
|
HotRefererHost MapStrInt64 `json:"hot_referer_host" gorm:"type:jsonb"`
|
|
HotPage MapStrInt64 `json:"hot_page" gorm:"type:jsonb"`
|
|
HotBrowser MapStrInt64 `json:"hot_browser" gorm:"type:jsonb"`
|
|
HotOS MapStrInt64 `json:"hot_os" gorm:"type:jsonb"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
func (StatPageHour) TableName() string {
|
|
return "stat_page_hours"
|
|
}
|