update
This commit is contained in:
Binary file not shown.
Binary file not shown.
11
app/crud.py
11
app/crud.py
@@ -29,9 +29,16 @@ def delete_user(db: Session, user: models.User):
|
|||||||
db.commit()
|
db.commit()
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
# def update_user(db: Session, user: models.User, user_update: schemas.UserUpdate):
|
||||||
|
# for key, value in user_update.dict(exclude_unset=True).items():
|
||||||
|
# setattr(user, key, value)
|
||||||
|
# db.commit()
|
||||||
|
# db.refresh(user)
|
||||||
|
# return user
|
||||||
def update_user(db: Session, user: models.User, user_update: schemas.UserUpdate):
|
def update_user(db: Session, user: models.User, user_update: schemas.UserUpdate):
|
||||||
for key, value in user_update.dict(exclude_unset=True).items():
|
for var, value in vars(user_update).items():
|
||||||
setattr(user, key, value)
|
if value is not None:
|
||||||
|
setattr(user, var, value)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(user)
|
db.refresh(user)
|
||||||
return user
|
return user
|
||||||
176
app/main.py
176
app/main.py
@@ -15,7 +15,6 @@ from fastapi.staticfiles import StaticFiles
|
|||||||
from app.tgMesaage import sendTg #发送tg消息
|
from app.tgMesaage import sendTg #发送tg消息
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
# 初始化数据库
|
# 初始化数据库
|
||||||
models.Base.metadata.create_all(bind=engine)
|
models.Base.metadata.create_all(bind=engine)
|
||||||
|
|
||||||
@@ -56,40 +55,106 @@ def hello():
|
|||||||
response = f"你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]"
|
response = f"你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]"
|
||||||
return PlainTextResponse(content=response)
|
return PlainTextResponse(content=response)
|
||||||
|
|
||||||
|
|
||||||
@app.get("/tgMessage")
|
@app.get("/tgMessage")
|
||||||
def tgMessage(openid: Optional[str] = None, db: Session = Depends(get_db)):
|
def tgMessage(openid: Optional[str] = None, db: Session = Depends(get_db)):
|
||||||
current_time = datetime.now()
|
current_time = datetime.now()
|
||||||
print("Current Date and Time:", current_time)
|
print("Current Date and Time:", current_time)
|
||||||
# 发送tg消息通知 wxid_4413224132412 || o7LFAwR32hWGq9XOpd7ZxK1wZxq8
|
# 发送tg消息通知 wxid_4413224132412 || o7LFAwR32hWGq9XOpd7ZxK1wZxq8
|
||||||
|
|
||||||
openid="o7LFAwR32hWGq9XOpd7ZxK1wZxq82"
|
# openid = "o7LFAwR32hWGq9XOpd7ZxK1wZxq8"
|
||||||
print('openid', openid)
|
print('openid', openid)
|
||||||
if openid:
|
if openid:
|
||||||
# 查询用户信息:昵称
|
# 查询用户信息:昵称
|
||||||
userInfo=read_user(openid,db=db)
|
data = read_user(openid, db=db)
|
||||||
if userInfo:
|
print('data==>', data)
|
||||||
|
|
||||||
|
userInfo = data['userInfo']
|
||||||
print('userInfo==>', userInfo)
|
print('userInfo==>', userInfo)
|
||||||
message=f'{userInfo.nickname}/{userInfo.gender}在{current_time}进行了访问'
|
if userInfo:
|
||||||
|
# print('userInfo==>', userInfo)
|
||||||
|
# message = f"{userInfo['nickname']}/{userInfo['gender']}在{current_time}进行了访问"
|
||||||
|
message = f"{userInfo.nickname}/{userInfo.gender}在{current_time}进行了访问"
|
||||||
|
|
||||||
sendTg(message)
|
sendTg(message)
|
||||||
else:
|
else:
|
||||||
print('openid未关联,在')
|
print('openid未关联')
|
||||||
message = f'openid: {openid}-未关联,在{current_time}访问网页'
|
message = f'openid: {openid}-未关联,在{current_time}访问网页'
|
||||||
sendTg(message)
|
sendTg(message)
|
||||||
|
|
||||||
|
|
||||||
def create_user_task(db: Session, user: schemas.UserCreate):
|
def create_user_task(db: Session, user: schemas.UserCreate):
|
||||||
try:
|
try:
|
||||||
existing_user = db.query(
|
existing_user = db.query(
|
||||||
models.User).filter(models.User.wxid == user.wxid).first()
|
models.User).filter(models.User.wxid == user.wxid).first()
|
||||||
if existing_user:
|
if existing_user:
|
||||||
# 可以选择更新用户信息或返回错误
|
# 可以选择更新用户信息或返回错误
|
||||||
# print("用户已存在")
|
print("用户已存在create_user_task")
|
||||||
return "用户已存在"
|
return "用户已存在"
|
||||||
|
else:
|
||||||
|
user = models.User(nickname=user.nickname,
|
||||||
|
remark=user.remark,
|
||||||
|
wechat_number=user.wechat_number,
|
||||||
|
wxid=user.wxid,
|
||||||
|
gender=user.gender,
|
||||||
|
friendaddtime=user.friendaddtime,
|
||||||
|
openid=user.openid)
|
||||||
db.add(user)
|
db.add(user)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
db.refresh(user)
|
||||||
|
|
||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
print("用户已存在")
|
print("IntegrityError")
|
||||||
return "用户已存在"
|
return "IntegrityError"
|
||||||
|
|
||||||
|
|
||||||
|
# 生成二维码图片
|
||||||
|
def generateqr(url="http://nomad.hackrobot.cn",
|
||||||
|
wxid=None,
|
||||||
|
group_image_path="images/group.jpg"):
|
||||||
|
|
||||||
|
# url = "http://nomad.hackrobot.cn"
|
||||||
|
# url="http://192.168.31.219:10086"
|
||||||
|
if wxid:
|
||||||
|
url += f"?wxid={wxid}"
|
||||||
|
|
||||||
|
# 创建二维码
|
||||||
|
qr = qrcode.QRCode(version=1, box_size=5, border=2) # 调整二维码大小
|
||||||
|
qr.add_data(url)
|
||||||
|
qr.make(fit=True)
|
||||||
|
img = qr.make_image(fill='black', back_color='white')
|
||||||
|
|
||||||
|
# 保存二维码图像
|
||||||
|
qr_image_path = f"images/{wxid}-qr_code.png"
|
||||||
|
img.save(qr_image_path)
|
||||||
|
|
||||||
|
# 加载原图
|
||||||
|
# group_image_path = "images/group.jpg"
|
||||||
|
|
||||||
|
# 在原图上添加二维码(右下角)
|
||||||
|
group_image = Image.open(group_image_path)
|
||||||
|
qr_image = Image.open(qr_image_path)
|
||||||
|
|
||||||
|
# 将二维码放置在右下角
|
||||||
|
qr_image = qr_image.resize((200, 200)) # 调整二维码大小
|
||||||
|
qr_position = (group_image.width - qr_image.width - 50,
|
||||||
|
group_image.height - qr_image.height - 50) # 距离20像素
|
||||||
|
# 在原图上添加二维码
|
||||||
|
group_image.paste(qr_image, qr_position)
|
||||||
|
|
||||||
|
# 保存合成的图像
|
||||||
|
combined_image_path = f"images/combined_{wxid}.jpg"
|
||||||
|
group_image.save(combined_image_path)
|
||||||
|
# 压缩图片
|
||||||
|
group_image.save(combined_image_path, "JPEG",
|
||||||
|
quality=10) # 85 是压缩质量,可根据需要调整
|
||||||
|
|
||||||
|
# 删除二维码文件
|
||||||
|
os.remove(qr_image_path)
|
||||||
|
print(combined_image_path)
|
||||||
|
return combined_image_path
|
||||||
|
# return FileResponse(combined_image_path)
|
||||||
|
|
||||||
|
|
||||||
@app.get("/add")
|
@app.get("/add")
|
||||||
@@ -100,20 +165,45 @@ def add_user(nickname: Optional[Any] = None,
|
|||||||
gender: Optional[Any] = None,
|
gender: Optional[Any] = None,
|
||||||
friendaddtime: Optional[Any] = None,
|
friendaddtime: Optional[Any] = None,
|
||||||
openid: Optional[Any] = None,
|
openid: Optional[Any] = None,
|
||||||
|
keyword: Optional[Any] = None,
|
||||||
db: Session = Depends(get_db),
|
db: Session = Depends(get_db),
|
||||||
background_tasks: BackgroundTasks = None):
|
background_tasks: BackgroundTasks = None):
|
||||||
|
response = None
|
||||||
user_data = schemas.UserCreate(nickname=nickname,
|
user_data = schemas.UserCreate(
|
||||||
|
nickname=nickname,
|
||||||
remark=remark,
|
remark=remark,
|
||||||
wechat_number=wechat_number,
|
wechat_number=wechat_number,
|
||||||
wxid=wxid,
|
wxid=wxid,
|
||||||
gender=gender,
|
gender=gender,
|
||||||
friendaddtime=friendaddtime,
|
# friendaddtime=friendaddtime,
|
||||||
|
friendaddtime=str(datetime.now()),
|
||||||
openid=openid)
|
openid=openid)
|
||||||
if background_tasks:
|
if background_tasks:
|
||||||
background_tasks.add_task(create_user_task, db, user_data)
|
background_tasks.add_task(create_user_task, db, user_data)
|
||||||
|
|
||||||
response = f"{nickname}你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]"
|
response = f"{nickname}你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]"
|
||||||
|
|
||||||
|
# 关键词回复
|
||||||
|
if keyword == '加群':
|
||||||
|
print("keyword==加群")
|
||||||
|
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
|
||||||
|
wxid=wxid,
|
||||||
|
group_image_path="images/group.jpg")
|
||||||
|
return FileResponse(combined_image_path)
|
||||||
|
elif keyword == '手册':
|
||||||
|
print("keyword==手册")
|
||||||
|
response = f"手册正在编写中"
|
||||||
|
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
|
||||||
|
wxid=wxid,
|
||||||
|
group_image_path="images/group.jpg")
|
||||||
|
return FileResponse(combined_image_path)
|
||||||
|
elif keyword == '活动':
|
||||||
|
print("keyword==活动")
|
||||||
|
response = f"活动正在筹备中"
|
||||||
|
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
|
||||||
|
wxid=wxid,
|
||||||
|
group_image_path="images/group.jpg")
|
||||||
|
return FileResponse(combined_image_path)
|
||||||
|
else:
|
||||||
return PlainTextResponse(content=response)
|
return PlainTextResponse(content=response)
|
||||||
|
|
||||||
|
|
||||||
@@ -128,7 +218,9 @@ def read_user(identifier: str, db: Session = Depends(get_db)):
|
|||||||
if user is None:
|
if user is None:
|
||||||
# raise HTTPException(status_code=404, detail="User not found")
|
# raise HTTPException(status_code=404, detail="User not found")
|
||||||
print('查询用户不存在')
|
print('查询用户不存在')
|
||||||
return user
|
return {"code": '400', "userInfo": None}
|
||||||
|
# return user
|
||||||
|
return {"code": '200', "userInfo": user}
|
||||||
|
|
||||||
|
|
||||||
@app.delete("/user/{user_id}")
|
@app.delete("/user/{user_id}")
|
||||||
@@ -145,54 +237,14 @@ def update_user(identifier: str,
|
|||||||
db: Session = Depends(get_db)):
|
db: Session = Depends(get_db)):
|
||||||
user = crud.get_user_by_openid_or_wxid(db, identifier=identifier)
|
user = crud.get_user_by_openid_or_wxid(db, identifier=identifier)
|
||||||
if user is None:
|
if user is None:
|
||||||
raise HTTPException(status_code=404, detail="User not found")
|
# raise HTTPException(status_code=404, detail="User not found")
|
||||||
|
# return user
|
||||||
|
return {"code": '400', "userInfo": None}
|
||||||
|
|
||||||
return crud.update_user(db=db, user=user, user_update=user_update)
|
# return crud.update_user(db=db, user=user, user_update=user_update)
|
||||||
|
return {
|
||||||
|
"code": '200',
|
||||||
|
"userInfo": crud.update_user(db=db, user=user, user_update=user_update)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/generate_qr")
|
|
||||||
def generate_qr(wxid: Optional[str] = Query(None), db: Session = Depends(get_db)):
|
|
||||||
# 选择网络图片
|
|
||||||
# return FileResponse('images/111.png')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# url = "https://web.hackrobot.cn"
|
|
||||||
url="http://192.168.31.219:10086"
|
|
||||||
if wxid:
|
|
||||||
url += f"?wxid={wxid}"
|
|
||||||
|
|
||||||
# 创建二维码
|
|
||||||
qr = qrcode.QRCode(version=1, box_size=5, border=2) # 调整二维码大小
|
|
||||||
qr.add_data(url)
|
|
||||||
qr.make(fit=True)
|
|
||||||
img = qr.make_image(fill='black', back_color='white')
|
|
||||||
|
|
||||||
# 保存二维码图像
|
|
||||||
qr_image_path = f"images/{wxid}-qr_code.png"
|
|
||||||
img.save(qr_image_path)
|
|
||||||
|
|
||||||
# 加载原图
|
|
||||||
group_image_path = "images/group.jpg"
|
|
||||||
|
|
||||||
# 在原图上添加二维码(右下角)
|
|
||||||
group_image = Image.open(group_image_path)
|
|
||||||
qr_image = Image.open(qr_image_path)
|
|
||||||
|
|
||||||
# 将二维码放置在右下角
|
|
||||||
qr_image = qr_image.resize((200, 200)) # 调整二维码大小
|
|
||||||
qr_position = (group_image.width - qr_image.width - 50, group_image.height - qr_image.height - 50) # 距离20像素
|
|
||||||
# 在原图上添加二维码
|
|
||||||
group_image.paste(qr_image, qr_position)
|
|
||||||
|
|
||||||
|
|
||||||
# 保存合成的图像
|
|
||||||
combined_image_path = f"images/combined_{wxid}.jpg"
|
|
||||||
group_image.save(combined_image_path)
|
|
||||||
# 压缩图片
|
|
||||||
group_image.save(combined_image_path, "JPEG", quality=10) # 85 是压缩质量,可根据需要调整
|
|
||||||
|
|
||||||
# 删除二维码文件
|
|
||||||
os.remove(qr_image_path)
|
|
||||||
print(combined_image_path)
|
|
||||||
return FileResponse(combined_image_path)
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Reference in New Issue
Block a user