Files
go-common/app/service/main/tv/internal/model/user_info.go
2019-04-22 18:49:16 +08:00

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
}