34 lines
849 B
Go
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))
|
|
}
|