controller.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from typing import Annotated
  2. from fastapi import APIRouter, Depends, Path, Query
  3. from fastapi.responses import JSONResponse
  4. from app.api.v1.module_system.auth.schema import AuthSchema
  5. from app.common.response import ResponseSchema, SuccessResponse
  6. from app.core.dependencies import AuthPermission
  7. from app.core.logger import log
  8. from app.core.router_class import OperationLogRoute
  9. from app.plugin.module_payment.expense.institution.schema import InstitutionListOutSchema
  10. from .service import InstitutionService
  11. from alipay.aop.api.domain.AlipayEbppInvoiceInstitutionCreateModel import (
  12. AlipayEbppInvoiceInstitutionCreateModel,
  13. )
  14. from alipay.aop.api.response.AlipayEbppInvoiceInstitutionCreateResponse import (
  15. AlipayEbppInvoiceInstitutionCreateResponse,
  16. )
  17. from alipay.aop.api.domain.AlipayEbppInvoiceInstitutionDeleteModel import (
  18. AlipayEbppInvoiceInstitutionDeleteModel,
  19. )
  20. from alipay.aop.api.response.AlipayEbppInvoiceInstitutionDeleteResponse import (
  21. AlipayEbppInvoiceInstitutionDeleteResponse,
  22. )
  23. from alipay.aop.api.domain.AlipayEbppInvoiceInstitutionModifyModel import (
  24. AlipayEbppInvoiceInstitutionModifyModel,
  25. )
  26. from alipay.aop.api.response.AlipayEbppInvoiceInstitutionModifyResponse import (
  27. AlipayEbppInvoiceInstitutionModifyResponse,
  28. )
  29. InstitutionRouter = APIRouter(
  30. route_class=OperationLogRoute,
  31. prefix="/institution",
  32. tags=["费控制度"],
  33. )
  34. @InstitutionRouter.post(
  35. "",
  36. summary="创建费控制度",
  37. description="创建费控制度 (alipay.ebpp.invoice.institution.create)",
  38. # response_model=ResponseSchema[AlipayEbppInvoiceInstitutionCreateResponse],
  39. )
  40. async def create_institution_controller(
  41. data: dict,
  42. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:institution:create"]))],
  43. ) -> JSONResponse:
  44. """创建费控制度"""
  45. institution_create_model = AlipayEbppInvoiceInstitutionCreateModel.from_alipay_dict(data)
  46. result = await InstitutionService.create_institution_service(auth=auth, data=institution_create_model)
  47. log.info(f"创建费控制度成功: {institution_create_model.institution_name}, institution_id={result.institution_id}")
  48. return SuccessResponse(data=result, msg="创建费控制度成功")
  49. @InstitutionRouter.get(
  50. "",
  51. summary="查询费控制度列表",
  52. description="分页查询费控制度列表",
  53. response_model=ResponseSchema[InstitutionListOutSchema],
  54. )
  55. async def list_institution_controller(
  56. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:institution:list"]))],
  57. page_no: Annotated[int, Query(description="页码")] = 1,
  58. page_size: Annotated[int, Query(description="每页数量")] = 20,
  59. enterprise_id: Annotated[str | None, Query(description="企业ID")] = None,
  60. name: Annotated[str | None, Query(description="制度名称")] = None,
  61. expense_type: Annotated[str | None, Query(description="费用类型")] = None,
  62. status: Annotated[str | None, Query(description="状态")] = None,
  63. ) -> JSONResponse:
  64. """查询费控制度列表"""
  65. search = {}
  66. if enterprise_id:
  67. search["enterprise_id"] = enterprise_id
  68. if name:
  69. search["name"] = name
  70. if expense_type:
  71. search["expense_type"] = expense_type
  72. if status:
  73. search["status"] = status
  74. result = await InstitutionService.list_service(
  75. auth=auth, page_no=page_no, page_size=page_size, search=search
  76. )
  77. return SuccessResponse(data=result, msg="查询费控制度列表成功")
  78. @InstitutionRouter.delete(
  79. "",
  80. summary="删除费控制度",
  81. description="删除费控制度 (alipay.ebpp.invoice.institution.delete)",
  82. # response_model=ResponseSchema[AlipayEbppInvoiceInstitutionDeleteResponse],
  83. )
  84. async def delete_institution_controller(
  85. data: dict,
  86. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:institution:delete"]))],
  87. ) -> JSONResponse:
  88. """删除费控制度"""
  89. institution_delete_model = AlipayEbppInvoiceInstitutionDeleteModel(**data)
  90. result = await InstitutionService.delete_institution_service(auth=auth, data=institution_delete_model)
  91. log.info(f"删除费控制度成功: institution_id={institution_delete_model.institution_id}, enterprise_id={institution_delete_model.enterprise_id}")
  92. return SuccessResponse(data=result, msg="删除费控制度成功")
  93. @InstitutionRouter.post(
  94. "/modify",
  95. summary="编辑费控制度",
  96. description="编辑费控制度 (alipay.ebpp.invoice.institution.modify)",
  97. # response_model=ResponseSchema[AlipayEbppInvoiceInstitutionModifyResponse],
  98. )
  99. async def modify_institution_controller(
  100. data: dict,
  101. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:institution:modify"]))],
  102. ) -> JSONResponse:
  103. """编辑费控制度"""
  104. institution_modify_model = AlipayEbppInvoiceInstitutionModifyModel(**data)
  105. result = await InstitutionService.modify_institution_service(auth=auth, data=institution_modify_model)
  106. log.info(f"编辑费控制度成功: institution_id={institution_modify_model.institution_id}")
  107. return SuccessResponse(data=result, msg="编辑费控制度成功")