zhaoqingang
2024-12-18 c941b948f1fa8eff615985a83110a401ae426ab3
app/service/user.py
@@ -4,8 +4,8 @@
from app.api import pwd_context
from app.api.dialog import dialog_list
from app.config.config import settings
from app.config.const import RAGFLOW, BISHENG, DIFY
from app.models import RoleModel, GroupModel, AgentType, role_resource_table, DialogModel
from app.config.const import RAGFLOW, BISHENG, DIFY, USER_STATSU_DELETE
from app.models import RoleModel, GroupModel, AgentType, role_resource_table, DialogModel, OrganizationModel
from app.models.menu_model import WebMenuModel, MenuCapacityModel
from app.models.user_model import UserModel, UserAppModel
from Log import logger
@@ -19,7 +19,7 @@
async def get_user_list(db, page_index: int, page_size: int, keyword: str, role_key: str, user_id):
    query = db.query(UserModel).filter(UserModel.permission != "admin")
    query = db.query(UserModel).filter(UserModel.permission != "admin", UserModel.status != USER_STATSU_DELETE)
    # if role_key != "admin":
    #     query.filter(UserModel.creator==user_id)
    if keyword:
@@ -32,7 +32,7 @@
async def edit_user_status(db, status: str, user_id: int):
    try:
        db.query(UserModel).filter(UserModel.id == user_id).update({"status": status})
        db.query(UserModel).filter(UserModel.id == user_id, UserModel.status != USER_STATSU_DELETE).update({"status": status})
        db.commit()
    except Exception as e:
        logger.error(e)
@@ -43,7 +43,7 @@
async def delete_user_data(db, user_id: str):
    try:
        db.query(UserModel).filter(UserModel.id == user_id, UserModel.permission != "admin").delete()
        db.query(UserModel).filter(UserModel.id == user_id, UserModel.permission != "admin").update({"status": USER_STATSU_DELETE})
        db.commit()
    except Exception as e:
        logger.error(e)
@@ -165,7 +165,7 @@
    dept = []
    role_set = set()
    dept_set = set()
    user = db.query(UserModel).filter_by(id=user_id).first()
    user = db.query(UserModel).filter(UserModel.id==user_id,UserModel.status !=USER_STATSU_DELETE).first()
    await role_resource(role_set, roles, permissions, user.roles)
    for ogt in user.organizations:
        dept.append(ogt.to_json())
@@ -241,10 +241,12 @@
    dialog_list = []
    menu_dict = {}
    res = []
    # print(user_id)
    user = db.query(UserModel).filter_by(id=user_id).first()
    for group in user.groups:
        for dialog in group.dialogs:
            dialog_list.append(dialog.id)
    # print(dialog_list)
    menu_list = db.query(WebMenuModel.id, WebMenuModel.title, WebMenuModel.describe, WebMenuModel.icon, WebMenuModel.desc,WebMenuModel.rank,
                         WebMenuModel.img, MenuCapacityModel.capacity_id, MenuCapacityModel.capacity_type, MenuCapacityModel.chat_id.label("agentId")).outerjoin(
        MenuCapacityModel, WebMenuModel.id == MenuCapacityModel.menu_id).outerjoin(
@@ -258,7 +260,7 @@
        for m in menus:
            if user.permission == "admin":
                continue
            elif not m.capacity_type or m.capacity_type == 1 and m.capacity_id not in dialog_list:
            elif m.capacity_id not in dialog_list:
                break
        else:
            res.append({
@@ -343,4 +345,16 @@
    user = db.query(UserModel).filter_by(id=user_id).first()
    return {"roles": [i.to_dict() for i in user.roles], "user": user.to_dict()}
    return {"roles": [i.to_dict() for i in user.roles], "user": user.to_dict()}
async def edit_user_dept(db, user_id, dept_list):
    try:
        user = db.query(UserModel).filter(UserModel.id == user_id).first()
        user.organizations = [db.get(OrganizationModel, deptId) for deptId in dept_list]
        db.commit()
    except Exception as e:
        logger.error(e)
        db.rollback()
        return False
    return True