hepa-calc-api/api/service/SystemMember.go

64 lines
1.3 KiB
Go

package service
import (
"hepa-calc-api/api/model"
"time"
)
type SystemMemberService struct {
}
// GetSystemMemberBuyPrice 获取会员购买价格
func (r *SystemMemberService) GetSystemMemberBuyPrice(m *model.SystemMember) (p float64) {
p = m.Price
if m.DiscountPrice != nil {
p = *m.DiscountPrice
}
return p
}
// GetUserBuyPrice 获取会员最终价格
func (r *SystemMemberService) GetUserBuyPrice(userId int64, m *model.SystemMember) (p float64) {
// 优惠价格
price := r.HandleSystemMemberDiscountPrice(m.DiscountPrice, m.DiscountEndTime)
if price == nil {
// 正常价格
p = m.Price
} else {
p = *price
}
if m.ReductionAmount != nil {
// 检测用户是否购买过单项产品
userService := &UserService{}
isBuy := userService.CheckUserBuyMember(userId)
if isBuy == false {
// 未购买过
p = p - *m.ReductionAmount
}
}
return p
}
// HandleSystemMemberDiscountPrice 处理会员优惠价格
func (r *SystemMemberService) HandleSystemMemberDiscountPrice(discountPrice *float64, discountEndTime *model.LocalTime) (p *float64) {
// 优惠价格
if discountPrice != nil {
discountEndTime := time.Time(*discountEndTime)
// 检测是否超出优惠时间
now := time.Now()
if discountEndTime.Before(now) {
p = nil
} else {
p = discountPrice
}
}
return p
}