bilibili-backup/app/service/main/tv/internal/model/main_vip.go
2019-04-22 02:59:20 +00:00

34 lines
849 B
Go

package model
import (
"math"
"time"
)
// MainVip represents bilibili vip info.
type MainVip struct {
Mid int64 `json:"mid"`
VipType int8 `json:"vip_type"` // 大会员类型 0.非大会员 1.月度大会员 2.年度会员
PayType int8 `json:"pay_type"`
VipStatus int8 `json:"vip_status"` //大会员状态: 0.过期 1.未过期 2.冻结 3.封禁
VipDueDate int64 `json:"vip_due_date"`
}
// IsVip returns true if user is vip.
func (mv *MainVip) IsVip() bool {
return mv.VipType != 0 && (mv.VipStatus == 1 || mv.VipStatus == 3)
}
// Months returns vip months.
func (mv *MainVip) Months() int32 {
if !mv.IsVip() {
return 0
}
nowInMs := time.Now().UnixNano() / int64(time.Millisecond)
span := mv.VipDueDate - nowInMs
if span <= 0 {
return 0
}
return int32(math.Floor(float64(span) / 1000 / 60 / 60 / 24 / 31))
}