controller.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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, get_current_user
  7. from app.core.logger import log
  8. from app.core.router_class import OperationLogRoute
  9. from alipay.aop.api.domain.EmployeeInfoDTO import EmployeeInfoDTO
  10. from .schema import (
  11. EmployeeCreateSchema,
  12. EmployeeListOutSchema,
  13. EmployeeOperationOutSchema,
  14. EmployeeOutSchema,
  15. EmployeeInviteQuerySchema,
  16. EmployeeInviteQueryOutSchema,
  17. )
  18. from .service import EmployeeService
  19. EmployeeRouter = APIRouter(
  20. route_class=OperationLogRoute,
  21. prefix="/employee",
  22. tags=["员工管理"],
  23. )
  24. @EmployeeRouter.get(
  25. "/info",
  26. summary="查询员工详情",
  27. description="查询员工详情",
  28. )
  29. async def info_employee_controller(
  30. auth: Annotated[AuthSchema, Depends(get_current_user)],
  31. ) -> JSONResponse:
  32. """查询员工详情"""
  33. # result = await EmployeeService.info_service(auth=auth)
  34. # return SuccessResponse(data=result, msg="查询员工详情成功")
  35. pass
  36. @EmployeeRouter.post(
  37. "",
  38. summary="添加员工",
  39. description="添加员工 (alipay.commerce.ec.employee.add)",
  40. response_model=ResponseSchema[EmployeeOperationOutSchema],
  41. )
  42. async def add_employee_controller(
  43. data: EmployeeCreateSchema,
  44. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:employee:create"]))],
  45. ) -> JSONResponse:
  46. """添加员工"""
  47. result = await EmployeeService.add_employee_service(auth=auth, data=data)
  48. log.info(f"添加员工成功: {data.employee_name}, employee_id={result.employee_id}")
  49. return SuccessResponse(data=result, msg="添加员工成功")
  50. @EmployeeRouter.get(
  51. "",
  52. summary="查询员工列表",
  53. description="分页查询员工列表",
  54. response_model=ResponseSchema[EmployeeListOutSchema],
  55. )
  56. async def list_employee_controller(
  57. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:employee:list"]))],
  58. page_no: Annotated[int, Query(description="页码")] = 1,
  59. page_size: Annotated[int, Query(description="每页数量")] = 20,
  60. enterprise_id: Annotated[str | None, Query(description="企业ID")] = None,
  61. employee_name: Annotated[str | None, Query(description="员工姓名")] = None,
  62. employee_no: Annotated[str | None, Query(description="员工工号")] = None,
  63. status: Annotated[str | None, Query(description="状态")] = None,
  64. ) -> JSONResponse:
  65. """查询员工列表"""
  66. search = {}
  67. if enterprise_id:
  68. search["enterprise_id"] = enterprise_id
  69. if employee_name:
  70. search["employee_name"] = employee_name
  71. if employee_no:
  72. search["employee_no"] = employee_no
  73. if status:
  74. search["status"] = status
  75. result = await EmployeeService.list_service(
  76. auth=auth, page_no=page_no, page_size=page_size, search=search
  77. )
  78. return SuccessResponse(data=result, msg="查询员工列表成功")
  79. @EmployeeRouter.get(
  80. "/{employee_id}",
  81. summary="查询员工详情",
  82. description="根据 employee_id 查询员工详情",
  83. # response_model=ResponseSchema[Any],
  84. )
  85. async def get_detail_controller(
  86. employee_id: Annotated[str, Path(description="员工ID")],
  87. enterprise_id: Annotated[str, Query(description="企业ID")],
  88. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:employee:detail"]))],
  89. ) -> JSONResponse:
  90. """查询员工详情"""
  91. result = await EmployeeService.detail_service(auth=auth, employee_id=employee_id, enterprise_id=enterprise_id)
  92. log.info(f"查询员工详情成功: {employee_id}, enterprise_id={enterprise_id}")
  93. return SuccessResponse(data=result, msg="查询员工详情成功")
  94. @EmployeeRouter.delete(
  95. "/{employee_id}",
  96. summary="删除员工",
  97. description="删除员工 (alipay.commerce.ec.employee.delete)",
  98. response_model=ResponseSchema[EmployeeOperationOutSchema],
  99. )
  100. async def delete_employee_controller(
  101. employee_id: Annotated[str, Path(description="员工ID")],
  102. enterprise_id: Annotated[str, Query(description="企业ID")],
  103. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:employee:delete"]))],
  104. ) -> JSONResponse:
  105. """删除员工"""
  106. result = await EmployeeService.delete_employee_service(auth=auth, employee_id=employee_id, enterprise_id=enterprise_id)
  107. log.info(f"删除员工成功: {employee_id}, enterprise_id={enterprise_id}")
  108. return SuccessResponse(data=result, msg="删除员工成功")
  109. @EmployeeRouter.post(
  110. "/invite/query",
  111. summary="获取员工签约激活链接",
  112. description="获取员工签约激活链接 (alipay.commerce.ec.employee.invite.query)",
  113. response_model=ResponseSchema[EmployeeInviteQueryOutSchema],
  114. )
  115. async def invite_query_controller(
  116. data: EmployeeInviteQuerySchema,
  117. auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:employee:invite"]))],
  118. ) -> JSONResponse:
  119. """获取员工签约激活链接"""
  120. result = await EmployeeService.invite_query_service(auth=auth, data=data)
  121. log.info(f"获取员工签约激活链接成功: enterprise_id={data.enterprise_id}")
  122. return SuccessResponse(data=result, msg="获取员工签约激活链接成功")