70 lines
2.0 KiB
Go
70 lines
2.0 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
xtime "go-common/library/time"
|
|
)
|
|
|
|
// UserInfo represents user info.
|
|
type UserInfo struct {
|
|
ID int32 `json:"id"` // 用户信息表
|
|
Mid int64 `json:"mid"` // 用户mid
|
|
Ver int32 `json:"ver"` // 版本控制
|
|
VipType int8 `json:"vip_type"` // tv-vip类型:1.vip 2.年费vip
|
|
PayType int8 `json:"pay_type"` // tv-vip购买类型:0.正常购买 1.连续包月
|
|
PayChannelId string `json:"pay_channel_id"` // 自动续费渠道:wechat,alipay
|
|
Status int8 `json:"status"` // tv-vip状态:0:过期 1:未过期
|
|
OverdueTime xtime.Time `json:"overdue_time"` // tv-vip过期时间
|
|
RecentPayTime xtime.Time `json:"recent_pay_time"` // tv-vip最近开通时间
|
|
Ctime xtime.Time `json:"ctime"` // 创建时间
|
|
Mtime xtime.Time `json:"mtime"` // 修改时间
|
|
}
|
|
|
|
// IsEmpty returns true if user id equals -1.
|
|
func (ui *UserInfo) IsEmpty() bool {
|
|
return ui.ID == -1
|
|
}
|
|
|
|
// IsExpired returns true if user is expired vip.
|
|
func (ui *UserInfo) IsExpired() bool {
|
|
return ui.OverdueTime < xtime.Time(time.Now().Unix())
|
|
}
|
|
|
|
// MarkExpired sets user status to expired status.
|
|
func (ui *UserInfo) MarkExpired() {
|
|
ui.Status = 0
|
|
}
|
|
|
|
// IsVip returns true if user is vip.
|
|
func (ui *UserInfo) IsVip() bool {
|
|
if ui.IsEmpty() {
|
|
return false
|
|
}
|
|
if ui.IsExpired() {
|
|
return false
|
|
}
|
|
return ui.Status == 1
|
|
}
|
|
|
|
// IsContracted returns true if user buys contracted package.
|
|
func (ui *UserInfo) IsContracted() bool {
|
|
return ui.PayType == 1
|
|
}
|
|
|
|
// CopyFromPayOrder copies fileds from pay order.
|
|
func (ui *UserInfo) CopyFromPayOrder(po *PayOrder) {
|
|
ui.VipType = VipTypeVip
|
|
ui.PayChannelId = po.PaymentType
|
|
ui.RecentPayTime = xtime.Time(time.Now().Unix())
|
|
}
|
|
|
|
// CopyFromPanel copies field from panel.
|
|
func (ui *UserInfo) CopyFromPanel(p *PanelPriceConfig) {
|
|
if p.SubType == SubTypeContract {
|
|
ui.PayType = VipPayTypeSub
|
|
return
|
|
}
|
|
ui.PayType = VipPayTypeNormal
|
|
}
|