fix: remove billing cache when add or delete app or member (#25885)

This commit is contained in:
zyssyz123 2025-09-18 12:18:07 +08:00 committed by GitHub
parent b5a7e64e19
commit 7dadb33003
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 0 deletions

View File

@ -1041,6 +1041,8 @@ class TenantService:
db.session.add(ta) db.session.add(ta)
db.session.commit() db.session.commit()
if dify_config.BILLING_ENABLED:
BillingService.clean_billing_info_cache(tenant.id)
return ta return ta
@staticmethod @staticmethod
@ -1199,6 +1201,9 @@ class TenantService:
db.session.delete(ta) db.session.delete(ta)
db.session.commit() db.session.commit()
if dify_config.BILLING_ENABLED:
BillingService.clean_billing_info_cache(tenant.id)
@staticmethod @staticmethod
def update_member_role(tenant: Tenant, member: Account, new_role: str, operator: Account): def update_member_role(tenant: Tenant, member: Account, new_role: str, operator: Account):
"""Update member role""" """Update member role"""

View File

@ -20,6 +20,7 @@ from libs.login import current_user
from models.account import Account from models.account import Account
from models.model import App, AppMode, AppModelConfig, Site from models.model import App, AppMode, AppModelConfig, Site
from models.tools import ApiToolProvider from models.tools import ApiToolProvider
from services.billing_service import BillingService
from services.enterprise.enterprise_service import EnterpriseService from services.enterprise.enterprise_service import EnterpriseService
from services.feature_service import FeatureService from services.feature_service import FeatureService
from services.tag_service import TagService from services.tag_service import TagService
@ -162,6 +163,9 @@ class AppService:
# update web app setting as private # update web app setting as private
EnterpriseService.WebAppAuth.update_app_access_mode(app.id, "private") EnterpriseService.WebAppAuth.update_app_access_mode(app.id, "private")
if dify_config.BILLING_ENABLED:
BillingService.clean_billing_info_cache(app.tenant_id)
return app return app
def get_app(self, app: App) -> App: def get_app(self, app: App) -> App:
@ -337,6 +341,9 @@ class AppService:
if FeatureService.get_system_features().webapp_auth.enabled: if FeatureService.get_system_features().webapp_auth.enabled:
EnterpriseService.WebAppAuth.cleanup_webapp(app.id) EnterpriseService.WebAppAuth.cleanup_webapp(app.id)
if dify_config.BILLING_ENABLED:
BillingService.clean_billing_info_cache(app.tenant_id)
# Trigger asynchronous deletion of app and related data # Trigger asynchronous deletion of app and related data
remove_app_and_related_data_task.delay(tenant_id=app.tenant_id, app_id=app.id) remove_app_and_related_data_task.delay(tenant_id=app.tenant_id, app_id=app.id)

View File

@ -5,6 +5,7 @@ import httpx
from tenacity import retry, retry_if_exception_type, stop_before_delay, wait_fixed from tenacity import retry, retry_if_exception_type, stop_before_delay, wait_fixed
from extensions.ext_database import db from extensions.ext_database import db
from extensions.ext_redis import redis_client
from libs.helper import RateLimiter from libs.helper import RateLimiter
from models.account import Account, TenantAccountJoin, TenantAccountRole from models.account import Account, TenantAccountJoin, TenantAccountRole
@ -173,3 +174,7 @@ class BillingService:
res = cls._send_request("POST", "/compliance/download", json=json) res = cls._send_request("POST", "/compliance/download", json=json)
cls.compliance_download_rate_limiter.increment_rate_limit(limiter_key) cls.compliance_download_rate_limiter.increment_rate_limit(limiter_key)
return res return res
@classmethod
def clean_billing_info_cache(cls, tenant_id: str):
redis_client.delete(f"tenant:{tenant_id}:billing_info")