123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- 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"`
- }
|