upate
This commit is contained in:
Binary file not shown.
@@ -1,6 +1,11 @@
|
|||||||
from sqlalchemy import Boolean, Column, Integer, String
|
from sqlalchemy import Boolean, Column, Integer, String
|
||||||
from app.database import Base
|
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):
|
class User(Base):
|
||||||
__tablename__ = "users"
|
__tablename__ = "users"
|
||||||
|
|
||||||
@@ -15,3 +20,36 @@ class User(Base):
|
|||||||
ebook = Column(Boolean, default=False) # 新增电子书字段
|
ebook = Column(Boolean, default=False) # 新增电子书字段
|
||||||
activity_status = Column(String, default="0") # 新增活动报名字段
|
activity_status = Column(String, default="0") # 新增活动报名字段
|
||||||
vip_member = Column(Boolean, default=False) # 新增VIP会员字段
|
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)
|
||||||
Reference in New Issue
Block a user