diff --git a/app/__pycache__/crud.cpython-310.pyc b/app/__pycache__/crud.cpython-310.pyc index c7bc77e..5cf81a5 100644 Binary files a/app/__pycache__/crud.cpython-310.pyc and b/app/__pycache__/crud.cpython-310.pyc differ diff --git a/app/__pycache__/main.cpython-310.pyc b/app/__pycache__/main.cpython-310.pyc index a85a2cf..4f26fe0 100644 Binary files a/app/__pycache__/main.cpython-310.pyc and b/app/__pycache__/main.cpython-310.pyc differ diff --git a/app/crud.py b/app/crud.py index f5ea976..b2be984 100644 --- a/app/crud.py +++ b/app/crud.py @@ -29,9 +29,16 @@ def delete_user(db: Session, user: models.User): db.commit() 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): - for key, value in user_update.dict(exclude_unset=True).items(): - setattr(user, key, value) + for var, value in vars(user_update).items(): + if value is not None: + setattr(user, var, value) db.commit() db.refresh(user) - return user + return user \ No newline at end of file diff --git a/app/main.py b/app/main.py index b3cebd2..6c64f2b 100644 --- a/app/main.py +++ b/app/main.py @@ -12,10 +12,9 @@ import qrcode import os from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles -from app.tgMesaage import sendTg #发送tg消息 +from app.tgMesaage import sendTg #发送tg消息 from datetime import datetime - # 初始化数据库 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[该消息是接受好友自动回复]" return PlainTextResponse(content=response) + @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() print("Current Date and Time:", current_time) # 发送tg消息通知 wxid_4413224132412 || o7LFAwR32hWGq9XOpd7ZxK1wZxq8 - - openid="o7LFAwR32hWGq9XOpd7ZxK1wZxq82" - print('openid',openid) + + # openid = "o7LFAwR32hWGq9XOpd7ZxK1wZxq8" + print('openid', openid) if openid: # 查询用户信息:昵称 - userInfo=read_user(openid,db=db) + data = read_user(openid, db=db) + print('data==>', data) + + userInfo = data['userInfo'] + print('userInfo==>', userInfo) if userInfo: - print('userInfo==>',userInfo) - message=f'{userInfo.nickname}/{userInfo.gender}在{current_time}进行了访问' + # print('userInfo==>', userInfo) + # message = f"{userInfo['nickname']}/{userInfo['gender']}在{current_time}进行了访问" + message = f"{userInfo.nickname}/{userInfo.gender}在{current_time}进行了访问" + sendTg(message) else: - print('openid未关联,在') - message=f'openid: {openid}-未关联,在{current_time}访问网页' + print('openid未关联') + message = f'openid: {openid}-未关联,在{current_time}访问网页' sendTg(message) + def create_user_task(db: Session, user: schemas.UserCreate): try: existing_user = db.query( models.User).filter(models.User.wxid == user.wxid).first() if existing_user: # 可以选择更新用户信息或返回错误 - # print("用户已存在") + print("用户已存在create_user_task") return "用户已存在" - db.add(user) - db.commit() + 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.commit() + db.refresh(user) + except IntegrityError: db.rollback() - print("用户已存在") - return "用户已存在" + print("IntegrityError") + 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") @@ -100,21 +165,46 @@ def add_user(nickname: Optional[Any] = None, gender: Optional[Any] = None, friendaddtime: Optional[Any] = None, openid: Optional[Any] = None, + keyword: Optional[Any] = None, db: Session = Depends(get_db), background_tasks: BackgroundTasks = None): - - user_data = schemas.UserCreate(nickname=nickname, - remark=remark, - wechat_number=wechat_number, - wxid=wxid, - gender=gender, - friendaddtime=friendaddtime, - openid=openid) + response = None + user_data = schemas.UserCreate( + nickname=nickname, + remark=remark, + wechat_number=wechat_number, + wxid=wxid, + gender=gender, + # friendaddtime=friendaddtime, + friendaddtime=str(datetime.now()), + openid=openid) if background_tasks: background_tasks.add_task(create_user_task, db, user_data) - response = f"{nickname}你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]" - return PlainTextResponse(content=response) + + # 关键词回复 + 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) @app.get("/users/") @@ -128,7 +218,9 @@ def read_user(identifier: str, db: Session = Depends(get_db)): if user is None: # raise HTTPException(status_code=404, detail="User not found") print('查询用户不存在') - return user + return {"code": '400', "userInfo": None} + # return user + return {"code": '200', "userInfo": user} @app.delete("/user/{user_id}") @@ -145,54 +237,14 @@ def update_user(identifier: str, db: Session = Depends(get_db)): user = crud.get_user_by_openid_or_wxid(db, identifier=identifier) 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) \ No newline at end of file diff --git a/images/combined_wxid_4413224132412.jpg b/images/combined_wxid_4413224132412.jpg index 10bd2d9..e675414 100644 Binary files a/images/combined_wxid_4413224132412.jpg and b/images/combined_wxid_4413224132412.jpg differ diff --git a/test.db b/test.db index 645566d..966358a 100644 Binary files a/test.db and b/test.db differ