package mcnmodel import ( "sort" mcnadminmodel "go-common/app/admin/main/mcn/model" "go-common/app/interface/main/mcn/model" "go-common/app/interface/main/mcn/model/datamodel" arcgrpc "go-common/app/service/main/archive/api" "go-common/library/time" ) // McnGetStateReply . type McnGetStateReply struct { State int8 `json:"state"` RejectReason string `json:"reject_reason"` } // CommonReply reply with nothing, base struct type CommonReply struct{} //Sorter can sort type Sorter interface { Sort() } // McnGetBindReply . type McnGetBindReply struct { BindID int64 `json:"bind_id" gorm:"column:bind_id"` CompanyName string `json:"company_name" gorm:"column:company_name"` McnMid uint32 `json:"mcn_mid" gorm:"column:mcn_mid"` McnName string `json:"mcn_name"` UpAuthLink string `json:"up_auth_link" gorm:"column:up_auth_link"` OldPerm uint32 `json:"-" gorm:"column:old_permission"` NewPerm uint32 `json:"-" gorm:"column:new_permission"` OldPermission mcnadminmodel.Permits `json:"old_permission"` NewPermission mcnadminmodel.Permits `json:"new_permission"` } //Finish call this before send func (s *McnGetBindReply) Finish() { s.OldPermission.SetAttrPermitVal(s.OldPerm) s.NewPermission.SetAttrPermitVal(s.NewPerm) } // McnGetDataSummaryReply . type McnGetDataSummaryReply struct { datamodel.McnStatisticBaseInfo2 IsNull bool `json:"is_null"` // 缓存用来标记 UpCount int64 `json:"up_count"` UpCountDiff int64 `json:"-"` FansCountAccumulate int64 `json:"fans_count_accumulate"` FansCountDiff int64 `json:"fans_count_diff"` PlayCountAccumulate int64 `json:"play_count_accumulate"` PlayCountDiff int64 `json:"play_count_diff"` ArchiveCountAccumulate int64 `json:"archive_count_accumulate"` ArchiveCountDiff int64 `json:"archive_count_diff"` GenerateDate time.Time `json:"generate_date"` } // CopyFrom . func (m *McnGetDataSummaryReply) CopyFrom(v *McnDataSummary) { if v == nil { return } m.UpCount = int64(v.UpCount) m.FansCountAccumulate = int64(v.FansCountAccumulate) m.PlayCountAccumulate = int64(v.PlayCountAccumulate) m.ArchiveCountAccumulate = int64(v.ArchiveCountAccumulate) m.GenerateDate = v.GenerateDate } //CopyFromDmConMcnArchiveD . func (m *McnGetDataSummaryReply) CopyFromDmConMcnArchiveD(v *datamodel.DmConMcnArchiveD) { if v == nil { return } m.UpCount = v.UpAll // m.UpCountDiff 不再使用了。 m.ArchiveCountAccumulate = v.ArchiveAll m.ArchiveCountDiff = v.ArchiveInc m.PlayCountAccumulate = v.PlayAll m.PlayCountDiff = v.PlayInc m.FansCountAccumulate = v.FansAll m.FansCountDiff = v.FansInc m.McnStatisticBaseInfo2 = v.McnStatisticBaseInfo2 m.GenerateDate = v.LogDate.Time() } // CalcDiff . func (m *McnGetDataSummaryReply) CalcDiff(lastDay *McnDataSummary) { if lastDay == nil { return } m.UpCountDiff = m.UpCount - int64(lastDay.UpCount) m.FansCountDiff = m.FansCountAccumulate - int64(lastDay.FansCountAccumulate) m.PlayCountDiff = m.PlayCountAccumulate - int64(lastDay.PlayCountAccumulate) m.ArchiveCountDiff = m.ArchiveCountAccumulate - int64(lastDay.ArchiveCountAccumulate) } // McnUpDataInfo mcn data type McnUpDataInfo struct { McnDataUp ActiveTid int16 `json:"active_tid"` TidName string `json:"tid_name"` BeginDate time.Time `json:"begin_date" gorm:"column:begin_date"` EndDate time.Time `json:"end_date" gorm:"column:end_date"` State int8 `json:"state" gorm:"column:state"` Name string `json:"name"` Permission uint32 `gorm:"column:permission" json:"-"` PublicationPrice int64 `gorm:"column:publication_price" json:"publication_price"` // 单位:1/1000 元 Permits mcnadminmodel.Permits `json:"permits"` } // HideData if state is not right, hide the data func (m *McnUpDataInfo) HideData(hideDate bool) { m.FansIncreaseMonth = 0 m.PlayCount = 0 m.ArchiveCount = 0 m.FansIncreaseAccumulate = 0 m.FansCount = 0 m.FansCountActive = 0 if hideDate { m.BeginDate = 0 m.EndDate = 0 } } //Finish call finish before send out func (m *McnUpDataInfo) Finish() { m.Permits.SetAttrPermitVal(m.Permission) } // McnBindUpApplyReply . type McnBindUpApplyReply struct { BindID int64 `json:"bind_id"` } // McnGetUpListReply list type McnGetUpListReply struct { Result []*McnUpDataInfo `json:"result"` model.PageResult } //Finish call finish before send out func (m *McnGetUpListReply) Finish() { for _, v := range m.Result { v.Finish() } } // McnExistReply exist type McnExistReply struct { Exist int `json:"exist"` } // McnGetAccountReply reply type McnGetAccountReply struct { Mid int64 `json:"mid"` Name string `json:"name"` } // McnGetMcnOldInfoReply req type McnGetMcnOldInfoReply struct { CompanyName string `json:"company_name"` CompanyLicenseID string `json:"company_license_id"` ContactName string `json:"contact_name"` ContactTitle string `json:"contact_title"` ContactIdcard string `json:"contact_idcard"` ContactPhone string `json:"contact_phone"` } // Copy . func (m *McnGetMcnOldInfoReply) Copy(v *McnSign) { if v == nil { return } m.CompanyName = v.CompanyName m.CompanyLicenseID = v.CompanyLicenseID m.ContactName = v.ContactName m.ContactTitle = v.ContactTitle m.ContactIdcard = v.ContactIdcard m.ContactPhone = v.ContactPhone } // RankDataInterface 用来取排行用的数据 type RankDataInterface interface { GetTid() int16 GetDataType() DataType GetValue() int64 } // RankDataBase 基本排行信息 type RankDataBase struct { Tid int16 `json:"tid"` DataType DataType `json:"data_type"` } // GetTid . func (r *RankDataBase) GetTid() int16 { return r.Tid } // GetDataType . func (r *RankDataBase) GetDataType() DataType { return r.DataType } // RankUpFansInfo reply info type RankUpFansInfo struct { RankDataBase Mid int64 `json:"mid"` UpFaceLink string `json:"up_face_link"` Name string `json:"name"` FansIncrease int64 `json:"fans_increase"` FansAccumulate int64 `json:"fans_accumulate"` TidName string `json:"tid_name"` } // GetValue . func (r *RankUpFansInfo) GetValue() int64 { return r.FansIncrease } // Copy copy from rank up . func (r *RankUpFansInfo) Copy(v *McnRankUpFan) { if v == nil { return } r.DataType = v.DataType r.Tid = v.ActiveTid r.Mid = v.UpMid r.FansIncrease = v.Value1 r.FansAccumulate = v.Value2 } // McnGetRankUpFansReply reply type McnGetRankUpFansReply struct { Result []RankDataInterface `json:"result"` // 按顺序进行排名 TypeList []*TidnameInfo `json:"type_list"` } // RankArchiveLikeInfo archive like rank info type RankArchiveLikeInfo struct { RankDataBase ArchiveID int64 `json:"archive_id"` // 稿件ID ArchiveTitle string `json:"archive_title"` Pic string `json:"pic"` // 封面 TidName string `json:"tid_name"` LikesIncrease int64 `json:"likes_increase"` LikesAccumulate int64 `json:"likes_accumulate"` PlayIncrease int64 `json:"play_increase"` Ctime time.Time `json:"ctime"` Author arcgrpc.Author `json:"author"` // up主信息 Stat arcgrpc.Stat `json:"stat"` // 统计信息 } // GetValue . func (r *RankArchiveLikeInfo) GetValue() int64 { return r.LikesIncrease } // CopyFromDB . func (r *RankArchiveLikeInfo) CopyFromDB(v *McnRankArchiveLike) { if v == nil { return } r.ArchiveID = v.ArchiveID r.LikesIncrease = v.LikeCount r.Tid = v.Tid r.DataType = v.DataType r.PlayIncrease = v.PlayIncr } // CopyFromArchive copy from archive info from archive service func (r *RankArchiveLikeInfo) CopyFromArchive(v *arcgrpc.Arc) { if v == nil { return } r.ArchiveTitle = v.Title r.Pic = v.Pic r.Ctime = v.Ctime r.TidName = v.TypeName r.Author = v.Author r.Stat = v.Stat r.Tid = int16(v.TypeID) r.LikesAccumulate = int64(v.Stat.Like) } // TidnameInfo tid name type TidnameInfo struct { Tid int16 `json:"tid"` Name string `json:"name"` } // McnGetRecommendPoolInfo recomend info type McnGetRecommendPoolInfo struct { UpMid int64 `json:"up_mid"` FansCount int64 `json:"fans_count"` FansCountIncreaseMonth int64 `json:"fans_count_increase_month"` ArchiveCount int64 `json:"archive_count"` ActiveTid int16 `json:"active_tid"` UpName string `json:"up_name"` TidName string `json:"tid_name"` } // Copy copy from db func (m *McnGetRecommendPoolInfo) Copy(v *McnUpRecommendPool) { if v == nil { return } m.UpMid = v.UpMid m.FansCount = v.FansCount m.FansCountIncreaseMonth = v.FansCountIncreaseMonth m.ArchiveCount = v.ArchiveCount m.ActiveTid = v.ActiveTid } // McnGetRecommendPoolReply result type McnGetRecommendPoolReply struct { model.PageResult Result []*McnGetRecommendPoolInfo `json:"result"` } // McnGetRecommendPoolTidListReply result type McnGetRecommendPoolTidListReply struct { Result []*TidnameInfo `json:"result"` } // --------------------------- 三期需求 // McnGetIndexIncReply 播放/弹幕/评论/分享/硬币/收藏/点赞数每日增量 type McnGetIndexIncReply struct { Result []*datamodel.DmConMcnIndexIncD `json:"result"` } //McnGetIndexSourceReply 播放/弹幕/评论/分享/硬币/收藏/点赞来源分区 type McnGetIndexSourceReply struct { Result []*datamodel.DmConMcnIndexSourceD `json:"result"` } //Sort sort func (s *McnGetIndexSourceReply) Sort() { sort.Slice(s.Result, func(i, j int) bool { return s.Result[i].Value > s.Result[j].Value }) } //McnGetPlaySourceReply #mcn稿件播放来源占比 type McnGetPlaySourceReply struct { datamodel.DmConMcnPlaySourceD } // McnGetMcnFansReply mcn粉丝基本数据 type McnGetMcnFansReply struct { datamodel.DmConMcnFansD } //McnGetMcnFansIncReply mcn粉丝按天增量 type McnGetMcnFansIncReply struct { Result []*datamodel.DmConMcnFansIncD `json:"result"` } //McnGetMcnFansDecReply mcn粉丝按天取关数 type McnGetMcnFansDecReply struct { Result []*datamodel.DmConMcnFansDecD `json:"result"` } //McnGetMcnFansAttentionWayReply mcn粉丝关注渠道 type McnGetMcnFansAttentionWayReply struct { datamodel.DmConMcnFansAttentionWayD } // McnGetBaseFansAttrReply # mcn 性别占比 + 观众年龄 + 观看途径 type McnGetBaseFansAttrReply struct { FansSex *datamodel.DmConMcnFansSexW `json:"fans_sex"` FansAge *datamodel.DmConMcnFansAgeW `json:"fans_age"` FansPlayWay *datamodel.DmConMcnFansPlayWayW `json:"fans_play_way"` } // McnGetFansAreaReply 游客/粉丝地区分布 type McnGetFansAreaReply struct { Result []*datamodel.DmConMcnFansAreaW `json:"result"` } //Sort sort. func (s *McnGetFansAreaReply) Sort() { sort.Slice(s.Result, func(i, j int) bool { return s.Result[i].User > s.Result[j].User }) } // McnGetFansTypeReply 游客/粉丝倾向分布 type McnGetFansTypeReply struct { Result []*datamodel.DmConMcnFansTypeW `json:"result"` } //Sort sort. func (s *McnGetFansTypeReply) Sort() { sort.Slice(s.Result, func(i, j int) bool { return s.Result[i].Play > s.Result[j].Play }) } // McnGetFansTagReply 游客/粉丝标签地图分布 type McnGetFansTagReply struct { Result []*datamodel.DmConMcnFansTagW `json:"result"` } // ----------------------------- 4期需求 //McnChangePermitReply . type McnChangePermitReply = McnBindUpApplyReply //McnGetUpPermitReply 4.2 type McnGetUpPermitReply struct { Old *mcnadminmodel.Permits `json:"old"` New *mcnadminmodel.Permits `json:"new"` ContractLink string `json:"contract_link"` } // McnPublicationPriceChangeReply 4.4 type McnPublicationPriceChangeReply = CommonReply // McnBaseInfoReply . type McnBaseInfoReply struct { ID int64 `json:"id"` McnMid int64 `json:"mcn_mid"` CompanyName string `json:"company_name"` CompanyLicenseID string `json:"company_license_id"` CompanyLicenseLink string `json:"company_license_link"` ContractLink string `json:"contract_link"` ContactName string `json:"contact_name"` ContactTitle string `json:"contact_title"` ContactIdcard string `json:"contact_idcard"` ContactPhone string `json:"contact_phone"` BeginDate time.Time `json:"begin_date"` EndDate time.Time `json:"end_date"` RejectReason string `json:"reject_reason"` RejectTime time.Time `json:"reject_time"` State model.MCNSignState `json:"state"` Permission uint32 `json:"permission"` Ctime time.Time `json:"ctime"` Mtime time.Time `json:"mtime"` SignPayInfo []*SignPayInfoReply `json:"sign_pay_info"` Permits *mcnadminmodel.Permits `json:"permits"` // 权限集合 } // SignPayInfoReply . type SignPayInfoReply struct { State mcnadminmodel.MCNPayState `json:"-"` DueDate time.Time `json:"due_date"` PayValue int64 `json:"pay_value"` // thousand bit } // AttrPermitVal get Permission all. func (m *McnBaseInfoReply) AttrPermitVal() { m.Permits = &mcnadminmodel.Permits{} m.Permits.SetAttrPermitVal(m.Permission) } // CopyFromMcnInfo . func (m *McnBaseInfoReply) CopyFromMcnInfo(v *McnSign) { if v == nil { return } m.ID = v.ID m.McnMid = v.McnMid m.CompanyName = v.CompanyName m.CompanyLicenseID = v.CompanyLicenseID m.CompanyLicenseLink = v.CompanyLicenseLink m.ContractLink = v.ContractLink m.ContactName = v.ContactName m.ContactTitle = v.ContactTitle m.ContactIdcard = v.ContactIdcard m.ContactPhone = v.ContactPhone m.BeginDate = v.BeginDate m.EndDate = v.EndDate m.RejectReason = v.RejectReason m.RejectTime = v.RejectTime m.State = v.State m.Permission = v.Permission m.Ctime = v.Ctime m.Mtime = v.Mtime m.AttrPermitVal() }