controller.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. from typing import Annotated
  2. from fastapi import APIRouter, Body, Depends, Path, Query
  3. from fastapi.responses import JSONResponse
  4. from redis.asyncio import Redis
  5. from app.api.v1.module_system.auth.schema import AuthSchema
  6. from app.common.response import ResponseSchema, SuccessResponse
  7. from app.core.dependencies import AuthPermission, redis_getter
  8. from app.core.logger import log
  9. from app.core.router_class import OperationLogRoute
  10. from .schema import (
  11. EnterpriseApplyInviteSchema,
  12. EnterpriseCreateOrUpdateSchema,
  13. EnterpriseInviteOutSchema,
  14. EnterpriseListOutSchema,
  15. EnterpriseOperationOutSchema,
  16. EnterpriseOutSchema,
  17. )
  18. from .service import EnterpriseService
  19. from alipay.aop.api.domain.EnterpriseInfoDTO import EnterpriseInfoDTO
  20. EnterpriseRouter = APIRouter(
  21. route_class=OperationLogRoute,
  22. prefix="/enterprise",
  23. tags=["企业管理"],
  24. )
  25. @EnterpriseRouter.get(
  26. "/all",
  27. summary="查询企业类别",
  28. description="分页查询企业列表",
  29. response_model=ResponseSchema[EnterpriseListOutSchema],
  30. )
  31. async def all_enterprise_controller(
  32. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:list"]))],
  33. ) -> JSONResponse:
  34. result = await EnterpriseService.all_service(auth=auth)
  35. return SuccessResponse(data=result)
  36. @EnterpriseRouter.get(
  37. "",
  38. summary="查询企业列表",
  39. description="分页查询企业列表",
  40. response_model=ResponseSchema[EnterpriseListOutSchema],
  41. )
  42. async def list_enterprise_controller(
  43. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:list"]))],
  44. page_no: Annotated[int, Query(description="页码")] = 1,
  45. page_size: Annotated[int, Query(description="每页数量")] = 20,
  46. name: Annotated[str | None, Query(description="企业名称")] = None,
  47. enterprise_id: Annotated[str | None, Query(description="企业ID")] = None,
  48. status: Annotated[str | None, Query(description="状态")] = None,
  49. start_time: Annotated[str | None, Query(description="开始时间")] = None,
  50. end_time: Annotated[str | None, Query(description="结束时间")] = None,
  51. ) -> JSONResponse:
  52. """查询企业列表"""
  53. search = {}
  54. if name:
  55. search["name"] = name
  56. if enterprise_id:
  57. search["enterprise_id"] = enterprise_id
  58. if status:
  59. search["status"] = status
  60. if start_time:
  61. search["start_time"] = start_time
  62. if end_time:
  63. search["end_time"] = end_time
  64. result = await EnterpriseService.list_service(
  65. auth=auth, page_no=page_no, page_size=page_size, search=search
  66. )
  67. return SuccessResponse(data=result, msg="查询企业列表成功")
  68. @EnterpriseRouter.post(
  69. "/invite",
  70. summary="申请企业邀请码",
  71. description="申请企业邀请码(可多次调用)",
  72. response_model=ResponseSchema[EnterpriseInviteOutSchema],
  73. )
  74. async def apply_invite_controller(
  75. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:invite"]))],
  76. redis: Annotated[Redis, Depends(redis_getter)],
  77. data: EnterpriseApplyInviteSchema,
  78. ) -> JSONResponse:
  79. """申请企业邀请码"""
  80. result = await EnterpriseService.apply_invite_service(auth=auth, redis=redis, data=data)
  81. log.info(f"申请企业邀请码成功: {data.identity_type} | {data.identity} | {data.identity_open_id}")
  82. return SuccessResponse(data=result, msg="申请企业邀请码成功")
  83. @EnterpriseRouter.get(
  84. "/{enterprise_id}",
  85. summary="查询企业详情",
  86. description="根据 enterprise_id 查询企业详情",
  87. # response_model=ResponseSchema[EnterpriseInfoDTO]
  88. )
  89. async def get_detail_controller(
  90. enterprise_id: Annotated[str, Path(description="企业ID")],
  91. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:detail"]))],
  92. ) -> JSONResponse:
  93. """查询企业详情"""
  94. result = await EnterpriseService.detail_service(auth=auth, enterprise_id=enterprise_id)
  95. log.info(f"查询企业详情成功: {enterprise_id}")
  96. return SuccessResponse(data=result, msg="查询企业详情成功")
  97. @EnterpriseRouter.post(
  98. "/{enterprise_id}/unsign",
  99. summary="企业解约",
  100. description="企业解约",
  101. response_model=ResponseSchema[EnterpriseOperationOutSchema],
  102. )
  103. async def unsign_controller(
  104. enterprise_id: Annotated[str, Path(description="企业ID")],
  105. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:unsign"]))],
  106. ) -> JSONResponse:
  107. """企业解约"""
  108. result = await EnterpriseService.enterprise_unsign_service(auth=auth, enterprise_id=enterprise_id)
  109. log.info(f"企业解约申请已提交: {enterprise_id}")
  110. return SuccessResponse(data=result, msg="企业解约申请已提交")
  111. @EnterpriseRouter.post(
  112. "/{enterprise_id}/delete",
  113. summary="企业注销",
  114. description="企业注销",
  115. response_model=ResponseSchema[EnterpriseOperationOutSchema],
  116. )
  117. async def delete_controller(
  118. enterprise_id: Annotated[str, Path(description="企业ID")],
  119. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:enterprise:delete"]))],
  120. ) -> JSONResponse:
  121. """企业注销"""
  122. result = await EnterpriseService.enterprise_delete_service(auth=auth, enterprise_id=enterprise_id)
  123. log.info(f"企业注销申请已提交: {enterprise_id}")
  124. return SuccessResponse(data=result, msg="企业注销申请已提交")