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