sys.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import sys,os
  2. current_path = os.getcwd()
  3. sys.path.append(current_path)
  4. from sqlalchemy import text
  5. from db.database import get_db
  6. from sqlalchemy.orm import Session
  7. from fastapi import APIRouter, Depends
  8. from agent.libs.response import resp_200
  9. from agent.libs.sys import SysUserRoleOrganBusiness
  10. from agent.libs.auth import verify_session_id, SessionValues
  11. from agent.models.web.response import StandardResponse,FAILED,SUCCESS
  12. from agent.libs.user import SessionBusiness, UserRoleBusiness
  13. from agent.libs.user import SessionBusiness
  14. router = APIRouter(prefix="/sys", tags=["系统接口"])
  15. @router.get("/currSURO", response_model=StandardResponse)
  16. def currSURO(sess:SessionValues = Depends(verify_session_id)):
  17. return resp_200(data=sess.suro_id)
  18. @router.get("/loadSURO", response_model=StandardResponse)
  19. def loadSURO(db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)):
  20. 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)
  21. results = db.execute(text(DATA_SQL))
  22. datList = []
  23. for row in results:
  24. datList.append({
  25. "id":row.id,
  26. 'user_id':row.user_id,
  27. 'role_id':row.role_id,
  28. 'organ_id':row.organ_id,
  29. 'data_type':row.data_type,
  30. 'last_use_time':row.last_use_time,
  31. 'create_time':row.create_time,
  32. 'create_by':row.create_by,
  33. 'update_time':row.update_time,
  34. 'update_by':row.update_by,
  35. 'user_name':row.user_name,
  36. 'role_name':row.role_name,
  37. 'organ_name':row.organ_name
  38. })
  39. return StandardResponse(code=SUCCESS, message="机构&科室获取成功", records=datList)
  40. @router.post("/changeSURO/{id}", response_model=StandardResponse)
  41. def changeSURO(id:int, db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)):
  42. biz = SysUserRoleOrganBusiness(db)
  43. sysUserRoleOrgan = biz.getSUROById(id)
  44. if sysUserRoleOrgan is None:
  45. return StandardResponse(code=FAILED, message="用户角色机构不存在")
  46. sess.suro_id = sysUserRoleOrgan.id
  47. sess.suro_type = sysUserRoleOrgan.data_type
  48. sess.suro_role = sysUserRoleOrgan.role_id
  49. sess.suro_organ = sysUserRoleOrgan.organ_id
  50. #更新session信息
  51. sessbiz = SessionBusiness(db)
  52. session = sessbiz.get_session(sess.session_id)
  53. session.user_role_organ_id = id
  54. sessbiz.update_session_SURO(session)
  55. biz.updateLastUseTime(sysUserRoleOrgan.id)
  56. # Get user roles and permissions
  57. user_role_biz = UserRoleBusiness(db)
  58. user_roles = user_role_biz.get_user_roles(sysUserRoleOrgan.role_id)
  59. user_menu_permissions = user_role_biz.get_role_menu_permissions(sysUserRoleOrgan.role_id)
  60. # Prepare roles and permissions for response
  61. roles_data = [{
  62. "id": role.id,
  63. "name": role.name,
  64. "description": role.description
  65. } for role in user_roles]
  66. # 构建权限字典,方便通过ID查找
  67. permission_map = {p.id: {
  68. "id": p.id, "name": p.name, "description": p.description,
  69. "menu_name": p.menu_name, "menu_route": p.menu_route,
  70. "menu_icon": p.menu_icon, "parent_id": p.parent_id,
  71. "children": []
  72. } for p in user_menu_permissions}
  73. # 构建树形结构
  74. tree = []
  75. for p_id, p_data in permission_map.items():
  76. parent_id = p_data["parent_id"]
  77. if parent_id and parent_id in permission_map:
  78. permission_map[parent_id]["children"].append(p_data)
  79. else:
  80. tree.append(p_data)
  81. print(tree)
  82. session_data = {
  83. "session_id": sess.session_id,
  84. "user_id": sess.user_id,
  85. "username": sess.username,
  86. "full_name": sess.full_name
  87. }
  88. return StandardResponse(code=SUCCESS, message="用户角色机构切换成功", records=[{"session": session_data, "roles": roles_data, "menu_permissions": tree}])
  89. sys = router