org.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from typing import Annotated
  4. from app.admin.schema.org import CreateOrgParam, GetOrgListDetails, UpdateOrgParam
  5. from app.admin.service.org_service import org_service
  6. from common.pagination import DependsPagination, paging_data
  7. from common.response.response_schema import ResponseModel, response_base
  8. from common.security.jwt_call_center import DependsJwtAuth
  9. from common.security.permission import RequestPermission
  10. from database.db_mysql import CurrentSession
  11. from fastapi import APIRouter, Depends, Path, Query
  12. router = APIRouter()
  13. @router.get('/{pk}', summary='获取 org 详情', dependencies=[DependsJwtAuth])
  14. async def get_org(pk: Annotated[int, Path(...)]) -> ResponseModel:
  15. org = await org_service.get(pk=pk)
  16. return response_base.success(data=org)
  17. @router.get(
  18. '',
  19. summary='(模糊条件)分页获取所有 org',
  20. dependencies=[
  21. DependsJwtAuth,
  22. DependsPagination,
  23. ],
  24. )
  25. async def get_pagination_org(db: CurrentSession) -> ResponseModel:
  26. org_select = await org_service.get_select()
  27. page_data = await paging_data(db, org_select, GetOrgListDetails)
  28. return response_base.success(data=page_data)
  29. @router.post(
  30. '',
  31. summary='创建 org',
  32. dependencies=[
  33. Depends(RequestPermission('org:add')),
  34. ],
  35. )
  36. async def create_org(obj: CreateOrgParam) -> ResponseModel:
  37. await org_service.create(obj=obj)
  38. return response_base.success()
  39. @router.put(
  40. '/{pk}',
  41. summary='更新 org',
  42. dependencies=[
  43. Depends(RequestPermission('org:edit')),
  44. ],
  45. )
  46. async def update_org(pk: Annotated[int, Path(...)], obj: UpdateOrgParam) -> ResponseModel:
  47. count = await org_service.update(pk=pk, obj=obj)
  48. if count > 0:
  49. return response_base.success()
  50. return response_base.fail()
  51. @router.delete(
  52. '',
  53. summary='(批量)删除 org',
  54. dependencies=[
  55. Depends(RequestPermission('org:del')),
  56. ],
  57. )
  58. async def delete_org(pk: Annotated[list[int], Query(...)]) -> ResponseModel:
  59. count = await org_service.delete(pk=pk)
  60. if count > 0:
  61. return response_base.success()
  62. return response_base.fail()