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