diff --git a/app/__pycache__/models.cpython-310.pyc b/app/__pycache__/models.cpython-310.pyc index 18f2ea7..211c121 100644 Binary files a/app/__pycache__/models.cpython-310.pyc and b/app/__pycache__/models.cpython-310.pyc differ diff --git a/app/models.py b/app/models.py index a1f2ccc..56e7fe7 100644 --- a/app/models.py +++ b/app/models.py @@ -1,6 +1,11 @@ from sqlalchemy import Boolean, Column, Integer, String from app.database import Base +import requests +from sqlalchemy.orm import Session +from sqlalchemy import event +from sqlalchemy.orm.attributes import get_history + class User(Base): __tablename__ = "users" @@ -15,3 +20,36 @@ class User(Base): ebook = Column(Boolean, default=False) # 新增电子书字段 activity_status = Column(String, default="0") # 新增活动报名字段 vip_member = Column(Boolean, default=False) # 新增VIP会员字段 + + +def sengTgmesage(message): + url = "http://192.168.31.38:8521/send_message" + data = {"message":message} + headers = {"Content-Type": "application/json"} + response = requests.post(url, json=data, headers=headers) + try: + response_data = response.json() + print(response_data) + except requests.exceptions.JSONDecodeError: + print("Response content is not in JSON format") + print("Response content:", response.text) + + + +def handle_change(mapper, connection, target): + """监听器函数""" + if target.__class__.__name__ == 'User': # 确保只监听User类的变动 + changed_fields = [] + for attr in target.__mapper__.column_attrs: + history = get_history(target, attr.key) + if history.has_changes(): + changed_fields.append(attr.key) + + if changed_fields: + print(f"检测到用户 {target.id} 的字段变化: {changed_fields}") + msg=f"检测到用户 {target.id} 的字段变化: {changed_fields}" + sengTgmesage(msg) + # 发起HTTP请求 + # requests.post("http://your-fastapi-endpoint/notify_change", json={"user_id": target.id, "changed_fields": changed_fields}) + +event.listen(User, "after_update", handle_change) \ No newline at end of file