update
This commit is contained in:
parent
6254ed804e
commit
dd6a466235
@ -1038,11 +1038,11 @@ async def complete_order(
|
||||
)
|
||||
db.commit()
|
||||
|
||||
# 如果当前订单是首单,给邀请人发放优惠券
|
||||
if order.is_first_order:
|
||||
# 如果当前订单是首单,如果有邀请人,给邀请人发放优惠券
|
||||
if order.is_first_order and order_user.referral_code:
|
||||
# 查询邀请人
|
||||
invite_user = db.query(UserDB).filter(
|
||||
UserDB.referral_code == order_user.user_code
|
||||
UserDB.user_code == order_user.referral_code
|
||||
).first()
|
||||
|
||||
if invite_user:
|
||||
|
||||
@ -123,20 +123,8 @@ async def wechat_corp_callback(
|
||||
chat_id = msg_root.find('ChatId').text
|
||||
change_type = msg_root.find('ChangeType').text
|
||||
|
||||
if change_type == 'add_member':
|
||||
|
||||
# # 获取数据库会话
|
||||
db = next(get_db())
|
||||
|
||||
# # 查找对应的小区
|
||||
# community = db.query(CommunityDB).filter(
|
||||
# CommunityDB.webot_webhook.isnot(None)
|
||||
# ).first()
|
||||
|
||||
# if community and community.webot_webhook:
|
||||
# # 发送欢迎消息
|
||||
# wecom_bot = WecomBot()
|
||||
# await wecom_bot.send_welcome_message(community.webot_webhook)
|
||||
# if change_type == 'add_member':
|
||||
# # 获取群聊成员
|
||||
|
||||
return Response(content="success", media_type="text/plain")
|
||||
|
||||
@ -145,36 +133,15 @@ async def wechat_corp_callback(
|
||||
return Response(content="success", media_type="text/plain")
|
||||
|
||||
|
||||
class UnionidToExternalUseridRequest(BaseModel):
|
||||
unionid: str
|
||||
openid: str
|
||||
|
||||
class RefreshRequest(BaseModel):
|
||||
code: str
|
||||
|
||||
@router.get("/access_token")
|
||||
async def get_access_token():
|
||||
access_token = await wecom_client.get_access_token()
|
||||
return success_response(message="获取企业微信access_token成功", data=access_token)
|
||||
|
||||
@router.post("/refresh")
|
||||
async def refresh(
|
||||
request: RefreshRequest,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
@router.post("/unionid_to_external_userid")
|
||||
async def unionid_to_external_userid(
|
||||
request: UnionidToExternalUseridRequest
|
||||
):
|
||||
if current_user and (current_user.wecom_userid or current_user.wecom_pending_id):
|
||||
return error_response(code=400, message="用户已绑定企业微信")
|
||||
|
||||
user_info = await wecom_client.code2session(request.code)
|
||||
print(f"获取到的企业微信用户信息: {user_info}")
|
||||
if not user_info:
|
||||
return error_response(code=400, message="获取企业微信用户信息失败")
|
||||
|
||||
if user_info.get("userid"):
|
||||
current_user.wecom_userid = user_info.get("userid")
|
||||
else:
|
||||
current_user.wecom_pending_id = user_info.get("pending_id")
|
||||
|
||||
db.commit()
|
||||
db.refresh(current_user)
|
||||
|
||||
return success_response(message="企业微信用户信息刷新成功")
|
||||
|
||||
"""根据unionid获取external_userid"""
|
||||
result = await wecom_client.unionid_to_external_userid(request.unionid, request.openid)
|
||||
print(f"根据unionid获取external_userid结果: {result}")
|
||||
return success_response(message="获取external_userid成功", data=result)
|
||||
@ -70,5 +70,56 @@ class WecomClient:
|
||||
except Exception as e:
|
||||
logging.error(f"code2session异常: {str(e)}")
|
||||
return None
|
||||
|
||||
async def unionid_to_external_userid(self, unionid: str, openid: str) -> Optional[str]:
|
||||
"""根据unionid获取external_userid"""
|
||||
try:
|
||||
url = f"https://qyapi.weixin.qq.com/cgi-bin/idconvert/unionid_to_external_userid?access_token={await self.get_access_token()}"
|
||||
params = {
|
||||
"unionid": unionid,
|
||||
"openid": openid,
|
||||
"subject_type": 1
|
||||
}
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(url, json=params) as response:
|
||||
result = await response.json()
|
||||
return result
|
||||
except Exception as e:
|
||||
logging.error(f"unionid_to_external_userid异常: {str(e)}")
|
||||
return None
|
||||
|
||||
async def send_welcome_message(self, user_info: Dict[str, Any], group_id: str) -> bool:
|
||||
"""发送欢迎消息"""
|
||||
try:
|
||||
# 1. 获取 access_token
|
||||
access_token = await self.get_access_token()
|
||||
if not access_token:
|
||||
logging.error("获取access_token失败")
|
||||
return False
|
||||
|
||||
# 2. 发送欢迎消息
|
||||
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"
|
||||
params = {
|
||||
"access_token": access_token,
|
||||
"chatid": group_id,
|
||||
"msgtype": "text",
|
||||
"text": {
|
||||
"content": f"欢迎 @{user_info['name']} 加入群聊!\n我们为您准备了专属优惠券,请查收~"
|
||||
}
|
||||
}
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(url, json=params) as response:
|
||||
result = await response.json()
|
||||
if result.get("errcode") == 0:
|
||||
return True
|
||||
else:
|
||||
logging.error(f"发送欢迎消息失败: {result}")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"发送欢迎消息异常: {str(e)}")
|
||||
return False
|
||||
|
||||
wecom_client = WecomClient()
|
||||
Loading…
Reference in New Issue
Block a user