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