64 lines
1.3 KiB
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
|
|
}
|