修复已用完套餐展示
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m51s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m51s
This commit is contained in:
@@ -346,7 +346,7 @@ func (s *Service) buildCardResolveResponse(ctx context.Context, card *model.IotC
|
||||
|
||||
// fillPackageInfo 填充当前主套餐信息到响应中
|
||||
func (s *Service) fillPackageInfo(ctx context.Context, resp *dto.AssetResolveResponse, carrierType string, carrierID uint) {
|
||||
usage, err := s.packageUsageStore.GetActiveMainPackage(ctx, carrierType, carrierID)
|
||||
usage, err := s.packageUsageStore.GetCurrentMainPackage(ctx, carrierType, carrierID)
|
||||
if err != nil || usage == nil {
|
||||
return
|
||||
}
|
||||
@@ -881,7 +881,7 @@ func (s *Service) GetPackages(ctx context.Context, assetType string, id uint, pa
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetCurrentPackage 获取资产当前生效的主套餐
|
||||
// GetCurrentPackage 获取资产当前可展示的主套餐。
|
||||
// callerAccountType: 调用方账号类型,"platform" 时返回成本价(paid_amount),其他类型不返回
|
||||
func (s *Service) GetCurrentPackage(ctx context.Context, assetType string, id uint, callerAccountType string) (*dto.AssetPackageResponse, error) {
|
||||
carrierType := assetType
|
||||
@@ -889,14 +889,14 @@ func (s *Service) GetCurrentPackage(ctx context.Context, assetType string, id ui
|
||||
carrierType = "iot_card"
|
||||
}
|
||||
|
||||
usage, err := s.packageUsageStore.GetActiveMainPackage(ctx, carrierType, id)
|
||||
usage, err := s.packageUsageStore.GetCurrentMainPackage(ctx, carrierType, id)
|
||||
if err != nil {
|
||||
// 记录不存在表示当前无生效套餐,属于正常业务状态,返回 nil 而非错误
|
||||
// 记录不存在表示当前无套餐,属于正常业务状态,返回 nil 而非错误
|
||||
// 其他 DB 错误才作为服务端错误处理
|
||||
if stderrors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询当前生效套餐失败")
|
||||
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询当前套餐失败")
|
||||
}
|
||||
|
||||
return s.buildAssetPackageResponse(ctx, usage, callerAccountType), nil
|
||||
|
||||
@@ -58,13 +58,12 @@ func (s *PackageUsageStore) Update(ctx context.Context, usage *model.PackageUsag
|
||||
return s.db.WithContext(ctx).Save(usage).Error
|
||||
}
|
||||
|
||||
// GetActiveMainPackage 查询载体的生效中主套餐
|
||||
// carrierType: "iot_card" 或 "device"
|
||||
// carrierID: iot_card_id 或 device_id
|
||||
func (s *PackageUsageStore) GetActiveMainPackage(ctx context.Context, carrierType string, carrierID uint) (*model.PackageUsage, error) {
|
||||
// GetCurrentMainPackage 查询载体当前可展示的主套餐。
|
||||
// 当前套餐包含生效中和已用完状态;carrierType 为 "iot_card" 或 "device"。
|
||||
func (s *PackageUsageStore) GetCurrentMainPackage(ctx context.Context, carrierType string, carrierID uint) (*model.PackageUsage, error) {
|
||||
var usage model.PackageUsage
|
||||
query := s.db.WithContext(ctx).
|
||||
Where("status = ?", constants.PackageUsageStatusActive).
|
||||
Where("status IN (?, ?)", constants.PackageUsageStatusActive, constants.PackageUsageStatusDepleted).
|
||||
Where("master_usage_id IS NULL"). // 主套餐的 master_usage_id 为 NULL
|
||||
Order("priority ASC, activated_at ASC")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user