feat:优化项目信息
This commit is contained in:
49
app/api/website/controller/payment/vip.go
Normal file
49
app/api/website/controller/payment/vip.go
Normal file
@ -0,0 +1,49 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user