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.
178 lines
4.4 KiB
178 lines
4.4 KiB
package model |
|
|
|
import ( |
|
"encoding/json" |
|
"strconv" |
|
|
|
artmdl "go-common/app/interface/openplatform/article/model" |
|
) |
|
|
|
const ( |
|
// ActUpdate ... |
|
ActUpdate = "update" |
|
// ActInsert ... |
|
ActInsert = "insert" |
|
// ActDelete ... |
|
ActDelete = "delete" |
|
) |
|
|
|
// Message canal binlog message. |
|
type Message struct { |
|
Action string `json:"action"` |
|
Table string `json:"table"` |
|
New json.RawMessage `json:"new"` |
|
Old json.RawMessage `json:"old"` |
|
} |
|
|
|
// Article db struction. |
|
type Article struct { |
|
ID int64 `json:"article_id"` |
|
CTime string `json:"ctime"` |
|
CategoryID int64 `json:"category_id"` |
|
Title string `json:"title"` |
|
Summary string `json:"summary"` |
|
BannerURL string `json:"banner_url"` |
|
TemplateID int `json:"template_id"` |
|
State int `json:"state"` |
|
Mid int64 `json:"mid"` |
|
Reprint int `json:"reprint"` |
|
ImageURLs string `json:"image_urls"` |
|
OriginImageURLs string `json:"origin_image_urls"` |
|
PublishTime int `json:"publish_time"` |
|
DeletedTime int `json:"deleted_time"` |
|
Attributes int32 `json:"attributes,omitempty"` |
|
Reason string `json:"reject_reason,omitempty"` |
|
Words int64 `json:"words"` |
|
DynamicIntro string `json:"dynamic_intro"` |
|
MediaID int64 `json:"media_id"` |
|
} |
|
|
|
// SearchArticle . |
|
type SearchArticle struct { |
|
Article |
|
Tags string `json:"tags"` |
|
Content string `json:"content"` |
|
StatsView int64 `json:"stats_view"` |
|
StatsFavorite int64 `json:"stats_favorite"` |
|
StatsLikes int64 `json:"stats_likes"` |
|
StatsDisLike int64 `json:"stats_dislike"` |
|
StatsReply int64 `json:"stats_reply"` |
|
StatsShare int64 `json:"stats_share"` |
|
StatsCoin int64 `json:"stats_coin"` |
|
Keywords string `json:"keywords"` |
|
} |
|
|
|
// Author db struction. |
|
type Author struct { |
|
ID int64 `json:"id"` |
|
State int `json:"state"` |
|
Mid int64 `json:"mid"` |
|
DailyLimit int `json:"daily_limit"` |
|
} |
|
|
|
// Merge merges stat. |
|
func Merge(last, m *artmdl.StatMsg) (changed [][2]int64) { |
|
if m.View != nil && *m.View >= 0 { |
|
*last.View += *m.View |
|
changed = append(changed, [2]int64{int64(artmdl.FieldView), *last.View}) |
|
} |
|
if m.Like != nil { |
|
*last.Like = *m.Like |
|
changed = append(changed, [2]int64{int64(artmdl.FieldLike), *last.Like}) |
|
} |
|
if m.Dislike != nil { |
|
*last.Dislike = *m.Dislike |
|
} |
|
if m.Share != nil && *m.Share >= 0 { |
|
*last.Share += *m.Share |
|
} |
|
if m.Favorite != nil && *m.Favorite >= 0 { |
|
*last.Favorite = *m.Favorite |
|
changed = append(changed, [2]int64{int64(artmdl.FieldFav), *last.Favorite}) |
|
} |
|
if m.Reply != nil && *m.Reply >= 0 { |
|
*last.Reply = *m.Reply |
|
changed = append(changed, [2]int64{int64(artmdl.FieldReply), *last.Reply}) |
|
} |
|
if m.Coin != nil && *m.Coin >= 0 { |
|
*last.Coin = *m.Coin |
|
} |
|
return |
|
} |
|
|
|
// ReadURLs returns article's read urls. |
|
func ReadURLs(aid int64) []string { |
|
aidStr := strconv.FormatInt(aid, 10) |
|
return []string{ |
|
"http://www.bilibili.com/read/cv/" + aidStr, |
|
"https://www.bilibili.com/read/cv/" + aidStr, |
|
"http://www.bilibili.com/read/app/" + aidStr, |
|
"https://www.bilibili.com/read/app/" + aidStr, |
|
} |
|
} |
|
|
|
// GameCacheRetry . |
|
type GameCacheRetry struct { |
|
Action string `json:"action"` |
|
Aid int64 `json:"aid"` |
|
} |
|
|
|
// FlowCacheRetry . |
|
type FlowCacheRetry struct { |
|
Aid int64 `json:"aid"` |
|
Mid int64 `json:"mid"` |
|
} |
|
|
|
// DynamicCacheRetry . |
|
type DynamicCacheRetry struct { |
|
Aid int64 |
|
Mid int64 |
|
Show bool |
|
Comment string |
|
Ts int64 |
|
DynamicIntro string |
|
} |
|
|
|
// LikeMsg msg |
|
type LikeMsg struct { |
|
BusinessID int64 `json:"business_id"` |
|
MessageID int64 `json:"message_id"` |
|
LikesCount int64 `json:"likes_count"` |
|
DislikesCount int64 `json:"dislikes_count"` |
|
} |
|
|
|
// DynamicMsg msg |
|
type DynamicMsg struct { |
|
Card struct { |
|
Comment string `json:"comment"` |
|
Dynamic string `json:"dynamic"` |
|
OwnerID int64 `json:"owner_id"` |
|
Rid int64 `json:"rid"` |
|
Show int64 `json:"show"` |
|
Stype int64 `json:"stype"` |
|
Ts int64 `json:"ts"` |
|
Type int64 `json:"type"` |
|
} `json:"card"` |
|
} |
|
|
|
// Setting the setting struct |
|
type Setting struct { |
|
Recheck *Recheck |
|
} |
|
|
|
// Recheck setting struct |
|
type Recheck struct { |
|
Day int64 `json:"day"` |
|
View int64 `json:"view"` |
|
} |
|
|
|
// Read presents user reading duration struct |
|
type Read struct { |
|
Buvid string |
|
Aid int64 |
|
Mid int64 |
|
IP string |
|
From string |
|
StartTime int64 |
|
EndTime int64 |
|
}
|
|
|