feat:优化项目信息
This commit is contained in:
68
app/api/enterprise/controller/user/vip.go
Normal file
68
app/api/enterprise/controller/user/vip.go
Normal file
@ -0,0 +1,68 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"SciencesServer/app/api/enterprise/model"
|
||||
"SciencesServer/app/basic/controller"
|
||||
model2 "SciencesServer/app/common/model"
|
||||
"SciencesServer/app/session"
|
||||
"SciencesServer/lib"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Vip struct {
|
||||
*session.Enterprise
|
||||
}
|
||||
|
||||
type VipHandle func(session *session.Enterprise) *Vip
|
||||
|
||||
// Open 开通会员
|
||||
func (c *Vip) Open(id uint64) (*controller.ReturnPayment, error) {
|
||||
mSysVip := model.NewSysVip()
|
||||
mSysVip.ID = id
|
||||
|
||||
isExist, err := model2.FirstField(mSysVip.SysVip, []string{"id", "level", "effect_time", "price", "is_disabled"})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !isExist {
|
||||
return nil, errors.New("操作错误,会员信息不存在或已删除")
|
||||
} else if mSysVip.IsDeleted > 0 {
|
||||
return nil, errors.New("操作错误,当前会员不允许开通")
|
||||
}
|
||||
// 查询用户会员信息
|
||||
mUserInstance := model.NewUserInstance()
|
||||
|
||||
if _, err = model2.FirstField(mUserInstance.UserInstance, []string{"id", "vip", "vip_deadline"},
|
||||
model2.NewWhere("uuid", c.UID)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 会员状态有效期内,不可降级
|
||||
if mUserInstance.VipStatus() {
|
||||
mSysVip2 := model.NewSysVip()
|
||||
mSysVip2.ID = mUserInstance.Vip
|
||||
|
||||
if isExist, err = model2.FirstField(mSysVip2.SysVip, []string{"id", "level"}); err != nil {
|
||||
return nil, err
|
||||
} else if isExist && mSysVip2.Level > mSysVip.Level {
|
||||
return nil, errors.New("操作错误,会员有效期间内不可以降级")
|
||||
}
|
||||
}
|
||||
mOrderInstance := model.NewOrderInstance()
|
||||
mOrderInstance.UID = c.UID
|
||||
mOrderInstance.OrderNo = lib.OrderNo()
|
||||
mOrderInstance.Amount = mSysVip.Price
|
||||
mOrderInstance.SetParamsAttribute(model2.OrderInstanceParamsKindForVIP, &model2.OrderInstanceParamsForVip{
|
||||
ID: mSysVip.ID, EffectTime: mSysVip.EffectTime,
|
||||
})
|
||||
return &controller.ReturnPayment{
|
||||
Auth: mOrderInstance.GetEncodeID(),
|
||||
Timestamp: time.Now().Unix(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewVip() VipHandle {
|
||||
return func(session *session.Enterprise) *Vip {
|
||||
return &Vip{session}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user