go-common/app/admin/main/up/model/upcrmmodel/requestargs.go

377 lines
9.9 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package upcrmmodel
import (
"go-common/app/admin/main/up/model/datamodel"
"go-common/app/admin/main/up/util"
"go-common/library/time"
xtime "time"
)
const (
//CompareTypeNothing 0
CompareTypeNothing = 0
//CompareType7day 1
CompareType7day = 1
//CompareType30day 2
CompareType30day = 2
//CompareTypeMonthFirstDay 3
CompareTypeMonthFirstDay = 3
)
const (
//AttrBitVideo video
// see http://info.bilibili.co/pages/viewpage.action?pageId=9830931
AttrBitVideo = 0
//AttrBitAudio audio
AttrBitAudio = 1
//AttrBitArticle article
AttrBitArticle = 2
//AttrBitPhoto photo
AttrBitPhoto = 3
//AttrBitSign sign
AttrBitSign = 4
//AttrBitGrowup growup
AttrBitGrowup = 5
//AttrBitVerify verify
AttrBitVerify = 6
)
var (
//AttrGroup1 筛选用第一组attr
AttrGroup1 = map[int]int{AttrBitVideo: 0, AttrBitAudio: 0, AttrBitArticle: 0, AttrBitPhoto: 0}
//AttrGroup2 筛选用第二组attr 两组之间的关系是与
AttrGroup2 = map[int]int{AttrBitSign: 0, AttrBitGrowup: 0, AttrBitVerify: 0}
)
// ScoreQueryArgs ------------------------- requests ------------------------
type ScoreQueryArgs struct {
ScoreType int `form:"score_type"`
CompareType int `form:"compare_type"`
Export string `form:"export"`
}
//ScoreQueryUpArgs arg
type ScoreQueryUpArgs struct {
Mid int64 `form:"mid" validate:"required"`
Date string `form:"date"`
}
//ScoreQueryUpHistoryArgs arg
type ScoreQueryUpHistoryArgs struct {
Mid int64 `form:"mid" validate:"required"`
ScoreType int `form:"score_type"`
Day int `form:"day" default:"7"`
Date string `form:"date"`
}
//PlayQueryArgs arg
type PlayQueryArgs struct {
Mid int64 `form:"mid" validate:"required"`
BusinessType int `form:"business_type"`
}
//InfoQueryArgs arg
type InfoQueryArgs struct {
Mid int64 `form:"mid" validate:"required"`
}
//CreditLogQueryArgs arg
type CreditLogQueryArgs struct {
Mid int64 `form:"mid" validate:"required"`
Limit int `form:"limit"`
}
//UpRankQueryArgs arg
type UpRankQueryArgs struct {
Type int `form:"type" validate:"required"`
Page int `form:"page"` // (从1开始)
Size int `form:"size"` // 1 ~ 50
}
//InfoAccountInfoArgs arg
type InfoAccountInfoArgs struct {
Mids string `form:"mids" validate:"required"`
}
//InfoSearchArgs arg
type InfoSearchArgs struct {
AccountState int `json:"account_state"`
Activity int `json:"activity"`
Attrs UpAttr `json:"attrs"`
FirstDateBegin string `json:"first_date_begin"`
FirstDateEnd string `json:"first_date_end"`
Mid int64 `json:"mid"`
Order struct {
Field string `json:"field"`
Order string `json:"order"`
}
Page int `json:"page"`
Size int `json:"size"`
}
//TestGetViewBaseArgs test arg
type TestGetViewBaseArgs struct {
Mid int64 `form:"mid" validate:"required"`
}
// ------------------------- results ------------------------
//ScoreSection struct
type ScoreSection struct {
Section int `json:"-"`
Value int
Percent int
}
//ScoreQueryResult result
type ScoreQueryResult struct {
CompareAxis []ScoreSection `json:"compareAxis"`
XAxis []string `json:"xAxis"`
YAxis []ScoreSection `json:"yAxis"`
}
//NewEmptyScoreQueryResult make new result
func NewEmptyScoreQueryResult() ScoreQueryResult {
return ScoreQueryResult{
CompareAxis: []ScoreSection{},
XAxis: []string{},
YAxis: []ScoreSection{},
}
}
//ScoreInfo struct
type ScoreInfo struct {
Current int `json:"current"`
DiffLastDay int `json:"diff_last_day"`
}
//ScoreQueryUpResult result
type ScoreQueryUpResult struct {
PrScore ScoreInfo
QualityScore ScoreInfo
CreditScore ScoreInfo
Date time.Time
}
//ScoreHistoryInfo struct
type ScoreHistoryInfo struct {
Type int `json:"type"`
Score []int `json:"score"`
Date []time.Time `json:"date"`
}
//ScoreQueryUpHistoryResult result
type ScoreQueryUpHistoryResult struct {
ScoreData []ScoreHistoryInfo `json:"score_data"`
}
//PlayInfo struct
type PlayInfo struct {
Type int `json:"type"`
PlayCountAccumulate int64 `json:"play_count_accumulate"`
PlayCountAvg int64 `json:"play_count_avg"`
PlayCountAvg90Day int64 `json:"play_count_avg_90day"`
}
//PlayQueryResult result
type PlayQueryResult struct {
ArticleCount30Day int `json:"article_count_30day"`
ArticleCountAccumulate int `json:"article_count_accumulate"`
BusinessData []PlayInfo `json:"business_data"`
}
//CastUpPlayInfoToPlayInfo cast
func CastUpPlayInfoToPlayInfo(info UpPlayInfo) (r PlayInfo) {
r.Type = int(info.BusinessType)
r.PlayCountAccumulate = info.PlayCountAccumulate
r.PlayCountAvg = info.PlayCountAccumulate / info.ArticleCount
r.PlayCountAvg90Day = info.PlayCount90Day / info.ArticleCount
return
}
//UpAttr struct
type UpAttr struct {
AttrVerify int `json:"attr_verify"`
AttrVideo int `json:"attr_video"`
AttrAudio int `json:"attr_audio"`
AttrArticle int `json:"attr_article"`
AttrPhoto int `json:"attr_photo"`
AttrSign int `json:"attr_sign"`
AttrGrowup int `json:"attr_growup"`
}
//InfoQueryResult result
type InfoQueryResult struct {
ID uint32 `json:"-"`
Mid int64 `json:"mid"`
Name string `json:"name"`
Sex int8 `json:"sex"`
JoinTime time.Time `json:"join_time"`
FirstUpTime time.Time `json:"first_up_time"`
Level int16 `json:"level"`
FansCount int `json:"fans_count"`
AccountState int8 `json:"account_state"`
Activity int `json:"activity"`
ArticleCount30day int `json:"article_count_30day"`
ArticleCountAccumulate int `json:"article_count_accumulate"`
VerifyType int8 `json:"verify_type"`
BusinessType int8 `json:"business_type"`
CreditScore int `json:"credit_score"`
PrScore int `json:"pr_score"`
QualityScore int `json:"quality_score"`
ActiveTid int64 `json:"active_tid"`
ActiveSubtid int64 `json:"active_subtid"`
Region string `json:"region"`
Province string `json:"province"`
Age int `json:"age"`
Attr int `json:"-"`
Attrs UpAttr `json:"attrs"`
Birthday xtime.Time `json:"-"`
}
//CopyFromBaseInfo copy
func (i *InfoQueryResult) CopyFromBaseInfo(info UpBaseInfo) {
i.ID = info.ID
i.Mid = info.Mid
i.Name = info.Name
i.Sex = info.Sex
i.JoinTime = info.JoinTime
i.FirstUpTime = info.FirstUpTime
i.Level = info.Level
i.FansCount = info.FansCount
i.AccountState = info.AccountState
i.ArticleCount30day = info.ArticleCount30day
i.ArticleCountAccumulate = info.ArticleCountAccumulate
i.VerifyType = info.VerifyType
i.BusinessType = info.BusinessType
i.CreditScore = info.CreditScore
i.ActiveTid = info.ActiveTid
i.Birthday = info.Birthday
i.Region = info.ActiveCity
i.Province = info.ActiveProvince
i.Attr = info.Attr
i.PrScore = info.PrScore
i.QualityScore = info.QualityScore
i.Activity = info.Activity
}
// CalculateAttr 根据attr来计算各个attr_xx的属性
func (i *InfoQueryResult) CalculateAttr() {
// todo 计算attr属性
if util.IsBitSet(i.Attr, AttrBitVideo) {
i.Attrs.AttrVideo = 1
}
if util.IsBitSet(i.Attr, AttrBitAudio) {
i.Attrs.AttrAudio = 1
}
if util.IsBitSet(i.Attr, AttrBitArticle) {
i.Attrs.AttrArticle = 1
}
if util.IsBitSet(i.Attr, AttrBitPhoto) {
i.Attrs.AttrPhoto = 1
}
if util.IsBitSet(i.Attr, AttrBitSign) {
i.Attrs.AttrSign = 1
}
if util.IsBitSet(i.Attr, AttrBitGrowup) {
i.Attrs.AttrGrowup = 1
}
if util.IsBitSet(i.Attr, AttrBitVerify) {
i.Attrs.AttrVerify = 1
}
if !i.Birthday.IsZero() {
i.Age = int(xtime.Since(i.Birthday).Hours() / float64(24*365))
if i.Age < 0 {
i.Age = 0
}
}
}
//CreditLogInfo struct
type CreditLogInfo struct {
Time time.Time `json:"time"`
Log string `json:"log"`
}
//CreditLogUpResult result
type CreditLogUpResult struct {
Logs []CreditLogInfo `json:"logs"`
}
//UpRankInfo struct
type UpRankInfo struct {
InfoQueryResult
Rank int `json:"rank"`
Value uint `json:"value"`
Value2 int `json:"value_2"`
CompleteTime time.Time `json:"complete_time"`
RankType int16 `json:"-"`
}
//CopyFromUpRank copy
func (u *UpRankInfo) CopyFromUpRank(upRank *UpRank) {
u.Value = upRank.Value
u.Value2 = upRank.Value2
u.RankType = upRank.Type
}
//UpRankQueryResult result
type UpRankQueryResult struct {
Result []*UpRankInfo `json:"result"`
Date time.Time `json:"date"`
PageInfo
}
//PageInfo page info
type PageInfo struct {
TotalCount int `json:"total_count"`
Size int `json:"size"`
Page int `json:"page"`
}
//InfoSearchResult result
type InfoSearchResult struct {
Result []*InfoQueryResult `json:"result"`
PageInfo
}
//UpInfoWithViewerData up data with view data
type UpInfoWithViewerData struct {
Mid int64 `json:"mid"`
UpBaseInfo *InfoQueryResult `json:"up_base_info"`
ViewerTrend *datamodel.ViewerTrendInfo `json:"viewer_trend"`
ViewerArea *datamodel.ViewerAreaInfo `json:"viewer_area"`
ViewerBase *datamodel.ViewerBaseInfo `json:"viewer_base"`
UpPlayInfo *UpPlayInfo `json:"up_play_info"`
}
//UpInfoWithViewerResult info result
type UpInfoWithViewerResult struct {
Result []*UpInfoWithViewerData `json:"result"`
PageInfo
}
// -------------
const (
// FlagUpBaseData up base info
FlagUpBaseData = 1
// FlagUpPlayData up play info
FlagUpPlayData = 1 << 1
// FlagViewData view base data flag
FlagViewData = 1 << 2
)
//UpInfoWithViewerArg arg
type UpInfoWithViewerArg struct {
Mids string `form:"mids"`
Sort string `form:"sort" default:"fans_count"`
Order string `form:"order" default:"desc"`
Page int `form:"page" default:"1"`
Size int `form:"size" default:"20"`
// 需要的信息
Flag int `form:"flag" default:"0"`
}