不允许购买第二个主套餐
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m50s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m50s
This commit is contained in:
@@ -39,3 +39,47 @@ func FindAttachableMainPackageForAddon(tx *gorm.DB, carrierType string, carrierI
|
||||
}
|
||||
return &mainPackage, nil
|
||||
}
|
||||
|
||||
// FindBlockingMainPackageForFormal 查询阻止购买新主套餐的现有主套餐。
|
||||
// 待生效、生效中、未过期的已用完主套餐都仍占用主套餐资格;只有过期或失效后才允许再次购买主套餐。
|
||||
func FindBlockingMainPackageForFormal(tx *gorm.DB, carrierType string, carrierID uint, now time.Time) (*model.PackageUsage, error) {
|
||||
var mainPackage model.PackageUsage
|
||||
query := tx.Model(&model.PackageUsage{}).
|
||||
Where("master_usage_id IS NULL").
|
||||
Where(
|
||||
"(status IN ? OR (status = ? AND (expires_at IS NULL OR expires_at > ?)))",
|
||||
[]int{
|
||||
constants.PackageUsageStatusPending,
|
||||
constants.PackageUsageStatusActive,
|
||||
},
|
||||
constants.PackageUsageStatusDepleted,
|
||||
now,
|
||||
).
|
||||
Order("priority ASC, created_at ASC")
|
||||
|
||||
switch carrierType {
|
||||
case constants.AssetWalletResourceTypeIotCard, "card":
|
||||
query = query.Where("iot_card_id = ?", carrierID)
|
||||
case constants.AssetWalletResourceTypeDevice:
|
||||
query = query.Where("device_id = ?", carrierID)
|
||||
default:
|
||||
return nil, gorm.ErrRecordNotFound
|
||||
}
|
||||
|
||||
if err := query.First(&mainPackage).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &mainPackage, nil
|
||||
}
|
||||
|
||||
// HasBlockingMainPackageForFormal 判断载体是否已有阻止新主套餐购买的主套餐。
|
||||
func HasBlockingMainPackageForFormal(tx *gorm.DB, carrierType string, carrierID uint, now time.Time) (bool, error) {
|
||||
_, err := FindBlockingMainPackageForFormal(tx, carrierType, carrierID, now)
|
||||
if err == nil {
|
||||
return true, nil
|
||||
}
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user