__init__.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from models import *
  7. from utils import *
  8. from common.security import valid_access_token
  9. router = APIRouter()
  10. @router.get('/getInfo')
  11. async def getInfo(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
  12. # 用户信息
  13. info = db.query(SysUser).filter(SysUser.user_id == user_id).first()
  14. # 部门信息
  15. dept_name = ""
  16. dept_info = db.query(SysDept).filter(SysDept.dept_id == info.dept_id).first()
  17. if dept_name is not None:
  18. dept_name = dept_info.dept_name
  19. # 角色信息
  20. roles = []
  21. role_ids = db.query(SysUserRole).filter(SysUserRole.user_id == user_id).all()
  22. for role in role_ids:
  23. role_info = db.query(SysRole).filter(SysRole.role_id == role.role_id).first()
  24. roles.append(
  25. {
  26. "roleId": role_info.role_id,
  27. "roleName": role_info.role_name,
  28. "roleKey": role_info.role_key,
  29. "roleSort": role_info.role_sort,
  30. "dataScope": role_info.data_scope,
  31. "menuCheckStrictly": role_info.menu_check_strictly,
  32. "deptCheckStrictly": role_info.dept_check_strictly,
  33. "status": role_info.status,
  34. "remark": role_info.remark,
  35. "createTime": get_datetime_str(role_info.create_time),
  36. "flag": False,
  37. "superAdmin": True
  38. }
  39. )
  40. role_keys = [
  41. n['roleKey']
  42. for n in roles
  43. ]
  44. return {
  45. "code": 200,
  46. "msg": "操作成功",
  47. "data": {
  48. "user": {
  49. "userId": info.user_id,
  50. "tenantId": info.tenant_id,
  51. "deptId": info.dept_id,
  52. "userName": info.user_name,
  53. "nickName": info.nick_name,
  54. "userType": info.user_type,
  55. "email": info.email,
  56. "phonenumber": info.phonenumber,
  57. "sex": info.sex,
  58. "avatar": info.avatar,
  59. "status": info.status,
  60. "loginIp": info.login_ip,
  61. "loginDate": get_datetime_str(info.login_date),
  62. "remark": info.remark,
  63. "createTime": get_datetime_str(info.create_time),
  64. "deptName": dept_name,
  65. "roles": roles,
  66. "roleIds": None,
  67. "postIds": None,
  68. "roleId": None
  69. },
  70. "permissions": [
  71. "*:*:*"
  72. ],
  73. "roles": role_keys
  74. }
  75. }
  76. @router.get('/deptTree')
  77. async def deptTree(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
  78. pass
  79. @router.get('/list')
  80. async def userlist(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
  81. pass
  82. @router.get('/list/dept/{dept_id}')
  83. async def get_dept_user_list(
  84. # request: Request,
  85. dept_id: int,
  86. db: Session = Depends(get_db),
  87. body = Depends(remove_xss_json),
  88. user_id = Depends(valid_access_token)
  89. ):
  90. query = db.query(SysUser)
  91. query = query.filter(SysUser.del_flag != '2')
  92. if dept_id:
  93. query = query.filter(SysUser.dept_id == dept_id)
  94. user_list = query.all()
  95. # 将模型实例转换为字典
  96. user_list_dict = [{
  97. "userId": user.user_id,
  98. "tenantId": user.tenant_id,
  99. "deptId": user.dept_id,
  100. "userName": user.user_name,
  101. "nickName": user.nick_name,
  102. "userType": user.user_type,
  103. "email": user.email,
  104. "phonenumber": user.phonenumber,
  105. "sex": user.sex,
  106. "avatar": user.avatar,
  107. "status": user.status,
  108. "loginIp": user.login_ip,
  109. "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
  110. "remark": user.remark,
  111. "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
  112. "deptName": user.dept_name,
  113. "roles": None,
  114. "roleIds": None,
  115. "postIds": None,
  116. "roleId": None
  117. } for user in user_list]
  118. return {
  119. "code": 200,
  120. "data": user_list_dict,
  121. "msg": "操作成功"
  122. }