go-common/app/interface/main/mcn/model/mcnmodel/reply.go
2019-04-22 18:49:16 +08:00

489 lines
14 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
}