Files

50 lines
1.2 KiB
Go
Raw Normal View History

2022-02-15 17:19:23 +08:00
package payment
import (
"SciencesServer/app/api/website/model"
model2 "SciencesServer/app/common/model"
"gorm.io/gorm"
"time"
)
// Vip 会员信息
type Vip struct {
uid, vipID uint64
effectTime int
}
type VipCallback func(uid, vipID uint64, effectTime int) *Vip
func (c *Vip) grant(tx *gorm.DB) error {
mUserInstance := model.NewUserInstance()
isExist, err := model2.FirstField(mUserInstance.UserInstance, []string{"id", "vip", "vip_deadline"},
model2.NewWhere("uuid", c.uid))
if err != nil {
return err
} else if isExist {
if mUserInstance.VipStatus() {
mUserInstance.Vip = c.vipID
mUserInstance.VipDeadline = mUserInstance.VipDeadline.AddDate(0, c.effectTime, 0)
} else {
mUserInstance.Vip = c.vipID
mUserInstance.VipDeadline = time.Now().AddDate(0, c.effectTime, 0)
}
if err = model2.Updates(mUserInstance.UserInstance, map[string]interface{}{
"vip": mUserInstance.Vip, "vip_deadline": mUserInstance.VipDeadline, "updated_at": time.Now(),
}, tx); err != nil {
return err
}
}
return nil
}
func NewVip() VipCallback {
return func(uid, vipID uint64, effectTime int) *Vip {
return &Vip{
uid: uid, vipID: vipID, effectTime: effectTime,
}
}
}