From 519930bc1112cdf7881fecce907381ce6374e74c Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期二, 14 一月 2025 13:37:56 +0800
Subject: [PATCH] 文档出卷-未上传文件提示
---
app/service/service_token.py | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 111 insertions(+), 5 deletions(-)
diff --git a/app/service/service_token.py b/app/service/service_token.py
index 9c54fed..9707d3c 100644
--- a/app/service/service_token.py
+++ b/app/service/service_token.py
@@ -1,15 +1,121 @@
+from Log import logger
+from app.config.config import settings
+from app.config.const import BISHENG, RAGFLOW, DIFY
+from app.models import UserModel, UserAppModel
+from app.models.base_model import SessionLocal
from app.models.token_model import TokenModel
+from app.service.auth import UserAppDao
+from app.service.bisheng import BishengService
+from app.service.difyService import DifyService
+from app.service.ragflow import RagflowService
+from app.task.fetch_agent import update_ragflow_user_tenant
-def get_bisheng_token(db, user_id: int):
+async def get_bisheng_token(db, user_id: int):
+
token = db.query(TokenModel).filter(TokenModel.user_id == user_id).first()
if not token:
- return None
- return token.bisheng_token
+ token = await UserAppDao(db).get_data_by_id(user_id, BISHENG)
+ if not token:
+ return None
+ return token.access_token
+ else:
+ return token.bisheng_token
-def get_ragflow_token(db, user_id: int):
+async def get_ragflow_token(db, user_id: int):
+ # token = await UserAppDao(db).get_data_by_id(user_id, RAGFLOW)
token = db.query(TokenModel).filter(TokenModel.user_id == user_id).first()
if not token:
+ token = await UserAppDao(db).get_data_by_id(user_id, RAGFLOW)
+ if not token:
+ return None
+ return token.access_token
+ else:
+ return token.ragflow_token
+
+
+async def get_dify_token(db, user_id: int):
+
+ token = await UserAppDao(db).get_data_by_id(user_id, DIFY)
+ if not token:
return None
- return token.ragflow_token
+ return token.access_token
+
+async def get_new_token(db, user_id: int, app_type):
+ # user = db.query(UserModel).filter(UserModel.id == user_id).first()
+ user = db.query(UserAppModel).filter(UserAppModel.user_id == user_id, UserAppModel.app_type==app_type).first()
+ if not user:
+ return None
+ pwd = user.password
+ if app_type == RAGFLOW:
+ ragflow_service = RagflowService(settings.fwr_base_url)
+ # 鐧诲綍鍒皉agflow
+ try:
+ ragflow_token = await ragflow_service.login(user.username, user.decrypted_password(pwd))
+ return ragflow_token
+ except Exception as e:
+ logger.error(e)
+ # return Response(code=500, msg=f"Failed to login with Ragflow: {str(e)}")
+ return None
+ elif app_type == BISHENG:
+ bisheng_service = BishengService(settings.sgb_base_url)
+ # 鐧诲綍鍒版瘯鏄�
+ try:
+ bisheng_token = await bisheng_service.login(user.username, user.decrypted_password(pwd))
+ return bisheng_token
+ except Exception as e:
+ logger.error(e)
+ # return Response(code=500, msg=f"Failed to login with Ragflow: {str(e)}")
+ return None
+
+ elif app_type == DIFY:
+ dify_service = DifyService(settings.dify_base_url)
+ # 鐧诲綍鍒版瘯鏄�
+ try:
+ dify_token = await dify_service.login(user.username, user.decrypted_password(pwd))
+ return dify_token
+ except Exception as e:
+ logger.error(e)
+ # return Response(code=500, msg=f"Failed to login with Ragflow: {str(e)}")
+ return None
+
+ else:
+ logger.error("閿欒鐨勫簲鐢ㄧ被鍨媨}".format(app_type))
+
+
+async def get_token(db, user_id: int):
+ res = {i.app_type.replace("app", "token"): i.access_token for i in await UserAppDao(db).get_user_datas(user_id)}
+ if not res:
+ token = db.query(TokenModel).filter_by(user_id=user_id).first()
+ res = {"ragflow_token": token.ragflow_token, "bisheng_token": token.bisheng_token}
+ return res
+
+
+async def update_user_group(db, sync_flag):
+ admin_user = db.query(UserModel).filter(UserModel.permission == "admin").first()
+ sync_user = db.query(UserModel).filter(UserModel.sync_flag == sync_flag).first()
+ if not admin_user or not sync_user:
+ logger.error("娉ㄥ唽鐢ㄦ埛澶辫触锛�--------")
+ return False
+ token = await get_new_token(db, admin_user.id, RAGFLOW)
+ # print(token)
+ if not token:
+ logger.error("娉ㄥ唽鐢ㄦ埛鑾峰彇token澶辫触锛�")
+ return False
+ user_list = db.query(UserAppModel).filter(UserAppModel.app_type==RAGFLOW).all()
+ user = db.query(UserAppModel).filter(UserAppModel.user_id==sync_user.id, UserAppModel.app_type == RAGFLOW).first()
+ if not user:
+ logger.error("娉ㄥ唽鐢ㄦ埛鑾峰彇淇℃伅澶辫触锛�")
+ return False
+ ragflow_service = RagflowService(settings.fwr_base_url)
+ for u in user_list:
+ if u.id and user.id != u.id:
+ # print(user.id, u.id)
+ await ragflow_service.add_user_tenant(token,u.app_id,
+ user.email,
+ user.app_id)
+ await ragflow_service.add_user_tenant(token, user.app_id,
+ u.email,
+ u.app_id)
+ update_ragflow_user_tenant(user.app_id)
--
Gitblit v1.8.0