user_template_api.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from fastapi import APIRouter, Depends, HTTPException, Form, File
  2. from fastapi.responses import JSONResponse
  3. from typing import Optional
  4. from backend.services.user_template_service import user_template_service
  5. router = APIRouter()
  6. @router.post("/api/v1/users/{user_id}/templates", tags=["用户文本模板管理"])
  7. def create_text_template(
  8. user_id: int,
  9. text_type: str = Form(...),
  10. text_name: str = Form(...),
  11. text_label: str = Form(...),
  12. text_content: str = Form(...)
  13. ):
  14. """
  15. 创建文本模板
  16. """
  17. result = user_template_service.create_text_template(
  18. user_id=user_id,
  19. text_type=text_type,
  20. text_name=text_name,
  21. text_label=text_label,
  22. text_content=text_content
  23. )
  24. if not result["success"]:
  25. raise HTTPException(status_code=400, detail=result["error"])
  26. return result
  27. @router.get("/api/v1/users/{user_id}/templates", tags=["用户文本模板管理"])
  28. def list_text_templates(
  29. user_id: int,
  30. text_type: Optional[str] = None,
  31. page: int = 1,
  32. page_size: int = 20
  33. ):
  34. """
  35. 获取用户文本模板列表
  36. """
  37. result = user_template_service.list_text_templates(
  38. user_id=user_id,
  39. text_type=text_type,
  40. page=page,
  41. page_size=page_size
  42. )
  43. if not result["success"]:
  44. raise HTTPException(status_code=400, detail=result["error"])
  45. return result
  46. @router.delete("/api/v1/users/{user_id}/templates/{text_id}", tags=["用户文本模板管理"])
  47. def delete_text_template(
  48. user_id: int,
  49. text_id: int
  50. ):
  51. """
  52. 删除文本模板
  53. """
  54. result = user_template_service.delete_text_template(
  55. user_id=user_id,
  56. text_id=text_id
  57. )
  58. if not result["success"]:
  59. raise HTTPException(status_code=400, detail=result["error"])
  60. return result
  61. @router.put("/api/v1/users/{user_id}/templates/{text_id}", tags=["用户文本模板管理"])
  62. def update_text_template(
  63. user_id: int,
  64. text_id: int,
  65. text_type: Optional[str] = Form(None),
  66. text_name: Optional[str] = Form(None),
  67. text_label: Optional[str] = Form(None),
  68. text_content: Optional[str] = Form(None)
  69. ):
  70. """
  71. 更新文本模板(任意字段可选,提供则更新)
  72. """
  73. data = {}
  74. if text_type is not None:
  75. data["text_type"] = text_type
  76. if text_name is not None:
  77. data["text_name"] = text_name
  78. if text_label is not None:
  79. data["text_label"] = text_label
  80. if text_content is not None:
  81. data["text_content"] = text_content
  82. if not data:
  83. return {"success": True, "message": "无更新字段"}
  84. result = user_template_service.update_text_template(
  85. user_id=user_id,
  86. text_id=text_id,
  87. data=data
  88. )
  89. if not result["success"]:
  90. raise HTTPException(status_code=400, detail=result["error"])
  91. return result