Files
hackrobot 89289a6ddb wfwqf
2024-04-11 16:03:33 +08:00

86 lines
2.9 KiB
Python

from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session
# from . import crud, models, schemas
import crud, models, schemas
from database import SessionLocal, engine
# from .database import SessionLocal, engine
import json
import os
import threading
import time
from pydantic import BaseModel
from flask import request, Flask
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import WXBotService
from planet import planetXml
from lxml import etree
import xml.dom.minidom
from pydantic import BaseModel
# 保存好友信息
def saveWxidInfo(account_wxid, wxid, openId=None, h5openid=None):
print('wxid', wxid)
print('openId', openId)
print('h5openid', h5openid)
allFriend = WXBotService.get_address_list(account_wxid)
for friendItem in allFriend['data']["contactList"]:
if friendItem['wxid'] == wxid:
db_user = crud.get_user_by_wxid(db=SessionLocal(), wxid=wxid)
print("db_user",db_user)
if db_user:
print("wxid already registered")
if db_user.openId and db_user.h5openid:
print('用户数据openid和h5id都存在,无需更新')
else:
print("开始更新数据表")
crud.update_user_field(db=SessionLocal(),
wxid=wxid,
openId=openId,
h5openid=h5openid)
# 更新数据
# return db_user
else:
# 存储小程序openid
if openId:
friendItem['openId'] = openId
if h5openid:
friendItem['h5openid'] = h5openid
print("friendItem",friendItem)
friendItemObj = models.User(**friendItem)
new_user = crud.create_user(db=SessionLocal(),
user=friendItemObj)
return new_user
# 发送小程序模版,建议远程更新
def sendminiProgram(data=None, account_wxid=None, wxid=None, msgXml=None):
# 发送小程序
#不是自己发的消息
# if data.get('isSender') != 1:
root = ET.fromstring(msgXml) #xml-字符串形式
#打开xml文档
# current_dir = os.path.dirname(os.path.abspath(__file__))
# print('current_dir+/planet.xml',current_dir+'\planet.xml')
# tree = ET.parse(current_dir+'\planet.xml')
# root = tree.getroot()
# 微信好友的wxid
# wxid='wxid_w2imh7ki5s4q12'
for pagepath in root.iter('pagepath'):
print(pagepath.text) # 打印名字
pagepath.text = pagepath.text + f'?wxid={wxid}'
print('修改path', pagepath.text) # 打印名字
# 修改后的xml转成string , method='xml'
msgXml = ET.tostring(root, encoding='utf-8').decode('utf-8')
WXBotService.send_xml_message(account_wxid, wxid, msgXml)