This commit is contained in:
aaron 2025-03-30 11:51:56 +08:00
parent d7efef091f
commit f843a4ceb1
3 changed files with 27 additions and 27 deletions

View File

@ -65,7 +65,7 @@ def decrypt_msg(msg_encrypt: str, signature: str, timestamp: str, nonce: str) ->
return xml_content.decode()
except Exception as e:
logging.exception("解密企业微信消息失败")
logger.exception("解密企业微信消息失败")
return None
@router.get("")
@ -85,7 +85,7 @@ async def verify_callback(
return Response(content=decrypted_str, media_type="text/plain")
except Exception as e:
logging.exception("验证回调配置失败")
logger.exception("验证回调配置失败")
return Response(status_code=403)
@router.post("")
@ -113,18 +113,18 @@ async def wechat_corp_callback(
# 解析解密后的XML
msg_root = ET.fromstring(decrypted_msg)
logging.info(f"企业微信回调消息:{decrypted_msg}")
logger.info(f"企业微信回调消息:{decrypted_msg}")
# 解析基本信息
msg_type = msg_root.find('MsgType').text
logging.info(f"msg_type: {msg_type}")
logger.info(f"msg_type: {msg_type}")
# 处理事件消息
if msg_type == 'event':
event = msg_root.find('Event').text
logging.info(f"event: {event}")
logger.info(f"event: {event}")
# 处理外部群聊变更事件
if event == 'change_external_chat':
@ -134,13 +134,13 @@ async def wechat_corp_callback(
join_user_id = None
if update_detail == 'add_member' and msg_root.find('JoinScene') is not None:
logging.info(f"有新成员加入群聊")
logger.info(f"有新成员加入群聊")
# 获取加入的成员ID
join_user_id_elem = msg_root.find('JoinUserID')
if join_user_id_elem is not None:
join_user_id = join_user_id_elem.text
logging.info(f"chat_id: {chat_id}, change_type: {change_type}, update_detail: {update_detail}, join_user_id: {join_user_id}")
logger.info(f"chat_id: {chat_id}, change_type: {change_type}, update_detail: {update_detail}, join_user_id: {join_user_id}")
# 处理群聊变更事件
await wecom_client.handle_chat_change_event(
@ -151,13 +151,13 @@ async def wechat_corp_callback(
)
if update_detail == 'add_member' and join_user_id:
logging.info(f"发送欢迎消息到群聊:{chat_id}")
logger.info(f"发送欢迎消息到群聊:{chat_id}")
await wecom_client.send_welcome_message(chat_id)
return Response(content="success", media_type="text/plain")
except Exception as e:
logging.exception("处理企业微信回调消息异常")
logger.exception("处理企业微信回调消息异常")
return Response(content="success", media_type="text/plain")
class UnionidToExternalUseridRequest(BaseModel):
@ -194,7 +194,7 @@ async def get_external_chats(
return success_response(message="获取群聊列表成功", data=chat_list)
except Exception as e:
logging.exception("获取群聊列表异常")
logger.exception("获取群聊列表异常")
return error_response(code=500, message=f"获取群聊列表失败: {str(e)}")
@router.get("/external-chats/{chat_id}/members", response_model=ResponseModel)
@ -227,7 +227,7 @@ async def get_external_chat_members(
return success_response(message="获取群聊成员列表成功", data=member_list)
except Exception as e:
logging.exception("获取群聊成员列表异常")
logger.exception("获取群聊成员列表异常")
return error_response(code=500, message=f"获取群聊成员列表失败: {str(e)}")
@router.post("/sync-chat/{chat_id}", response_model=ResponseModel)
@ -254,7 +254,7 @@ async def sync_external_chat(
return success_response(message="同步群聊信息成功")
except Exception as e:
logging.exception("同步群聊信息异常")
logger.exception("同步群聊信息异常")
return error_response(code=500, message=f"同步群聊信息失败: {str(e)}")
@router.get("/chat-dashboard")

View File

@ -36,7 +36,7 @@ class WecomClient:
else:
raise Exception(f"获取access_token失败: {result}")
except Exception as e:
logging.error(f"获取access_token异常: {str(e)}")
logger.error(f"获取access_token异常: {str(e)}")
return None
async def code2session(self, js_code: str) -> Optional[Dict[str, Any]]:
@ -68,11 +68,11 @@ class WecomClient:
"session_key": result.get("session_key")
}
else:
logging.error(f"code2session失败: {result}")
logger.error(f"code2session失败: {result}")
return None
except Exception as e:
logging.error(f"code2session异常: {str(e)}")
logger.error(f"code2session异常: {str(e)}")
return None
async def get_unionid_from_userid(self, userid: str) -> Optional[str]:
@ -94,7 +94,7 @@ class WecomClient:
return result.get("unionid")
except Exception as e:
logging.error(f"get_unionid_from_userid异常: {str(e)}")
logger.error(f"get_unionid_from_userid异常: {str(e)}")
return None
async def unionid_to_external_userid(self, unionid: str, openid: str) -> Optional[str]:
@ -113,7 +113,7 @@ class WecomClient:
return result
except Exception as e:
logging.error(f"unionid_to_external_userid异常: {str(e)}")
logger.error(f"unionid_to_external_userid异常: {str(e)}")
return None
async def send_welcome_message(self, chat_id: str, user_id: str = None) -> bool:
@ -130,7 +130,7 @@ class WecomClient:
# 1. 获取 access_token
access_token = await self.get_access_token()
if not access_token:
logging.error("获取access_token失败")
logger.error("获取access_token失败")
return False
welcome_text = f"""🥳 欢迎您进群,在群内可以享受📦【代取快递】跑腿服务。
@ -171,11 +171,11 @@ class WecomClient:
if result.get("errcode") == 0:
return True
else:
logging.error(f"发送欢迎消息失败: {result}")
logger.error(f"发送欢迎消息失败: {result}")
return False
except Exception as e:
logging.error(f"发送欢迎消息异常: {str(e)}")
logger.error(f"发送欢迎消息异常: {str(e)}")
return False
async def get_external_chat_info(self, chat_id: str) -> Optional[Dict[str, Any]]:
@ -190,7 +190,7 @@ class WecomClient:
try:
access_token = await self.get_access_token()
if not access_token:
logging.error("获取access_token失败")
logger.error("获取access_token失败")
return None
url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/get?access_token={access_token}"
@ -204,10 +204,10 @@ class WecomClient:
if result.get("errcode") == 0:
return result.get("group_chat")
else:
logging.error(f"获取外部群聊信息失败: {result}")
logger.error(f"获取外部群聊信息失败: {result}")
return None
except Exception as e:
logging.error(f"获取外部群聊信息异常: {str(e)}")
logger.error(f"获取外部群聊信息异常: {str(e)}")
return None
async def get_external_contact_info(self, external_userid: str) -> Optional[Dict[str, Any]]:
@ -222,7 +222,7 @@ class WecomClient:
try:
access_token = await self.get_access_token()
if not access_token:
logging.error("获取access_token失败")
logger.error("获取access_token失败")
return None
url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token={access_token}"
@ -236,10 +236,10 @@ class WecomClient:
if result.get("errcode") == 0:
return result.get("external_contact")
else:
logging.error(f"获取外部联系人信息失败: {result}")
logger.error(f"获取外部联系人信息失败: {result}")
return None
except Exception as e:
logging.error(f"获取外部联系人信息异常: {str(e)}")
logger.error(f"获取外部联系人信息异常: {str(e)}")
return None
async def handle_chat_change_event(self, chat_id: str, change_type: str, update_detail: str, join_user_id: str = None) -> bool:
@ -408,7 +408,7 @@ class WecomClient:
return False
except Exception as e:
logging.error(f"处理群聊变更事件异常: {str(e)}")
logger.error(f"处理群聊变更事件异常: {str(e)}")
if 'db' in locals():
db.close()
return False

Binary file not shown.