540 lines
19 KiB
Go
540 lines
19 KiB
Go
package model
|
||
|
||
import (
|
||
"encoding/csv"
|
||
"fmt"
|
||
"time"
|
||
|
||
dtmdl "go-common/app/interface/main/mcn/model/datamodel"
|
||
xtime "go-common/library/time"
|
||
)
|
||
|
||
// Permits .
|
||
type Permits struct {
|
||
BasePermission uint8 `form:"base_permission" json:"base_permission" validate:"min=0,max=1"` // 基础权限
|
||
DataPermission uint8 `form:"data_permission" json:"data_permission" validate:"min=0,max=1"` // 数据权限
|
||
RecPermission uint8 `form:"rec_permission" json:"rec_permission" validate:"min=0,max=1"` // 推荐权限
|
||
DepartPermission uint8 `form:"depart_permission" json:"depart_permission" validate:"min=0,max=1"` // 起飞权限
|
||
}
|
||
|
||
// SetAttrPermitVal set struct from permission
|
||
func (p *Permits) SetAttrPermitVal(val uint32) {
|
||
p.BasePermission = AttrVal(val, uint(AttrBasePermitBit))
|
||
p.DataPermission = AttrVal(val, uint(AttrDataPermitBit))
|
||
p.RecPermission = AttrVal(val, uint(AttrRecPermitBit))
|
||
p.DepartPermission = AttrVal(val, uint(AttrDepartPermitBit))
|
||
}
|
||
|
||
// GetAttrPermitVal .
|
||
func (p *Permits) GetAttrPermitVal() (permission uint32) {
|
||
permission = AttrSet(permission, p.BasePermission, uint(AttrBasePermitBit))
|
||
permission = AttrSet(permission, p.DataPermission, uint(AttrDataPermitBit))
|
||
permission = AttrSet(permission, p.RecPermission, uint(AttrRecPermitBit))
|
||
permission = AttrSet(permission, p.DepartPermission, uint(AttrDepartPermitBit))
|
||
return
|
||
}
|
||
|
||
// AttrSet set Permission.
|
||
func AttrSet(dest uint32, bitValue uint8, bit uint) (res uint32) {
|
||
res = dest&(^(1 << bit)) | (uint32(bitValue) << bit)
|
||
return
|
||
}
|
||
|
||
// AttrVal get Permission.
|
||
func AttrVal(v uint32, bit uint) uint8 {
|
||
return uint8((v >> bit) & 1)
|
||
}
|
||
|
||
// MCNSignInfoReply .
|
||
type MCNSignInfoReply struct {
|
||
SignID int64 `json:"sign_id"`
|
||
McnMid int64 `json:"mcn_mid"`
|
||
McnName string `json:"mcn_name"`
|
||
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"`
|
||
ContactPhone string `json:"contact_phone"`
|
||
ContactIdcard string `json:"contact_idcard"`
|
||
BeginDate xtime.Time `json:"begin_date"`
|
||
EndDate xtime.Time `json:"end_date"`
|
||
State MCNSignState `json:"state"`
|
||
RejectTime xtime.Time `json:"reject_time"`
|
||
RejectReason string `json:"reject_reason"`
|
||
Ctime xtime.Time `json:"ctime"`
|
||
Mtime xtime.Time `json:"mtime"`
|
||
SignPayInfo []*SignPayInfoReply `json:"sign_pay_info"`
|
||
Permission uint32 `json:"permission"`
|
||
Permits *Permits `json:"permits"` // 权限集合
|
||
}
|
||
|
||
// AttrPermitVal get Permission all.
|
||
func (n *MCNSignInfoReply) AttrPermitVal() {
|
||
n.Permits = &Permits{}
|
||
n.Permits.SetAttrPermitVal(n.Permission)
|
||
}
|
||
|
||
// MCNSignListReply .
|
||
type MCNSignListReply struct {
|
||
List []*MCNSignInfoReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// SignPayInfoReply .
|
||
type SignPayInfoReply struct {
|
||
SignPayID int64 `json:"sign_pay_id,omitempty"`
|
||
McnMid int64 `json:"mcn_mid"`
|
||
SignID int64 `json:"sign_id,omitempty"`
|
||
State MCNPayState `json:"state"`
|
||
DueDate xtime.Time `json:"due_date"`
|
||
PayValue int64 `json:"pay_value"` // thousand bit
|
||
}
|
||
|
||
// MCNUPInfoReply .
|
||
type MCNUPInfoReply struct {
|
||
SignUpID int64 `json:"sign_up_id"`
|
||
SignID int64 `json:"sign_id"`
|
||
McnMid int64 `json:"mcn_mid"`
|
||
UpMid int64 `json:"up_mid"`
|
||
BeginDate xtime.Time `json:"begin_date"`
|
||
EndDate xtime.Time `json:"end_date"`
|
||
ContractLink string `json:"contract_link"`
|
||
UpAuthLink string `json:"up_auth_link"`
|
||
RejectTime xtime.Time `json:"reject_time"`
|
||
RejectReason string `json:"reject_reason"`
|
||
State MCNUPState `json:"state"`
|
||
StateChangeTime xtime.Time `json:"state_change_time"`
|
||
Ctime xtime.Time `json:"ctime"`
|
||
Mtime xtime.Time `json:"mtime"`
|
||
UpName string `json:"up_name"`
|
||
McnName string `json:"mcn_name"`
|
||
ActiveTid int16 `json:"active_tid"`
|
||
TpName string `json:"type_name"`
|
||
FansCount int64 `json:"fans_count"`
|
||
FansCountActive int64 `json:"fans_count_active"`
|
||
FansIncreaseAccumulate int64 `json:"fans_increase_accumulate"`
|
||
ArchiveCount int64 `json:"archive_count"`
|
||
PlayCount int64 `json:"play_count"`
|
||
UPType int8 `json:"up_type"`
|
||
SiteLink string `json:"site_link"`
|
||
ConfirmTime xtime.Time `json:"confirm_time"`
|
||
PubPrice int64 `json:"publication_price"`
|
||
Permission uint32 `json:"permission"`
|
||
Permits *Permits `json:"permits"` // 权限集合
|
||
}
|
||
|
||
// AttrPermitVal get Permission all.
|
||
func (n *MCNUPInfoReply) AttrPermitVal() {
|
||
n.Permits = &Permits{}
|
||
n.Permits.SetAttrPermitVal(n.Permission)
|
||
}
|
||
|
||
// MCNUPReviewListReply .
|
||
type MCNUPReviewListReply struct {
|
||
List []*MCNUPInfoReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// UpBaseInfo .
|
||
type UpBaseInfo struct {
|
||
Mid int64 `json:"mid"`
|
||
FansCount int64 `json:"fans_count"`
|
||
ActiveTid int16 `json:"active_tid"`
|
||
ArticleCountAccumulate int64 `json:"article_count_accumulate"`
|
||
}
|
||
|
||
// UpPlayInfo .
|
||
type UpPlayInfo struct {
|
||
Mid int64 `json:"mid"`
|
||
ArticleCount int64 `json:"article_count"`
|
||
PlayCountAccumulate int64 `json:"play_count_accumulate"`
|
||
PlayCountAverage int64 `json:"play_count_average"`
|
||
}
|
||
|
||
// MCNListReply struct .
|
||
type MCNListReply struct {
|
||
List []*MCNListOne `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// MCNListOne struct .
|
||
type MCNListOne struct {
|
||
ID int64 `json:"id"`
|
||
MCNMID int64 `json:"mcn_mid"`
|
||
MCNName string `json:"mcn_name"`
|
||
UPCount int64 `json:"up_count"`
|
||
FansCountAccumulate int64 `json:"fans_count_accumulate"`
|
||
FansCountOnlineAccumulate int64 `json:"fans_count_online_accumulate"`
|
||
FansCountRealAccumulate int64 `json:"fans_count_real_accumulate"`
|
||
FansCountCheatAccumulate int64 `json:"fans_count_cheat_accumulate"`
|
||
GenerateDate xtime.Time `json:"generate_date"`
|
||
BeginDate xtime.Time `json:"begin_date"`
|
||
EndDate xtime.Time `json:"end_date"`
|
||
State MCNSignState `json:"state"`
|
||
PayInfos []*SignPayInfoReply `json:"pay_infos"`
|
||
Permission uint32 `json:"permission"`
|
||
Permits *Permits `json:"permits"` // 权限集合
|
||
}
|
||
|
||
// AttrPermitVal get Permission all.
|
||
func (n *MCNListOne) AttrPermitVal() {
|
||
n.Permits = &Permits{}
|
||
n.Permits.SetAttrPermitVal(n.Permission)
|
||
}
|
||
|
||
// MCNInfoReply struct .
|
||
type MCNInfoReply struct {
|
||
MCNSign
|
||
UPCount int64 `json:"up_count"`
|
||
ArchiveCountAccumulate int64 `json:"archive_count_accumulate"`
|
||
PlayCountAccumulate int64 `json:"play_count_accumulate"`
|
||
FansCountAccumulate int64 `json:"fans_count_accumulate"`
|
||
FansCountOnline int64 `json:"fans_count_online"`
|
||
FansCountReal int64 `json:"fans_count_real"`
|
||
FansCountCheat int64 `json:"fans_count_cheat"`
|
||
FansCountRealAccumulate int64 `json:"fans_count_real_accumulate"`
|
||
FansCountOnlineAccumulate int64 `json:"fans_count_online_accumulate"`
|
||
}
|
||
|
||
// MCNUPListReply struct .
|
||
type MCNUPListReply struct {
|
||
List []*MCNUPInfoReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// MCNCheatReply struct .
|
||
type MCNCheatReply struct {
|
||
SignID int64 `json:"sign_id"`
|
||
MCNMID int64 `json:"mcn_mid"`
|
||
MCNName string `json:"mcn_name"`
|
||
UpMID int64 `json:"up_mid"`
|
||
UpName string `json:"up_name"`
|
||
FansCountCheatAccumulate int64 `json:"fans_count_cheat_accumulate"`
|
||
FansCountCheatIncreaseDay int64 `json:"fans_count_cheat_increase_day"`
|
||
FansCountReal int64 `json:"fans_count_real"`
|
||
FansCountCheatCleanedAccumulate int64 `json:"fans_count_cheat_cleaned_accumulate"`
|
||
}
|
||
|
||
// MCNCheatListReply struct.
|
||
type MCNCheatListReply struct {
|
||
List []*MCNCheatReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// MCNCheatUPReply struct .
|
||
type MCNCheatUPReply struct {
|
||
GenerateDate xtime.Time `json:"generate_date"`
|
||
FansCountCheatIncreaseDay int64 `json:"fans_count_cheat_increase_day"`
|
||
MCNMID int64 `json:"mcn_mid"`
|
||
MCNName string `json:"mcn_name"`
|
||
SignID int64 `json:"sign_id"`
|
||
FansCountCheatAccumulate int64 `json:"fans_count_cheat_accumulate"`
|
||
FansCountCheatCleanedAccumulate int64 `json:"fans_count_cheat_cleaned_accumulate"`
|
||
FansCountReal int64 `json:"fans_count_real"`
|
||
}
|
||
|
||
// MCNCheatUPListReply struct .
|
||
type MCNCheatUPListReply struct {
|
||
List []*MCNCheatUPReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
// MCNImportUPInfoReply struct .
|
||
type MCNImportUPInfoReply struct {
|
||
ID int64 `json:"id"`
|
||
MCNMID int64 `json:"mcn_mid"`
|
||
SignID int64 `json:"sign_id"`
|
||
UpMID int64 `json:"up_mid"`
|
||
UpName string `json:"up_name"`
|
||
StandardFansDate int64 `json:"standard_fans_date"`
|
||
StandardArchiveCount int64 `json:"standard_archive_count"`
|
||
StandardFansCount int64 `json:"standard_fans_count"`
|
||
IsReward int8 `json:"is_reward"`
|
||
JoinTime int32 `json:"join_time"`
|
||
}
|
||
|
||
// MCNIncreaseReply struct .
|
||
type MCNIncreaseReply struct {
|
||
ID int64 `json:"id"`
|
||
SignID int64 `json:"sign_id"`
|
||
DataType int8 `json:"data_type"`
|
||
ActiveTID int64 `json:"active_tid"`
|
||
GenerateDate xtime.Time `json:"generate_date"`
|
||
UPCount int64 `json:"up_count"`
|
||
FansCountOnlineAccumulate int64 `json:"fans_count_online_accumulate"`
|
||
FansCountRealAccumulate int64 `json:"fans_count_real_accumulate"`
|
||
FansCountCheatAccumulate int64 `json:"fans_count_cheat_accumulate"`
|
||
FansCountIncreaseDay int64 `json:"fans_count_increase_day"`
|
||
ArchiveCountAccumulate int64 `json:"archive_count_accumulate"`
|
||
ArchiveCountDay int64 `json:"archive_count_day"`
|
||
PlayCountAccumulate int64 `json:"play_count_accumulate"`
|
||
PlayCountIncreaseDay int64 `json:"play_count_increase_day"`
|
||
FansCountAccumulate int64 `json:"fans_count_accumulate"`
|
||
}
|
||
|
||
// MCNIncreaseListReply struct .
|
||
type MCNIncreaseListReply struct {
|
||
List []*MCNIncreaseReply `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
//GetFileName get file name
|
||
func (q *MCNListReply) GetFileName() string {
|
||
return fmt.Sprintf("%s_%s.csv", "MCN列表", time.Now().Format(dateTimeFmt))
|
||
}
|
||
|
||
//ToCsv to buffer
|
||
func (q *MCNListReply) ToCsv(writer *csv.Writer) {
|
||
var title = []string{
|
||
"ID",
|
||
"MCN_ID",
|
||
"MCN_昵称",
|
||
"签约UP主数",
|
||
"累计粉丝数",
|
||
"累计线上涨粉数",
|
||
"累计实际粉丝数",
|
||
"累计作弊粉丝数",
|
||
"签约周期",
|
||
"付款周期",
|
||
"账号状态",
|
||
}
|
||
writer.Write(title)
|
||
if q == nil {
|
||
return
|
||
}
|
||
for _, v := range q.List {
|
||
var record []string
|
||
var payString string
|
||
if len(v.PayInfos) > 0 {
|
||
for _, pv := range v.PayInfos {
|
||
payString += fmt.Sprintf("%s-%d-%s ", pv.DueDate.Time().Format(TimeFormatDay), pv.PayValue/1000, pv.State.String())
|
||
}
|
||
}
|
||
record = append(record,
|
||
intFormat(v.ID),
|
||
intFormat(v.MCNMID),
|
||
v.MCNName,
|
||
intFormat(v.UPCount),
|
||
intFormat(v.FansCountAccumulate),
|
||
intFormat(v.FansCountOnlineAccumulate),
|
||
intFormat(v.FansCountRealAccumulate),
|
||
intFormat(v.FansCountCheatAccumulate),
|
||
fmt.Sprintf("%s-%s", v.BeginDate.Time().Format(TimeFormatDay), v.EndDate.Time().Format(TimeFormatDay)),
|
||
payString,
|
||
v.State.String(),
|
||
)
|
||
writer.Write(record)
|
||
}
|
||
}
|
||
|
||
//GetFileName get file name
|
||
func (q *MCNUPListReply) GetFileName() string {
|
||
return fmt.Sprintf("%s_%s.csv", "MCN UP主列表", time.Now().Format(dateTimeFmt))
|
||
}
|
||
|
||
//ToCsv to buffer
|
||
func (q *MCNUPListReply) ToCsv(writer *csv.Writer) {
|
||
var title = []string{
|
||
"ID",
|
||
"UP主UID",
|
||
"UP主昵称",
|
||
"粉丝总量",
|
||
"活跃粉丝量",
|
||
"粉数增长量",
|
||
"稿件量",
|
||
"播放量",
|
||
"分区",
|
||
"账号状态",
|
||
"签约周期",
|
||
}
|
||
writer.Write(title)
|
||
if q == nil {
|
||
return
|
||
}
|
||
for _, v := range q.List {
|
||
var record []string
|
||
record = append(record,
|
||
intFormat(v.SignUpID),
|
||
intFormat(v.UpMid),
|
||
v.UpName,
|
||
intFormat(v.FansCount),
|
||
intFormat(v.FansCountActive),
|
||
intFormat(v.FansIncreaseAccumulate),
|
||
intFormat(v.ArchiveCount),
|
||
intFormat(v.PlayCount),
|
||
v.TpName,
|
||
v.State.String(),
|
||
fmt.Sprintf("%s-%s", v.BeginDate.Time().Format(TimeFormatDay), v.EndDate.Time().Format(TimeFormatDay)),
|
||
)
|
||
|
||
writer.Write(record)
|
||
}
|
||
}
|
||
|
||
// McnUpRecommendPool .
|
||
type McnUpRecommendPool struct {
|
||
ID int64 `json:"id"`
|
||
UpMid int64 `json:"up_mid"`
|
||
UpName string `json:"up_name"`
|
||
FansCount int64 `json:"fans_count"`
|
||
FansCountIncreaseMonth int64 `json:"fans_count_increase_month"`
|
||
ArchiveCount int64 `json:"archive_count"`
|
||
PlayCountAccumulate int64 `json:"play_count_accumulate"`
|
||
PlayCountAverage int64 `json:"play_count_average"`
|
||
ActiveTid int16 `json:"active_tid"`
|
||
TpName string `json:"type_name"`
|
||
LastArchiveTime xtime.Time `json:"last_archive_time"`
|
||
State MCNUPRecommendState `json:"state"`
|
||
Source MCNUPRecommendSource `json:"source"`
|
||
GenerateTime xtime.Time `json:"generate_time"`
|
||
Ctime xtime.Time `json:"ctime"`
|
||
Mtime xtime.Time `json:"mtime"`
|
||
}
|
||
|
||
// McnUpRecommendListReply struct .
|
||
type McnUpRecommendListReply struct {
|
||
List []*McnUpRecommendPool `json:"result"`
|
||
PageResult
|
||
}
|
||
|
||
//GetFileName get file name
|
||
func (list *McnUpRecommendListReply) GetFileName() string {
|
||
return fmt.Sprintf("%s_%s.csv", "MCN推荐池列表", time.Now().Format(dateTimeFmt))
|
||
}
|
||
|
||
//ToCsv to buffer
|
||
func (list *McnUpRecommendListReply) ToCsv(writer *csv.Writer) {
|
||
var title = []string{
|
||
"UP主UID",
|
||
"up主昵称",
|
||
"粉丝量",
|
||
"本月粉丝增长量",
|
||
"累积播放量",
|
||
"稿均播放量",
|
||
"分区",
|
||
"最近投稿时间",
|
||
"来源",
|
||
"推荐池状态",
|
||
"数据更新时间",
|
||
}
|
||
writer.Write(title)
|
||
if list == nil {
|
||
return
|
||
}
|
||
for _, v := range list.List {
|
||
var record []string
|
||
record = append(record,
|
||
intFormat(v.UpMid),
|
||
v.UpName,
|
||
intFormat(v.FansCount),
|
||
intFormat(v.FansCountIncreaseMonth),
|
||
intFormat(v.PlayCountAccumulate),
|
||
intFormat(v.PlayCountAverage),
|
||
v.TpName,
|
||
v.LastArchiveTime.Time().Format(TimeFormatSec),
|
||
v.Source.String(),
|
||
v.State.String(),
|
||
v.GenerateTime.Time().Format(TimeFormatSec),
|
||
)
|
||
writer.Write(record)
|
||
}
|
||
}
|
||
|
||
// McnGetRankUpFansReply reply
|
||
type McnGetRankUpFansReply struct {
|
||
Result []*RankArchiveLikeInfo `json:"result"` // 按顺序进行排名
|
||
TypeList []*TidnameInfo `json:"type_list"`
|
||
}
|
||
|
||
// GetFileName get file name
|
||
func (list *McnGetRankUpFansReply) GetFileName() string {
|
||
return fmt.Sprintf("%s_%s.csv", "top稿件列表", time.Now().Format(dateTimeFmt))
|
||
}
|
||
|
||
// ToCsv to buffer
|
||
func (list *McnGetRankUpFansReply) ToCsv(writer *csv.Writer) {
|
||
var title = []string{
|
||
"稿件ID",
|
||
"稿件标题",
|
||
"UP主UID",
|
||
"UP主昵称",
|
||
"新增点赞数",
|
||
"累积点赞数",
|
||
"新增播放数",
|
||
"累积播放数",
|
||
"分区",
|
||
"上传日期",
|
||
}
|
||
writer.Write(title)
|
||
if list == nil {
|
||
return
|
||
}
|
||
for _, v := range list.Result {
|
||
var record []string
|
||
record = append(record,
|
||
intFormat(v.ArchiveID),
|
||
v.ArchiveTitle,
|
||
intFormat(v.Author.Mid),
|
||
v.Author.Name,
|
||
intFormat(v.LikesIncrease),
|
||
intFormat(v.LikesAccumulate),
|
||
intFormat(v.PlayIncrease),
|
||
intFormat(v.PlayAccumulate),
|
||
v.TidName,
|
||
v.Ctime.Time().Format(TimeFormatSec),
|
||
)
|
||
writer.Write(record)
|
||
}
|
||
}
|
||
|
||
// McnGetMcnFansReply reply 粉丝分析.
|
||
type McnGetMcnFansReply struct {
|
||
FansOverview *dtmdl.DmConMcnFansD `json:"fans_overview"` // 粉丝概况
|
||
FansSex *dtmdl.DmConMcnFansSexW `json:"fans_sex"` // 粉丝性别
|
||
FansAge *dtmdl.DmConMcnFansAgeW `json:"fans_age"` // 粉丝年龄
|
||
FansPlayWay *dtmdl.DmConMcnFansPlayWayW `json:"fans_play_way"` // 粉丝观看途径
|
||
FansArea []*dtmdl.DmConMcnFansAreaW `json:"fans_area"` // 粉丝地区分布
|
||
FansType []*dtmdl.DmConMcnFansTypeW `json:"fans_type"` // 粉丝倾向分布
|
||
FansTag []*dtmdl.DmConMcnFansTagW `json:"fans_tag"` // 粉丝标签地图分布
|
||
}
|
||
|
||
// McnUpPermissionApply .
|
||
type McnUpPermissionApply struct {
|
||
ID int64 `json:"id"`
|
||
McnMid int64 `json:"mcn_mid"`
|
||
UpMid int64 `json:"up_mid"`
|
||
McnName string `json:"mcn_name"`
|
||
UpName string `json:"up_name"`
|
||
SignID int64 `json:"sign_id"`
|
||
FansCount int64 `json:"fans_count"`
|
||
UpAuthLink string `json:"up_auth_link"`
|
||
ActiveTID int16 `json:"active_tid"`
|
||
TypeName string `json:"type_name"`
|
||
RejectReason string `json:"reject_reason"`
|
||
RejectTime xtime.Time `json:"reject_time"`
|
||
State MCNUPPermissionState `json:"state"`
|
||
Ctime xtime.Time `json:"ctime"`
|
||
Mtime xtime.Time `json:"mtime"`
|
||
AdminID int64 `json:"admin_id"`
|
||
AdminName string `json:"admin_name"`
|
||
OldPermits *Permits `json:"old_permits"`
|
||
NewPermits *Permits `json:"new_permits"`
|
||
NewPermission uint32 `json:"-"`
|
||
OldPermission uint32 `json:"-"`
|
||
}
|
||
|
||
// AttrPermitVal get Permission all.
|
||
func (n *McnUpPermissionApply) AttrPermitVal() {
|
||
n.OldPermits, n.NewPermits = &Permits{}, &Permits{}
|
||
n.OldPermits.SetAttrPermitVal(n.OldPermission)
|
||
n.NewPermits.SetAttrPermitVal(n.NewPermission)
|
||
}
|
||
|
||
// McnUpPermitApplyListReply struct .
|
||
type McnUpPermitApplyListReply struct {
|
||
List []*McnUpPermissionApply `json:"result"`
|
||
PageResult
|
||
}
|