business.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. """业务域模型:反馈、建言、热线、二维码、附件"""
  2. import uuid
  3. from datetime import datetime
  4. from sqlalchemy import Column, DateTime, Integer, String, Text
  5. from sqlalchemy import JSON
  6. from app.core.database import Base
  7. def _uuid() -> str:
  8. return str(uuid.uuid4())
  9. class Feedback(Base):
  10. __tablename__ = "feedback"
  11. id = Column(String(64), primary_key=True, default=_uuid)
  12. biz_no = Column(String(64), nullable=False, unique=True, index=True)
  13. fb_type = Column(String(16), nullable=False) # 投诉 | 表扬
  14. target_name = Column(String(64), nullable=True)
  15. target_dept = Column(String(128), nullable=True)
  16. target_post = Column(String(64), nullable=True)
  17. content = Column(Text, nullable=False)
  18. reporter_name = Column(String(64), nullable=True)
  19. reporter_unit = Column(String(128), nullable=True)
  20. reporter_post = Column(String(64), nullable=True)
  21. reporter_phone = Column(String(32), nullable=True)
  22. attachments = Column(JSON, nullable=False, default=list)
  23. status = Column(String(16), nullable=False, default="待处理") # 待处理|处理中|已办结
  24. handle_remark = Column(Text, nullable=True)
  25. del_flag = Column(String(1), nullable=False, default="0")
  26. create_time = Column(DateTime, default=datetime.utcnow)
  27. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  28. create_by = Column(String(64), nullable=True)
  29. update_by = Column(String(64), nullable=True)
  30. class Suggestion(Base):
  31. __tablename__ = "suggestion"
  32. id = Column(String(64), primary_key=True, default=_uuid)
  33. biz_no = Column(String(64), nullable=False, unique=True, index=True)
  34. content = Column(Text, nullable=False)
  35. contact_name = Column(String(64), nullable=True)
  36. contact_unit = Column(String(128), nullable=True)
  37. contact_post = Column(String(64), nullable=True)
  38. contact_phone = Column(String(32), nullable=True)
  39. attachments = Column(JSON, nullable=False, default=list)
  40. status = Column(String(16), nullable=False, default="待查阅") # 待查阅|已采纳|已回复
  41. handle_remark = Column(Text, nullable=True)
  42. del_flag = Column(String(1), nullable=False, default="0")
  43. create_time = Column(DateTime, default=datetime.utcnow)
  44. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  45. create_by = Column(String(64), nullable=True)
  46. update_by = Column(String(64), nullable=True)
  47. class HotlineConfig(Base):
  48. __tablename__ = "hotline_config"
  49. id = Column(String(64), primary_key=True, default=_uuid)
  50. phone = Column(String(512), nullable=True, default="")
  51. email = Column(String(512), nullable=True, default="")
  52. address = Column(String(1024), nullable=True, default="")
  53. work_time = Column(String(255), nullable=True, default="")
  54. del_flag = Column(String(1), nullable=False, default="0")
  55. create_time = Column(DateTime, default=datetime.utcnow)
  56. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  57. create_by = Column(String(64), nullable=True)
  58. update_by = Column(String(64), nullable=True)
  59. class QrcodeConfig(Base):
  60. __tablename__ = "qrcode_config"
  61. id = Column(String(64), primary_key=True, default=_uuid)
  62. land_url = Column(String(512), nullable=True, default="")
  63. title = Column(String(128), nullable=True, default="")
  64. image_url = Column(String(512), nullable=True, default="")
  65. del_flag = Column(String(1), nullable=False, default="0")
  66. create_time = Column(DateTime, default=datetime.utcnow)
  67. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  68. create_by = Column(String(64), nullable=True)
  69. update_by = Column(String(64), nullable=True)
  70. class Attachment(Base):
  71. __tablename__ = "attachment"
  72. id = Column(String(64), primary_key=True, default=_uuid)
  73. file_name = Column(String(255), nullable=False)
  74. object_key = Column(String(512), nullable=False)
  75. url = Column(String(512), nullable=False)
  76. size = Column(Integer, nullable=True, default=0)
  77. biz_type = Column(String(32), nullable=True)
  78. biz_id = Column(String(64), nullable=True, index=True)
  79. del_flag = Column(String(1), nullable=False, default="0")
  80. create_time = Column(DateTime, default=datetime.utcnow)
  81. update_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  82. create_by = Column(String(64), nullable=True)
  83. update_by = Column(String(64), nullable=True)