From 29758fb6e31412eaf9eb8edc964498d9ec028164 Mon Sep 17 00:00:00 2001 From: Asuka Minato Date: Mon, 9 Feb 2026 23:38:44 +0900 Subject: [PATCH] . --- api/services/recommended_app_service.py | 45 +++++++++++++------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/api/services/recommended_app_service.py b/api/services/recommended_app_service.py index 6b211a5632..697d5498ac 100644 --- a/api/services/recommended_app_service.py +++ b/api/services/recommended_app_service.py @@ -1,5 +1,5 @@ from configs import dify_config -from extensions.ext_database import db +from core.db.session_factory import session_factory from models.model import AccountTrialAppRecord, TrialApp from services.feature_service import FeatureService from services.recommend_app.recommend_app_factory import RecommendAppRetrievalFactory @@ -27,11 +27,12 @@ class RecommendedAppService: apps = result["recommended_apps"] for app in apps: app_id = app["app_id"] - trial_app_model = db.session.query(TrialApp).where(TrialApp.app_id == app_id).first() - if trial_app_model: - app["can_trial"] = True - else: - app["can_trial"] = False + with session_factory.create_session() as session: + trial_app_model = session.query(TrialApp).where(TrialApp.app_id == app_id).first() + if trial_app_model: + app["can_trial"] = True + else: + app["can_trial"] = False return result @classmethod @@ -46,11 +47,12 @@ class RecommendedAppService: result: dict = retrieval_instance.get_recommend_app_detail(app_id) if FeatureService.get_system_features().enable_trial_app: app_id = result["id"] - trial_app_model = db.session.query(TrialApp).where(TrialApp.app_id == app_id).first() - if trial_app_model: - result["can_trial"] = True - else: - result["can_trial"] = False + with session_factory.create_session() as session: + trial_app_model = session.query(TrialApp).where(TrialApp.app_id == app_id).first() + if trial_app_model: + result["can_trial"] = True + else: + result["can_trial"] = False return result @classmethod @@ -60,14 +62,13 @@ class RecommendedAppService: :param app_id: app id :return: """ - account_trial_app_record = ( - db.session.query(AccountTrialAppRecord) - .where(AccountTrialAppRecord.app_id == app_id, AccountTrialAppRecord.account_id == account_id) - .first() - ) - if account_trial_app_record: - account_trial_app_record.count += 1 - db.session.commit() - else: - db.session.add(AccountTrialAppRecord(app_id=app_id, count=1, account_id=account_id)) - db.session.commit() + with session_factory.create_session() as session, session.begin(): + account_trial_app_record = ( + session.query(AccountTrialAppRecord) + .where(AccountTrialAppRecord.app_id == app_id, AccountTrialAppRecord.account_id == account_id) + .first() + ) + if account_trial_app_record: + account_trial_app_record.count += 1 + else: + session.add(AccountTrialAppRecord(app_id=app_id, count=1, account_id=account_id))