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 { if discountEndTime == nil { p = discountPrice } else { discountEndTime := time.Time(*discountEndTime) // 检测是否超出优惠时间 now := time.Now() if discountEndTime.Before(now) { p = nil } else { p = discountPrice } } } return p }