# from typing import Annotated from fastapi import APIRouter, Depends, Path, Query # from fastapi.responses import JSONResponse # from app.api.v1.module_system.auth.schema import AuthSchema # from app.common.response import ResponseSchema, SuccessResponse # from app.core.dependencies import AuthPermission # from app.core.logger import log from app.core.router_class import OperationLogRoute # from .schema import ( # ExpenseQuotaCreateSchema, # ExpenseQuotaDeleteSchema, # ExpenseQuotaModifySchema, # ExpenseQuotaQueryOutSchema, # ExpenseQuotaQuerySchema, # QuotaCreateSchema, # QuotaListOutSchema, # QuotaOperationOutSchema, # QuotaOutSchema, # QuotaUpdateSchema, # ) # from .service import QuotaService QuotaRouter = APIRouter( route_class=OperationLogRoute, prefix="/quota", tags=["额度管理"], ) # @QuotaRouter.post( # "/expense/create", # summary="创建余额/点券", # description="创建余额或点券 (alipay.ebpp.invoice.expensecontrol.quota.create)", # response_model=ResponseSchema[QuotaOperationOutSchema], # ) # async def create_expense_quota_controller( # data: ExpenseQuotaCreateSchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:expense:create"]))], # ) -> JSONResponse: # result = await QuotaService.create_expense_quota_service(auth=auth, data=data) # log.info(f"创建余额/点券成功: out_biz_no={result.out_biz_no}") # return SuccessResponse(data=result, msg="创建余额/点券成功") # @QuotaRouter.post( # "/expense/query", # summary="查询余额/点券", # description="查询余额或点券 (alipay.ebpp.invoice.expensecontrol.quota.query)", # response_model=ResponseSchema[ExpenseQuotaQueryOutSchema], # ) # async def query_expense_quota_controller( # data: ExpenseQuotaQuerySchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:expense:query"]))], # ) -> JSONResponse: # result = await QuotaService.query_expense_quota_service(auth=auth, data=data) # log.info(f"查询余额/点券成功") # return SuccessResponse(data=result, msg="查询余额/点券成功") # @QuotaRouter.put( # "/expense/{out_biz_no}", # summary="修改余额/点券", # description="修改余额或点券 (alipay.ebpp.invoice.expensecontrol.quota.modify)", # response_model=ResponseSchema[QuotaOperationOutSchema], # ) # async def modify_expense_quota_controller( # out_biz_no: Annotated[str, Path(description="外部业务编号")], # data: ExpenseQuotaModifySchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:expense:modify"]))], # ) -> JSONResponse: # result = await QuotaService.modify_expense_quota_service(auth=auth, out_biz_no=out_biz_no, data=data) # log.info(f"修改余额/点券成功: {out_biz_no}") # return SuccessResponse(data=result, msg="修改余额/点券成功") # @QuotaRouter.delete( # "/expense/{out_biz_no}", # summary="删除额度", # description="删除额度 (alipay.ebpp.invoice.expensecontrol.quota.delete)", # response_model=ResponseSchema[QuotaOperationOutSchema], # ) # async def delete_expense_quota_controller( # out_biz_no: Annotated[str, Path(description="外部业务编号")], # data: ExpenseQuotaDeleteSchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:expense:delete"]))], # ) -> JSONResponse: # result = await QuotaService.delete_expense_quota_service(auth=auth, out_biz_no=out_biz_no, data=data) # log.info(f"删除额度成功: {out_biz_no}") # return SuccessResponse(data=result, msg="删除额度成功") # @QuotaRouter.post( # "", # summary="创建额度", # description="创建/发放额度", # response_model=ResponseSchema[QuotaOperationOutSchema], # ) # async def create_quota_controller( # data: QuotaCreateSchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:create"]))], # ) -> JSONResponse: # result = await QuotaService.create_quota_service(auth=auth, data=data) # log.info(f"创建额度成功: out_biz_no={result.out_biz_no}") # return SuccessResponse(data=result, msg="创建额度成功") # @QuotaRouter.get( # "", # summary="查询额度列表", # description="分页查询额度列表", # response_model=ResponseSchema[QuotaListOutSchema], # ) # async def list_quota_controller( # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:list"]))], # page_no: Annotated[int, Query(description="页码")] = 1, # page_size: Annotated[int, Query(description="每页数量")] = 20, # employee_id: Annotated[str | None, Query(description="员工ID")] = None, # institution_id: Annotated[str | None, Query(description="制度ID")] = None, # ) -> JSONResponse: # search = {} # if employee_id: # search["employee_id"] = employee_id # if institution_id: # search["institution_id"] = institution_id # result = await QuotaService.list_service( # auth=auth, page_no=page_no, page_size=page_size, search=search # ) # return SuccessResponse(data=result, msg="查询额度列表成功") # @QuotaRouter.get( # "/{out_biz_no}", # summary="查询额度详情", # response_model=ResponseSchema[QuotaOutSchema], # ) # async def get_detail_controller( # out_biz_no: Annotated[str, Path(description="外部业务编号")], # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:detail"]))], # ) -> JSONResponse: # result = await QuotaService.detail_service(auth=auth, out_biz_no=out_biz_no) # return SuccessResponse(data=result, msg="查询额度详情成功") # @QuotaRouter.put( # "/{out_biz_no}", # summary="更新额度", # response_model=ResponseSchema[QuotaOperationOutSchema], # ) # async def update_controller( # out_biz_no: Annotated[str, Path(description="外部业务编号")], # data: QuotaUpdateSchema, # auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:quota:update"]))], # ) -> JSONResponse: # result = await QuotaService.update_service(auth=auth, out_biz_no=out_biz_no, data=data) # log.info(f"更新额度成功: {out_biz_no}") # return SuccessResponse(data=result, msg="更新额度成功")