489 lines
14 KiB
Go
489 lines
14 KiB
Go
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()
|
||
}
|