50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package packagepkg
|
|
|
|
import (
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
|
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
|
)
|
|
|
|
// ValidateExpiryBaseOverride 校验显式提交的分配生效条件覆盖。
|
|
func ValidateExpiryBaseOverride(value *string, submitted bool) (*string, error) {
|
|
if !submitted {
|
|
return nil, errors.New(errors.CodeInvalidParam)
|
|
}
|
|
if value == nil {
|
|
return nil, nil
|
|
}
|
|
if *value != constants.PackageExpiryBaseFromActivation && *value != constants.PackageExpiryBaseFromPurchase {
|
|
return nil, errors.New(errors.CodeInvalidParam)
|
|
}
|
|
return value, nil
|
|
}
|
|
|
|
// EffectiveExpiryBase 返回套餐分配最终采用的生效条件。
|
|
func EffectiveExpiryBase(pkg *model.Package, allocation *model.ShopPackageAllocation) string {
|
|
if allocation != nil && allocation.ExpiryBaseOverride != nil {
|
|
return *allocation.ExpiryBaseOverride
|
|
}
|
|
return pkg.ExpiryBase
|
|
}
|
|
|
|
// ExpiryBaseName 返回生效条件中文名称。
|
|
func ExpiryBaseName(value string) string {
|
|
switch value {
|
|
case constants.PackageExpiryBaseFromActivation:
|
|
return "实名激活时生效"
|
|
case constants.PackageExpiryBaseFromPurchase:
|
|
return "购买即生效"
|
|
default:
|
|
return "未知"
|
|
}
|
|
}
|
|
|
|
// ExpiryBaseOverrideName 返回覆盖值中文名称,空值表示跟随套餐默认。
|
|
func ExpiryBaseOverrideName(value *string) string {
|
|
if value == nil {
|
|
return "跟随套餐默认"
|
|
}
|
|
return ExpiryBaseName(*value)
|
|
}
|