go-common/app/interface/main/mcn/model/mcnmodel/reply.go

489 lines
14 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
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()
}