sys_user_role_organ.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import sys,os
  2. current_path = os.getcwd()
  3. sys.path.append(current_path)
  4. from math import ceil
  5. from sqlalchemy import text
  6. from typing import Optional
  7. from pydantic import BaseModel
  8. from db.database import get_db
  9. from sqlalchemy.orm import Session
  10. from fastapi import APIRouter, Depends
  11. from agent.libs.response import resp_200
  12. from agent.libs.sys import SysUserRoleOrganBusiness
  13. from agent.libs.auth import verify_session_id, SessionValues
  14. from agent.models.web.response import StandardResponse,FAILED,SUCCESS
  15. class SysUserRoleOrganRequest(BaseModel):
  16. id: Optional[int] = None
  17. user_id: Optional[int] = None
  18. role_id: Optional[int] = None
  19. organ_id: Optional[int] = None
  20. data_type: Optional[int] = None
  21. user_name: Optional[str] = None
  22. role_name: Optional[str] = None
  23. page: Optional[int] = None
  24. page_size: Optional[int] = None
  25. router = APIRouter(prefix="/userRoleOrgan", tags=["用户权限管理接口"])
  26. @router.post("/data-list")
  27. def dataList(request: SysUserRoleOrganRequest, db: Session = Depends(get_db)):
  28. if request.page is None :
  29. return StandardResponse(code=FAILED, message="页码不能为空")
  30. if request.page_size is None :
  31. return StandardResponse(code=FAILED, message="一页记录数不能为空")
  32. COUNT_SQL = f"select count(1) 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"
  33. 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"
  34. if request.role_name is not None: #模糊查询角色名称
  35. COUNT_SQL = COUNT_SQL + f" and c.name like '%" + request.role_name + f"%'"
  36. DATA_SQL = DATA_SQL + f" and c.name like '%" + request.role_name + f"%'"
  37. if request.user_name is not None: #模糊查询用户名称
  38. COUNT_SQL = COUNT_SQL + f" and b.username like '%" + request.user_name + f"%'"
  39. DATA_SQL = DATA_SQL + f" and b.username like '%" + request.user_name + f"%'"
  40. if request.user_id is not None: #查询用户编号
  41. COUNT_SQL = COUNT_SQL + f" and a.user_id = " + str(request.user_id)
  42. DATA_SQL = DATA_SQL + f" and a.user_id = " + str(request.user_id)
  43. if request.organ_id is not None: #模糊机构名称
  44. COUNT_SQL = COUNT_SQL + f" and a.organ_id =" + str(request.organ_id)
  45. DATA_SQL = DATA_SQL + f" and a.organ_id =" + str(request.organ_id)
  46. result = db.execute(text(COUNT_SQL))
  47. count = result.scalar()
  48. total_page = ceil(count / request.page_size)
  49. start = 1
  50. if request.page <= total_page:
  51. start = (request.page - 1) * request.page_size
  52. DATA_SQL = DATA_SQL + f" order by id limit "+ str(request.page_size) + f" OFFSET " + str(start)
  53. results = db.execute(text(DATA_SQL))
  54. datList = []
  55. for row in results:
  56. datList.append({
  57. "id":row.id,
  58. 'user_id':row.user_id,
  59. 'role_id':row.role_id,
  60. 'organ_id':row.organ_id,
  61. 'data_type':row.data_type,
  62. 'last_use_time':row.last_use_time,
  63. 'create_time':row.create_time,
  64. 'create_by':row.create_by,
  65. 'update_time':row.update_time,
  66. 'update_by':row.update_by,
  67. 'user_name':row.user_name,
  68. 'role_name':row.role_name,
  69. 'organ_name':row.organ_name
  70. })
  71. return resp_200(data={"total": count, "pages": request.page, "size": request.page_size, "records": datList})
  72. @router.post("/insert", response_model=StandardResponse)
  73. def insertData(request: SysUserRoleOrganRequest, db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)):
  74. biz = SysUserRoleOrganBusiness(db)
  75. if request.user_id is None:
  76. return StandardResponse(code=FAILED, message="用户编号不能为空")
  77. if request.role_id is None:
  78. return StandardResponse(code=FAILED, message="角色编号不能为空")
  79. if request.organ_id is None:
  80. return StandardResponse(code=FAILED, message="机构编号不能为空")
  81. if request.data_type is None:
  82. return StandardResponse(code=FAILED, message="数据权限类型不能为空")
  83. data = biz.get_SURO(request.user_id,request.organ_id)
  84. if data is not None:
  85. return StandardResponse(code=FAILED, message="用户角色机构已经存在")
  86. data = biz.insert_data(request.user_id, request.role_id,request.organ_id,request.data_type,sess.full_name)
  87. if data is None:
  88. return StandardResponse(code=FAILED, message="创建用户角色机构失败")
  89. return StandardResponse(code=SUCCESS, message="创建用户角色机构成功")
  90. @router.post("/update", response_model=StandardResponse)
  91. def updateData(request: SysUserRoleOrganRequest, db: Session = Depends(get_db), sess:SessionValues = Depends(verify_session_id)):
  92. biz = SysUserRoleOrganBusiness(db)
  93. if request.id is None:
  94. return StandardResponse(code=FAILED, message="编号不能为空")
  95. if request.user_id is None:
  96. return StandardResponse(code=FAILED, message="用户编号不能为空")
  97. if request.role_id is None:
  98. return StandardResponse(code=FAILED, message="角色编号不能为空")
  99. if request.data_type is None:
  100. return StandardResponse(code=FAILED, message="数据权限类型不能为空")
  101. biz.update_data(request.id,request.user_id, request.role_id,request.organ_id,request.data_type,sess.full_name)
  102. return StandardResponse(code=SUCCESS, message="更新用户角色机构成功")
  103. @router.post("/delete/{id}", response_model=StandardResponse)
  104. def deleteData(id:int, db: Session = Depends(get_db)):
  105. biz = SysUserRoleOrganBusiness(db)
  106. biz.delete_data(id)
  107. return StandardResponse(code=SUCCESS, message="删除用户角色机构成功")
  108. sys_user_role_organ = router