From 31a546dabb9f025b2d17e5cd199b08c7e37225b0 Mon Sep 17 00:00:00 2001 From: hackrobot Date: Thu, 21 Mar 2024 00:13:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/crud.cpython-312.pyc | Bin 2542 -> 2946 bytes __pycache__/main.cpython-312.pyc | Bin 15986 -> 16322 bytes __pycache__/models.cpython-312.pyc | Bin 1190 -> 1190 bytes __pycache__/schemas.cpython-312.pyc | Bin 1095 -> 1095 bytes crud.py | 5 +++ kunpeng.db | Bin 8192 -> 8192 bytes main.py | 46 +++++++++++++++++++++------- models.py | 4 ++- schemas.py | 7 ++--- 9 files changed, 45 insertions(+), 17 deletions(-) diff --git a/__pycache__/crud.cpython-312.pyc b/__pycache__/crud.cpython-312.pyc index 181974042a67dadaae488ef6f2352518a1503cb5..3a37bd32c69f4dcc82276bb320d7ace7e4206df6 100644 GIT binary patch delta 355 zcmaDS+$7F>nwOW00SHvtf2VGm$ScV>YodCPE^{hl3P&nO8cPai3riGN3V#Ynge#RT zg*%lkjV*fv7x4lK zO{O9i5E~>=%mgG96pHwO)GdMZ)ROqp;?$z}q{?`pwv-|p_VEo@*X2~OV6ZpB`t1yZX$`5U_;qwHh}4s})opn&{j7mi(we3Sok zxCnsUQUo%l2oz3529y0brMN7COhzCs?wVZ0=_LAri;>ZbafbK@1`xf1`7?-~yqVJ) E04m5)@&Et; delta 228 zcmZn?e<#d)nwOW00SG4C_?0R(kynzjYodCPEpG~QDq{*qDq9L?Dq9*`3Reqj6c<>G zJC!+045R@Sq_L#%w6H|+R5EGuZ9FEq^BG)*7rMw4b*+cZlbYqz%amDY7~o#NDSvg_MN z%5{=;&Nf1NMzgwuG%s+tRLh>5cF zrml#dA*uue)^Zp$h)w$9>P{|VcuFb5EqQ}FG#EdYjw^Y++#RJ%B8zrTxlf!-z)sy` zBl^5Fs3cNqUZj$Fu}3*3=a(Fbt4uiBJrqSrIWJPGNK~b{M~TPOIKv|XGow6$fKrYm zEg%U50?JalQd1;N6zWAX%H7v-l4-0uTQVcMX2lK0vAPSp#w%g}j2J-3?)bnKp0%V@lT)PNf3 z9XOVf6+hK1FwII8@+=j&K)20D5C1d-ns(rOx&g^3cgME$K`gswXdJiow$Tyh|9h)D zXKb6_Gi=UnGOi?KZ*Iu6nvf8@W!_E>!>8tF;IQN*Z$VODxr)0!-xwKQ<7MJO=$e=;EAezX znjFC$d0qd298ae6BF$-`9rSdol()osdN8vpYcHlbZ;U0Ao0LR6CFf1OZ0=O!{dwyG zzrDLJO?wa)pg6hcC_=h zt71|&?W&owPP^9JqOBk$5cC4x9H;r5$bMm!#3<=*j+Mv>zjn9f?PDEO|;NqJ_|O{plln z`;!VSlkzlt-&Q4cA$tsdXS>NCazMX6lzZ3yI&Uq*5<6)bm5A(utYbU*EBtclKJpIK zIu4NYa29C~{NB;*coHS6nWQM!WJp$@dOTNK(n83qIoatUq$D@&sv_hxTy?Ko)vcAt z?Nm4`DP8j8n(HzrmugO=n|+9Paef@WFht*n?D(j<8w^E#@PqWS%r@iI3d zWbivy+|w5-atpI&ROz8+qmQ1sMFaNxJ!X0)+32fkZx%5xnZBz4DW_K zW_dvpCcPdYzB1APO(7?&@VSh=MU?INt=C9rB$@ND05T0NqG!5@Z; zWe%IBTbyLr>aTe?t$WhNbQb4~|Dm+1n*X7+@~IHIa%_>C$2Hx2BKcGaVkcnE-$_ow z+KM0ND=VX`6!2P#Y>m0C!Cf@v_w8O?%?GfbN%OHvmR8DWT>g*mDP5k0Mi zk)F{i(T<+UJ%@77F*z@jJImz0@V{~kvB+Q49$d17>qSF7sNnfUhQ^qJ7np(6kV zwxisa7RjCaKXNT7_hly6#TJ1`Hsp1>ucAgfQgjg#~27h$rSjKg(ZP z?5w)#L7$8C{Hd#p@7KiwN4QiTt$&qSH!$lLizP|@0+DeT4wjoQ746M;%GcnB!7#ZD z9|nVPIcNk!=n>+2(UpZaLliJ*w>I$OUj!95KXS<%I{n1bF=Qw1i^mplWPvUszoQT|3R2Q_gLvIvh+8h$W--}<)3gOag5^zobCx6@0jC}o3p{absbBW=t$dLmz$XGt^TY) ZT>qNOKu24-&ClKR+uECio68B({{on^_$L4W delta 2735 zcmZ`*X;53o9e*q7=>SOel+4y&iZ$59dqAxzI`ndu&6u!d1By&nRz)Yf` zD^skDE6~Rvv2oXmf-GQ|ltNMn22q!n7=}}Fs;ex7)MfDJqLO+ENz7HX3_ijHHIE85 zjLmArsqxrEGA6{+h+(G76XP+y2VPO%-_K^*aUsr&Srvg~RZ(Gr%N9n3SVWA4$qIqR z4uVSRM<^oBG~5uiB$Zh5csxQeo&~>58ZeXWhX##1xM3{5X>_d`T^EGKrq7ML=eloe zjO#}GvhtR%?e9vos~zPSq-#fTMlyC2JY{t!Vq!j0P$lH8P_3iaS?#{Uwc7{2AR!)!2`A&x7+f-y z`?C5-G>Y>S!;`1tTvkP?dMtUOe{57JCpmS&XQlvq6tfZdm+89V(-OF>t;l>)^u7We zhL=hQlv>^ge<~e7|Ah9kLG%f{iRnf7s%&q`tfb&7M{uJB6<3u)X$^le({64?=vGFu zlq2+T=5=cTp^xC>^44#?A(e8S1e|6C;Py-AOAKd~$}sI(VDVy>KP#1R-J6JKusjE~ zwkk9VM{NPa01oxYrtJuvvHcQFLzlhd7&jo5a~e{Kd{_}9y0J*duxFFmF>&w58F|eW zbPlC#BH2SaxbKVPywD-p;6t_q1>i4k$Ae-}R{6an_U-Jb+c3;IESe{1 zpce2rtJPE;f!{eSXb4WbotEedKB#2mncgUIu?~nsss6PHej2d!&(_65gdgSFmIYpK{`;HXL;f&bjs?9uE0?z~C+j zCTQY1n)A5ap|pbk4aPo2ZHv?qV#GA+L9Kb_?T|D!2!zPc1hm>G2VHnjDWb;^(pD8EV-@i+@(~V(W8~57Xx* zKaQ-SxMwl$48_?g?gffFdoOOgI_^bDJuH`v%R+nczNo zJ8(bx23#}7r77;1WQEfeL6#)`Drtt{HMwxCd7Wrx=eIQrI(#p-uiXV{>#f1p_dD`F zODahz>BW7ryrRl;h~cw1@*6a=mbT)eyg~eD*m8+lK9M}b7I`hhfXl0^c~j2eYtPgI zr;_`X3Xq)9TX5FrZM-b6N>xdfo15sNaTlckuCHT3bbC zL$G`wK1564@;9O@_--7YeV1lj$h{{Susw2S+2xWGfzm2QSI|H24pMDl#9`)GH6Vg=VbEvZILzmlS#l zZ<^ra(F7L@i-~Y-EHNAxTCiGpkl56bar{q#->Tt6oELhC{voi3s(oH+9mC5;lUWsc zhJ^}ZC133PPlE;yg{omTbRRkjKMOUg`-$Z+d>OLZ1_^tNkmH0rPDq%LK5#cYQvMWS z1x&JfE}k48jZB64$XHAe;kkw{H8a?d)D>n&)X*@?^)NIZt5MYddC(0lJQ#4O?_L&_w55L zYJw+Q>eaM>x8Y(-B|Z$lYIzvpPi5;~)C&h&hxU=4(3d)^8c!re;T8zbSe~}r(Ahpm_S^oN<*udPzcDIQa-r%DneHkXg(IiHT+Re-`@0Rr g7F2MzsZWW_U*#Ty`Tb6#ow;r|cGfAc*CI^+2L{Kqp#T5? diff --git a/__pycache__/models.cpython-312.pyc b/__pycache__/models.cpython-312.pyc index 55ac9718da7a187b5cae0d8449500567be3f7bc1..18ff4b90810e60efc9fcb897838cc67ba76b824c 100644 GIT binary patch delta 23 dcmZ3+xr~$VG%qg~0}xa*|4tQW+sHSA1pq_(1+oAD delta 23 dcmZ3+xr~$VG%qg~0}%Yb_A7NV^G3cIEC5qp2Y~

q_?5bKBX1Nlqx9qq=3qw2$$OZq1+(> delta 37 tcmZp0XmFSy&B!uQ#+i|2W5N=CE@qzd4E!tkgLuwwEIi1w`MiuFGXTwV3x@yz diff --git a/main.py b/main.py index bb19d30..92f6faa 100644 --- a/main.py +++ b/main.py @@ -51,10 +51,13 @@ def create_user(user: schemas.User, db: Session = Depends(get_db)): print('user',user) print('typeuser',type(user)) - db_user = crud.create_user(db, user) + # 检测是否存在wxid + db_user = crud.get_user_by_wxid(db, user.wxid) + print('db_user',db_user) + if db_user: raise HTTPException(status_code=400, - detail="openId already registered") + detail="wxid already registered") return crud.create_user(db=db, user=user) @@ -66,13 +69,20 @@ def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): # 根据openId查询用户 -@app.get("/users/{openId}") -def read_user(openId, db: Session = Depends(get_db)): - db_user = crud.get_user_by_openId(db, openId=openId) - if db_user is None: - raise HTTPException(status_code=404, detail="User not found") - return db_user +# @app.get("/users") +# def read_user(openId, db: Session = Depends(get_db)): +# db_user = crud.get_user_by_openId(db, openId=openId) +# if db_user is None: +# raise HTTPException(status_code=404, detail="openId not found") +# return db_user +# 根据wxid查询用户 +@app.get("/users") +def read_user(wxid, db: Session = Depends(get_db)): + db_user = crud.get_user_by_wxid(db, wxid=wxid) + if db_user is None: + raise HTTPException(status_code=404, detail="User-wxid not found") + return db_user # 监听机器人http-get消息 @app.get("/wxbot") @@ -92,6 +102,16 @@ def hellopost(requestData:dict): t.start() return json.dumps({"Code": 0}) +# 保存好友信息 +def saveWxidInfo(account_wxid,wxid): + allFriend= WXBotService.get_address_list(account_wxid) + for friendItem in allFriend['data']["contactList"]: + if friendItem['wxid']==wxid: + friendItemObj=models.User(**friendItem) + # 当前的路由函数 + create_user(db=SessionLocal(),user=friendItemObj) + + # 发送小程序模版,建议远程更新 def sendminiProgram(data, account_wxid, wxid, msgXml): @@ -214,10 +234,14 @@ def kp(event_data): kp_log = f'{type_str} 文本消息 内容:{msg}' # 将好友信息=>保存到数据库 newFriendDict=WXBotService.get_friend_info(account_wxid, wxid) - print('newFriendDict[data]---',newFriendDict['data']) + # print('newFriendDict[data]---',newFriendDict['data']) userClass=models.User(**(newFriendDict['data'])) - print('userClass====',type(userClass)) - crud.create_user(db=SessionLocal(),user=userClass) + # print('userClass====',type(userClass)) + # crud.create_user(db=SessionLocal(),user=userClass) + + + # 保存好友信息 + saveWxidInfo(account_wxid,wxid) elif msg_type == 3: # 3 图片消息 diff --git a/models.py b/models.py index 2446fa0..84d7c5e 100644 --- a/models.py +++ b/models.py @@ -10,7 +10,7 @@ class User(Base): id = Column(Integer, primary_key=True) wxid = Column(String) openId = Column(String) - sex = Column(String) #性别 + sex = Column(String) #性别 男/女 city = Column(String) #城市 country = Column(String) #"CN" province = Column(String) #"Hubei" @@ -27,6 +27,8 @@ class User(Base): v1 = Column(String) +# {'bighead': 'https://wx.qlogo.cn/mmhead/ver_1/sAOrfgticJnOSE39qcB2mtImUMyANI4NoumWzKbdf87yMYp89Jhszic3mYVgFomW45CSeBxTQK2eyiciakUr9njdvAMtZKHL8w9uIcF8feicZU9ama4xMaU1TlnT4VYam5WHN/0', 'city': 'Jingzhou', 'country': 'CN', 'labels': '', 'nickname': 'Eric', 'province': 'Hubei', 'remark': '', 'sex': '男', 'smallhead': 'https://wx.qlogo.cn/mmhead/ver_1/sAOrfgticJnOSE39qcB2mtImUMyA NI4NoumWzKbdf87yMYp89Jhszic3mYVgFomW45CSeBxTQK2eyiciakUr9njdvAMtZKHL8w9uIcF8feicZU9ama4xMaU1TlnT4VYam5WHN/132', 'source': 6, 'sourceStr': '通过朋友验证消息添加', 'usertype': 1, 'wxaccount': 'small +# zhiyun', 'wxid': 'wxid_4413224132412'} diff --git a/schemas.py b/schemas.py index 104272c..687718b 100644 --- a/schemas.py +++ b/schemas.py @@ -17,12 +17,9 @@ class UserCreate(BaseModel): labels: str source: str v1: str - - - - class User(UserCreate): id: int class Config: - orm_mode = True \ No newline at end of file + orm_mode = True +