From cd36fd281a7ff2868d4e0c88fed7f3ccad785503 Mon Sep 17 00:00:00 2001 From: hackrobot Date: Thu, 11 Apr 2024 00:10:08 +0800 Subject: [PATCH] update --- crud.py | 63 +++++++++++++++++++++++++++--------------- main.py | 84 +++++++++++++++++++++++++++++++------------------------- utils.py | 2 ++ 3 files changed, 90 insertions(+), 59 deletions(-) diff --git a/crud.py b/crud.py index 626497a..f1a2dac 100644 --- a/crud.py +++ b/crud.py @@ -5,6 +5,7 @@ import models, schemas import json import time + # 通过id获取用户 def get_user(db: Session, user_id: int): return db.query(models.User).filter(models.User.id == user_id).first() @@ -14,9 +15,11 @@ def get_user(db: Session, user_id: int): def get_user_by_openId(db: Session, openId: str): return db.query(models.User).filter(models.User.openId == openId).first() + # 通过openId岔村用户 def get_user_by_h5openid(db: Session, h5openid: str): - return db.query(models.User).filter(models.User.h5openid == h5openid).first() + return db.query( + models.User).filter(models.User.h5openid == h5openid).first() # 通过wxid岔村用户 @@ -31,28 +34,44 @@ def get_users(db: Session, skip: int = 0, limit: int = 100): # 创建用户 # user:schemas.UserCreate - # **user -def create_user(db: Session, user:schemas.User): -# def create_user(db: Session, user): - db_user = models.User( - wxid=user.wxid, - openId=user.openId, - sex=user.sex, - country=user.country, - province=user.province, - sourceStr=user.sourceStr, - usertype=user.usertype, - nickname=user.nickname, - wxaccount=user.wxaccount, - remark=user.remark, - smallhead=user.smallhead, - bighead=user.bighead, - labels=user.labels, - source=user.source, - v1=user.v1 - ) - +# **user +def create_user(db: Session, user: schemas.User): + # def create_user(db: Session, user): + db_user = models.User(wxid=user.wxid, + openId=user.openId, + sex=user.sex, + country=user.country, + province=user.province, + sourceStr=user.sourceStr, + usertype=user.usertype, + nickname=user.nickname, + wxaccount=user.wxaccount, + remark=user.remark, + smallhead=user.smallhead, + bighead=user.bighead, + labels=user.labels, + source=user.source, + v1=user.v1) + db.add(db_user) db.commit() db.refresh(db_user) return db_user + + +# 更新用户字段 +def update_user_field(db: Session, user_id: str, openId=None, h5openid=None): + user = get_user(db, user_id) + if user: + # 更新字段值 + # 存储小程序openid + if openId: + user.openId = openId + if h5openid: + user.h5openid = h5openid + + # 提交更改 + db.commit() + db.refresh(user) + return user + return False diff --git a/main.py b/main.py index b210d43..b714857 100644 --- a/main.py +++ b/main.py @@ -28,6 +28,9 @@ import utils import requests import config from urllib.parse import quote, unquote +import re + + models.Base.metadata.create_all(bind=engine) @@ -134,35 +137,42 @@ def read_users(wxid, db: Session = Depends(get_db)): # 群-异度星球 49187487591@chatroom chatroom def h5group(nickname, db: Session = Depends(get_db)): newtext = unquote(nickname, 'utf-8') + pattern = r'收到(\w+)的在看' print(newtext) - # 判断是否在群中 - inGroup = False - groupList = WXBotService.get_group_members_list( - robot_wxid=config.account_wxid, from_wxid=config.chatroomId) - # print('groupList', groupList) - for groupItem in groupList['data']: - if groupItem['nickname'] == nickname: - inGroup = True - if inGroup: - return {"code": 200, "success": "fail", "message": "已经在群聊中"} - else: - new_wxid = None - allFriend = WXBotService.get_address_list(config.account_wxid) - for friendItem in allFriend['data']["contactList"]: - if friendItem['nickname'] == nickname: - new_wxid = friendItem['wxid'] - else: - # print('通过nickname查不到wxid') - pass - if new_wxid: - WXBotService.add_group_members_40_more( - robot_wxid=config.account_wxid, - from_wxid=config.chatroomId, #异度星球群 - new_wxid=new_wxid) - print('new_wxid--', new_wxid) - return {"code": 200, "success": "ok", "message": "群聊邀请已发送"} + matches = re.findall(pattern, newtext) + if matches: + print("匹配到的结果:", matches) + # 判断是否在群中 + inGroup = False + groupList = WXBotService.get_group_members_list( + robot_wxid=config.account_wxid, from_wxid=config.chatroomId) + # print('groupList', groupList) + for groupItem in groupList['data']: + if groupItem['nickname'] == matches: + inGroup = True + if inGroup: + return {"code": 200, "success": "fail", "message": "已经在群聊中"} else: - return {"code": 200, "success": "ok", "message": "查不到nickname"} + new_wxid = None + allFriend = WXBotService.get_address_list(config.account_wxid) + for friendItem in allFriend['data']["contactList"]: + if friendItem['nickname'] == matches: + new_wxid = friendItem['wxid'] + else: + # print('通过nickname查不到wxid') + pass + if new_wxid: + WXBotService.add_group_members_40_more( + robot_wxid=config.account_wxid, + from_wxid=config.chatroomId, #异度星球群 + new_wxid=new_wxid) + print('new_wxid--', new_wxid) + return {"code": 200, "success": "ok", "message": "群聊邀请已发送"} + else: + return {"code": 200, "success": "ok", "message": "查不到nickname"} + else: + print("未找到匹配项,或者有特殊字符") + # 创建用户 @@ -334,17 +344,17 @@ def kp(event_data): # new_wxid='wxid_4413224132412') # 发送小程序 - utils.sendminiProgram(data, account_wxid, wxid, planetXml) + # utils.sendminiProgram(data, account_wxid, wxid, planetXml) # H5链接 - # WXBotService.send_link_message( - # account_wxid, - # wxid, - # title="欢迎加入微信群", - # desc="请查看规则", - # url=f'https://link.hackrobot.cn?wxid={wxid}', - # pic= - # "https://www.hackrobot.cn/wp-content/uploads/2023/05/cropped-cropped-Screenshot-2023-05-22-at-17.26.38.png" - # ) + WXBotService.send_link_message( + account_wxid, + wxid, + title="欢迎加入微信群", + desc="请查看规则", + url=f'https://link.hackrobot.cn?wxid={wxid}', + pic= + "https://www.hackrobot.cn/wp-content/uploads/2023/05/cropped-cropped-Screenshot-2023-05-22-at-17.26.38.png" + ) # if msg in ['腾讯云']: # # 发送小程序 diff --git a/utils.py b/utils.py index 5bd0906..71ace3b 100644 --- a/utils.py +++ b/utils.py @@ -38,6 +38,8 @@ def saveWxidInfo(account_wxid, wxid,openId=None,h5openid=None): db_user = crud.get_user_by_wxid(db=SessionLocal(), wxid=wxid) if db_user: print("wxid already registered") + print("开始更新数据表") + crud.update_user_field(db=SessionLocal(),user_id=wxid,openId=openId,h5openid=h5openid) # 更新数据 # return db_user else: