fix
This commit is contained in:
@@ -229,10 +229,12 @@ func (s *ApiApplicationServiceImpl) validateApiCall(ctx context.Context, cmd *co
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 6. 验证订阅状态
|
||||
if err := s.validateSubscriptionStatus(ctx, apiUser.UserId, product); err != nil {
|
||||
// 6. 验证订阅状态并获取订阅信息
|
||||
subscription, err := s.validateSubscriptionStatus(ctx, apiUser.UserId, product)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result.SetSubscription(subscription)
|
||||
|
||||
// 7. 解密参数
|
||||
requestParams, err := crypto.AesDecrypt(cmd.Data, apiUser.SecretKey)
|
||||
@@ -1119,8 +1121,8 @@ func (s *ApiApplicationServiceImpl) validateWalletStatus(ctx context.Context, us
|
||||
return nil
|
||||
}
|
||||
|
||||
// validateSubscriptionStatus 验证订阅状态
|
||||
func (s *ApiApplicationServiceImpl) validateSubscriptionStatus(ctx context.Context, userID string, product *product_entities.Product) error {
|
||||
// validateSubscriptionStatus 验证订阅状态并返回订阅信息
|
||||
func (s *ApiApplicationServiceImpl) validateSubscriptionStatus(ctx context.Context, userID string, product *product_entities.Product) (*product_entities.Subscription, error) {
|
||||
// 1. 检查用户是否已订阅该产品
|
||||
subscription, err := s.subscriptionService.UserSubscribedProductByCode(ctx, userID, product.Code)
|
||||
if err != nil {
|
||||
@@ -1129,7 +1131,7 @@ func (s *ApiApplicationServiceImpl) validateSubscriptionStatus(ctx context.Conte
|
||||
zap.String("user_id", userID),
|
||||
zap.String("product_code", product.Code),
|
||||
zap.Error(err))
|
||||
return ErrProductNotSubscribed
|
||||
return nil, ErrProductNotSubscribed
|
||||
}
|
||||
|
||||
// 2. 检查订阅是否有效(未删除)
|
||||
@@ -1138,16 +1140,17 @@ func (s *ApiApplicationServiceImpl) validateSubscriptionStatus(ctx context.Conte
|
||||
zap.String("user_id", userID),
|
||||
zap.String("subscription_id", subscription.ID),
|
||||
zap.String("product_code", product.Code))
|
||||
return ErrSubscriptionExpired
|
||||
return nil, ErrSubscriptionExpired
|
||||
}
|
||||
|
||||
s.logger.Info("订阅状态验证通过",
|
||||
zap.String("user_id", userID),
|
||||
zap.String("subscription_id", subscription.ID),
|
||||
zap.String("product_code", product.Code),
|
||||
zap.String("subscription_price", subscription.Price.String()),
|
||||
zap.Int64("api_used", subscription.APIUsed))
|
||||
|
||||
return nil
|
||||
return subscription, nil
|
||||
}
|
||||
|
||||
// batchGetCompanyNamesForApiCalls 批量获取企业名称映射(用于API调用记录)
|
||||
|
||||
@@ -22,6 +22,7 @@ type ApiCallValidationResult struct {
|
||||
ApiCall *api_entities.ApiCall `json:"api_call"`
|
||||
RequestParams map[string]interface{} `json:"request_params"`
|
||||
Product *product_entities.Product `json:"product"`
|
||||
Subscription *product_entities.Subscription `json:"subscription"`
|
||||
}
|
||||
|
||||
// GetUserID 获取用户ID
|
||||
@@ -76,8 +77,8 @@ func (r *ApiCallValidationResult) SetApiUser(apiUser *api_entities.ApiUser) {
|
||||
// SetProduct 设置产品
|
||||
func (r *ApiCallValidationResult) SetProduct(product *product_entities.Product) {
|
||||
r.ProductID = product.ID
|
||||
r.Amount = product.Price
|
||||
r.Product = product
|
||||
// 注意:这里不设置Amount,应该通过SetSubscription来设置实际的扣费金额
|
||||
}
|
||||
|
||||
// SetApiCall 设置API调用
|
||||
@@ -93,4 +94,11 @@ func (r *ApiCallValidationResult) SetRequestParams(params map[string]interface{}
|
||||
// SetContractCode 设置合同代码
|
||||
func (r *ApiCallValidationResult) SetContractCode(code string) {
|
||||
r.ContractCode = code
|
||||
}
|
||||
|
||||
// SetSubscription 设置订阅信息(包含实际扣费金额)
|
||||
func (r *ApiCallValidationResult) SetSubscription(subscription *product_entities.Subscription) {
|
||||
r.SubscriptionID = subscription.ID
|
||||
r.Amount = subscription.Price // 使用订阅价格作为扣费金额
|
||||
r.Subscription = subscription
|
||||
}
|
||||
@@ -2372,7 +2372,7 @@ func (s *StatisticsApplicationServiceImpl) AdminGetConsumptionDomainStatistics(c
|
||||
defaultEndDate := time.Now()
|
||||
defaultStartDate := defaultEndDate.AddDate(0, 0, -7)
|
||||
consumptionTrend, err = s.walletTransactionRepo.GetSystemDailyStats(ctx, defaultStartDate, defaultEndDate)
|
||||
if err != nil {
|
||||
if err != nil {
|
||||
s.logger.Error("获取消费每日趋势失败", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user