From 73b7c3104d53cc9b50fa53a83a639cbc429cc6d0 Mon Sep 17 00:00:00 2001 From: hackrobot Date: Thu, 18 Jul 2024 10:23:18 +0800 Subject: [PATCH] upate --- app/__pycache__/models.cpython-310.pyc | Bin 789 -> 1933 bytes app/models.py | 38 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/app/__pycache__/models.cpython-310.pyc b/app/__pycache__/models.cpython-310.pyc index 18f2ea77187c6c56cb0e45ce1775006c86935878..211c121d9e2f3dc6f0b04fef6f58e288eb6c3927 100644 GIT binary patch literal 1933 zcmZ8iTZ|~W-MB|7M8N}IaLS$VpNH!|^u!0*Eo0X<_s&=Ml`?gip z$<8t(!3`KNK?UzY*u|F!DtQS$`A6ziW`lpg2Oq>!J(FZjHGS&TIaSqF=ljm-tX{7o zXxB&IZNBd!^rs#iZ59k(gI9b4f+C7zlwcnxhHoUMZzjYiSlf-*N^IXQbu)H+2W%vE zlZsy{Z5FJn`qfgm<67eR9!75>>QMJ8qAs)dOutSmw0af!4O*if^mDAb-(+=KXLAQ8 ztTfk9yYUyC1GR~A&SzQ7!c^HSSzIKka^6ZM>oKnEHOZs2*T#yR4+UEV#aUxQL|F=| z#V)Z_f>P@-8T2C|Gd}F$w*S-c;hI~wsZ&2);j4+ED@R&DD--eL`I=Nx^uGaUk zUzzpQna`jW%&g6<-mI_Byn1B=^f_u%2lQrXcT4@)5&Jx?z~!royeAm!VX(!9%8F9TcG{SGaOk#CcFHc&XuDu<=qOOO85Xfr`1ES~5#YF?QEu>UNdQFzI6t*&8E8k)pS+?cRgRSZf!*NjRQ2cq&c$oFh(Chs;nV`U?v$@!?PIaN1D{uUg(_>8Q6OUMjw_l zFQc}*x_hcGWxl+yu=wJc&f*J8owJLbvrEfM=gurH2#6(wMu@P-lrvLyy_F1dA(hWx z9Oi7d2{DMHZYUuE76t;cz)(c@%IUKZKoPsA-en@sQo&l?>B?3lT4^R*QQCTY?VZ)u zX2z3H?jC!1-g4VfE@wb6A%!A&CM16f!lNu8W-3*c?Q~hLzbw?8-suAC0vfM#o&hr? z+mUUXpVSM?g2#%`P=>sv$FS@4NUDBM3rg>O{P~l5o(Cc5UF^ZtAp|GDB94O~C7w-e zl-M>w&ST?W{v5cvn#A{-1B#|`iR;IpjEn)GNb#1zU+ST;31eemUO*qskBKCJE#S6i zjIEKiZyz9ja%Apn%&Y^zZ`&K0{1xc}FN{IuCKRlZc@zCeG`0`h#qKL2iV{hQ_1YP+T?LC}puA%cMGm1T|t5g6Aw-YrXJ5K74f*9oCaT|jF6 zPy~>>X^#nI>)DV>&w!ghs)ddo;B6=6KB@{_Ng3oSFv$kkpq~1T>1rBmMl7bl2>l7* z*|f|mGZDQ92|NX`4&S3tdZsI%g>RJE=^3QVMi-=Ug&4;HK@XF^iNlv*j`G4y3708y zAO&k5Q&q7YhjF*hl3`g*9@MI7o$}z&9ZjGO_$P3k&-`h0YDrS}pUS44&&$ij00ca1r>Cu9Vqka-;vfSSAjbiSi!CN}VojzZ&dK)}ud+!3IYp9_cQTo=vIChclfN)2 vvx8WEnjDi)vY8ly*hLUkaF!I1b&JC$H$SB`C)JJ-$SY<85)uqNj3P_`S*#yu 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