瀏覽代碼

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

tags/1.9.0
zyssyz123 1 月之前
父節點
當前提交
7dadb33003
No account linked to committer's email address
共有 3 個文件被更改,包括 17 次插入0 次删除
  1. 5
    0
      api/services/account_service.py
  2. 7
    0
      api/services/app_service.py
  3. 5
    0
      api/services/billing_service.py

+ 5
- 0
api/services/account_service.py 查看文件

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
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"""

+ 7
- 0
api/services/app_service.py 查看文件

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
# 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:
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)



+ 5
- 0
api/services/billing_service.py 查看文件

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


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")

Loading…
取消
儲存