From 011d80e3160945288287b16cacd44b1c52a524bd Mon Sep 17 00:00:00 2001 From: hackrobot Date: Fri, 22 Mar 2024 23:02:54 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=20=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 63 +++++++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/main.py b/main.py index 191acd6..50133d0 100644 --- a/main.py +++ b/main.py @@ -20,16 +20,14 @@ except ImportError: import WXBotService from planet import planetXml from lxml import etree -import xml.dom.minidom +import xml.dom.minidom from pydantic import BaseModel - models.Base.metadata.create_all(bind=engine) app = FastAPI() - # Dependency def get_db(): db = SessionLocal() @@ -49,16 +47,15 @@ async def root(): @app.post("/users/") # schemas.UserCreate决定了swagger文档 def create_user(user: schemas.User, db: Session = Depends(get_db)): - print('user',user) - print('typeuser',type(user)) + print('user', user) + print('typeuser', type(user)) # 检测是否存在wxid db_user = crud.get_user_by_wxid(db, user.wxid) - print('db_user',db_user) - + print('db_user', db_user) + if db_user: - raise HTTPException(status_code=400, - detail="wxid already registered") + raise HTTPException(status_code=400, detail="wxid already registered") return crud.create_user(db=db, user=user) @@ -71,12 +68,13 @@ def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): # 根据openId查询用户 @app.post("/openId") -def read_user(user:schemas.User, db: Session = Depends(get_db)): +def read_user(user: schemas.User, db: Session = Depends(get_db)): db_user = crud.get_user_by_openId(db, openId=user.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)): @@ -85,41 +83,43 @@ def read_user(wxid, db: Session = Depends(get_db)): raise HTTPException(status_code=404, detail="User-wxid not found") return db_user + # 监听机器人http-get消息 @app.get("/wxbot") -def helloget(q:dict): +def helloget(q: dict): data = q t = threading.Thread(target=kp, args=(data, )) # 通过当前线程开启新的线程去执行 t.start() return json.dumps({"Code": 0}) + # 监听机器人post日志消息 @app.post("/wxbot") # def hellopost(requestData:schemas.User): -def hellopost(requestData:dict): - print('requestData---',requestData) +def hellopost(requestData: dict): + print('requestData---', requestData) data = requestData t = threading.Thread(target=kp, args=(data, )) # 通过当前线程开启新的线程去执行 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 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): # 发送小程序 if data.get('isSender') != 1: - root = ET.fromstring(msgXml) #xml-字符串形式 - + root = ET.fromstring(msgXml) #xml-字符串形式 + #打开xml文档 # current_dir = os.path.dirname(os.path.abspath(__file__)) # print('current_dir+/planet.xml',current_dir+'\planet.xml') @@ -234,17 +234,15 @@ def kp(event_data): if msg_type == 1: # 1 文本消息/自带表情 kp_log = f'{type_str} 文本消息 内容:{msg}' # 将好友信息=>保存到数据库 - newFriendDict=WXBotService.get_friend_info(account_wxid, wxid) + newFriendDict = WXBotService.get_friend_info(account_wxid, wxid) # print('newFriendDict[data]---',newFriendDict['data']) - userClass=models.User(**(newFriendDict['data'])) + userClass = models.User(**(newFriendDict['data'])) # print('userClass====',type(userClass)) # crud.create_user(db=SessionLocal(),user=userClass) - - + # 保存好友信息 - saveWxidInfo(account_wxid,wxid) - - + saveWxidInfo(account_wxid, wxid) + elif msg_type == 3: # 3 图片消息 kp_log = f'{type_str} 图片消息 内容:{filepath}' # 本地dat图片解密 @@ -264,12 +262,12 @@ def kp(event_data): xml_msg.get('encryptusername'), xml_msg.get('ticket'), xml_msg.get('scene')) - newFriendWxid=xml_msg.get('alias') + newFriendWxid = xml_msg.get('alias') # 将好友信息=>保存到数据库 # newFriendDict=WXBotService.get_friend_info(account_wxid, newFriendWxid) # userClass=models.User(**(newFriendDict['data'])) # crud.create_user(db= SessionLocal(),user=userClass) - + elif msg_type == 42: # 42 名片消息 xml_msg = ET.fromstring(msg) kp_log = f'{type_str} 企业微信名片消息 {xml_msg.get("nickname")}({xml_msg.get("username")})' @@ -356,4 +354,3 @@ def kp(event_data): ) else: print(kp_log) -