import sys,os current_path = os.getcwd() sys.path.append(current_path) from sqlalchemy import text from db.database import get_db from sqlalchemy.orm import Session from fastapi import APIRouter, Depends from agent.libs.response import resp_200 from agent.libs.sys import SysUserRoleOrganBusiness from agent.libs.auth import verify_session_id, SessionValues from agent.models.web.response import StandardResponse,FAILED,SUCCESS from agent.libs.user import SessionBusiness, UserRoleBusiness from agent.libs.user import SessionBusiness router = APIRouter(prefix="/sys", tags=["系统接口"]) @router.get("/currSURO", response_model=StandardResponse) def currSURO(sess:SessionValues = Depends(verify_session_id)): return resp_200(data=sess.suro_id) @router.get("/loadSURO", response_model=StandardResponse) def loadSURO(db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)): DATA_SQL = f"select a.*,b.username user_name,c.name role_name,d.name organ_name from sys_user_role_organ a,users b,roles c,sys_organ d where a.user_id =b.id and a.role_id=c.id and a.organ_id=d.id and a.user_id="+str(sess.user_id) results = db.execute(text(DATA_SQL)) datList = [] for row in results: datList.append({ "id":row.id, 'user_id':row.user_id, 'role_id':row.role_id, 'organ_id':row.organ_id, 'data_type':row.data_type, 'last_use_time':row.last_use_time, 'create_time':row.create_time, 'create_by':row.create_by, 'update_time':row.update_time, 'update_by':row.update_by, 'user_name':row.user_name, 'role_name':row.role_name, 'organ_name':row.organ_name }) return StandardResponse(code=SUCCESS, message="机构&科室获取成功", records=datList) @router.post("/changeSURO/{id}", response_model=StandardResponse) def changeSURO(id:int, db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)): biz = SysUserRoleOrganBusiness(db) sysUserRoleOrgan = biz.getSUROById(id) if sysUserRoleOrgan is None: return StandardResponse(code=FAILED, message="用户角色机构不存在") sess.suro_id = sysUserRoleOrgan.id sess.suro_type = sysUserRoleOrgan.data_type sess.suro_role = sysUserRoleOrgan.role_id sess.suro_organ = sysUserRoleOrgan.organ_id #更新session信息 sessbiz = SessionBusiness(db) session = sessbiz.get_session(sess.session_id) session.user_role_organ_id = id sessbiz.update_session_SURO(session) biz.updateLastUseTime(sysUserRoleOrgan.id) # Get user roles and permissions user_role_biz = UserRoleBusiness(db) user_roles = user_role_biz.get_user_roles(sysUserRoleOrgan.role_id) user_menu_permissions = user_role_biz.get_role_menu_permissions(sysUserRoleOrgan.role_id) # Prepare roles and permissions for response roles_data = [{ "id": role.id, "name": role.name, "description": role.description } for role in user_roles] # 构建权限字典,方便通过ID查找 permission_map = {p.id: { "id": p.id, "name": p.name, "description": p.description, "menu_name": p.menu_name, "menu_route": p.menu_route, "menu_icon": p.menu_icon, "parent_id": p.parent_id, "children": [] } for p in user_menu_permissions} # 构建树形结构 tree = [] for p_id, p_data in permission_map.items(): parent_id = p_data["parent_id"] if parent_id and parent_id in permission_map: permission_map[parent_id]["children"].append(p_data) else: tree.append(p_data) print(tree) session_data = { "session_id": sess.session_id, "user_id": sess.user_id, "username": sess.username, "full_name": sess.full_name } return StandardResponse(code=SUCCESS, message="用户角色机构切换成功", records=[{"session": session_data, "roles": roles_data, "menu_permissions": tree}]) sys = router