You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
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 |
|
}
|
|
|