user_template_service.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from backend.modules.database.connection import DatabaseConnection
  2. from backend.modules.database.operations import DatabaseOperations
  3. from backend.modules.database.models import TextRecord, User
  4. from backend.utils.logger_config import setup_logger
  5. from typing import Optional, List, Dict, Any
  6. import os
  7. logger = setup_logger(__name__)
  8. """
  9. 实现用户文本模板管理服务:用户创建、编辑、删除、查找文本模板
  10. """
  11. class UserTemplateService:
  12. def __init__(self):
  13. self.db_ops = DatabaseOperations()
  14. def create_text_template(self, user_id: int, text_type: str, text_name: str, text_label: str, text_content: str) -> dict:
  15. """
  16. 创建文本模板
  17. """
  18. logger.info(f"用户{user_id}创建文本模板: {text_name}, 类型: {text_type}")
  19. user = self.db_ops.get_user_by_id(user_id)
  20. if not user:
  21. return {"success": False, "error": "用户不存在"}
  22. text_record = self.db_ops.create_text_record(
  23. user_id=user_id,
  24. text_type=text_type,
  25. text_name=text_name,
  26. text_label=text_label,
  27. text_content=text_content
  28. )
  29. if not text_record:
  30. return {"success": False, "error": "数据库记录失败"}
  31. return {
  32. "success": True,
  33. "text_id": text_record['id'],
  34. "text_name": text_name,
  35. "text_label": text_label,
  36. "text_content": text_content
  37. }
  38. def list_text_templates(self, user_id: int, text_type: Optional[str] = None, page: int = 1, page_size: int = 20) -> dict:
  39. """
  40. 获取用户文本模板列表
  41. """
  42. logger.info(f"获取用户{user_id}的文本模板列表, 类型: {text_type}, 页码: {page}")
  43. user = self.db_ops.get_user_by_id(user_id)
  44. if not user:
  45. return {"success": False, "error": "用户不存在"}
  46. result = self.db_ops.get_user_text_records(user_id, text_type, page, page_size)
  47. return {
  48. "success": True,
  49. "templates": result.get("records", []),
  50. "total": result.get("total", 0),
  51. "page": result.get("page", 1),
  52. "page_size": result.get("page_size", 20),
  53. "total_pages": result.get("total_pages", 1)
  54. }
  55. def delete_text_template(self, user_id: int, text_id: int) -> dict:
  56. """
  57. 删除文本模板
  58. """
  59. logger.info(f"用户{user_id}删除文本模板: {text_id}")
  60. user = self.db_ops.get_user_by_id(user_id)
  61. if not user:
  62. return {"success": False, "error": "用户不存在"}
  63. text_record = self.db_ops.get_text_record_by_id(text_id)
  64. if not text_record:
  65. return {"success": False, "error": "文本模板不存在"}
  66. if text_record['user_id'] != user_id:
  67. return {"success": False, "error": "无权删除他人模板"}
  68. success = self.db_ops.delete_text_record(text_id)
  69. if not success:
  70. return {"success": False, "error": "文本模板删除失败"}
  71. return {"success": True, "message": "文本模板删除成功"}
  72. def update_text_template(self, user_id: int, text_id: int, data: dict) -> Dict[str, Any]:
  73. """
  74. 更新文本模板
  75. """
  76. logger.info(f"用户{user_id}更新文本模板: {text_id}")
  77. user = self.db_ops.get_user_by_id(user_id)
  78. if not user:
  79. return {"success": False, "error": "用户不存在"}
  80. text_record = self.db_ops.get_text_record_by_id(text_id)
  81. if not text_record:
  82. return {"success": False, "error": "文本模板不存在"}
  83. if text_record['user_id'] != user_id:
  84. return {"success": False, "error": "无权更新他人模板"}
  85. success = self.db_ops.update_text_record(text_id, **data)
  86. if not success:
  87. return {"success": False, "error": "数据库更新失败"}
  88. return {"success": True, "message": "文本模板更新成功"}
  89. user_template_service = UserTemplateService()