增加一些配置性工作

This commit is contained in:
2026-01-15 14:32:31 +08:00
parent 1e8ae960cd
commit 64b263cc2f
12 changed files with 62 additions and 256 deletions

View File

@@ -1,8 +1,7 @@
from .wx_com import wecom_service,wxcpt
from .wx_com import wxcpt
from .wx_utils import get_request_params,decrypt_message,extract_message_content
__all__ = [
"wecom_service",
"wxcpt",
"get_request_params",
"decrypt_message",

View File

@@ -1,41 +0,0 @@
from wecom_sdk.exceptions.general import SDKException
from wecom_sdk.modules.base import WecomBaseClient
from wecom_sdk.utils.requests import HttpxRequest
class WecomContactClient(WecomBaseClient):
async def get_contact_list(self , userid: str):
"""
获取联系人列表
@param userid: 用户id
@return: 联系人列表
"""
url = self.BASE_URL + "/externalcontact/list"
params = {"access_token": await self.access_token , "userid": userid}
resp = await HttpxRequest.post(url=url, params=params)
if resp.errcode == 0:
return resp.external_contact_list
else:
raise SDKException(resp.errcode, resp.errmsg)
async def get_contact_detail(self , external_userid: str , cursor : None | str = None):
"""
获取联系人详情
@param userid: 用户id
@param external_userid: 外部联系人id
@param cursor: 分页游标
@return: 联系人详情
"""
url = self.BASE_URL + "/externalcontact/get"
params = {"access_token": await self.access_token , "external_userid": external_userid }
params.update({"cursor": cursor} if cursor else {})
resp = await HttpxRequest.post(url=url, params=params)
if resp.get("errcode") == 0:
return resp.get("external_contact" , {})
else:
raise SDKException(resp.errcode, resp.errmsg)

View File

@@ -1,66 +0,0 @@
from wecom_sdk.schemas.base import BaseSchema
from typing import List, Optional
class TextAttr(BaseSchema):
value: str
class WebAttr(BaseSchema):
url: str
title: str
class MiniProgramAttr(BaseSchema):
appid: str
pagepath: str
title: str
class ExternalAttr(BaseSchema):
type: int
name: str
text: Optional[TextAttr] = None
web: Optional[WebAttr] = None
miniprogram: Optional[MiniProgramAttr] = None
class ExternalProfile(BaseSchema):
external_attr: List[ExternalAttr]
class ExternalContact(BaseSchema):
external_userid: str
name: str
position: Optional[str] = None
avatar: Optional[str] = None
corp_name: Optional[str] = None
corp_full_name: Optional[str] = None
type: int
gender: int
unionid: Optional[str] = None
external_profile: Optional[ExternalProfile] = None
class Tag(BaseSchema):
group_name: str
tag_name: str
tag_id: Optional[str] = None
type: int
class WechatChannels(BaseSchema):
nickname: str
source: int
class FollowUser(BaseSchema):
userid: str
remark: Optional[str] = None
description: Optional[str] = None
createtime: int
tags: Optional[List[Tag]] = None
remark_corp_name: Optional[str] = None
remark_mobiles: Optional[List[str]] = None
oper_userid: str
add_way: int
state: Optional[str] = None
wechat_channels: Optional[WechatChannels] = None
class ContactResponse(BaseSchema):
errcode: int
errmsg: str
external_contact: ExternalContact
follow_user: List[FollowUser]
next_cursor: Optional[str] = None

View File

@@ -1,13 +1,6 @@
from uvicorn.server import logger
from wecom_sdk import Wecom
from utils.wxcom.modules.contact import WecomContactClient
from config import setting
from .WXBizMsgCrypt3 import WXBizMsgCrypt
class WecomPro(Wecom , WecomContactClient):
pass
from config import Settings
from utils.wxcom.WXBizMsgCrypt3 import WXBizMsgCrypt
def get_wxcpt():
@@ -20,46 +13,22 @@ def get_wxcpt():
try:
# 验证企业微信配置是否完整
required_configs = [
setting.env.WECOM_APP_TOKEN,
setting.env.WECOM_APP_ENCODING_AES_KEY,
setting.env.WECOM_CORPID
Settings().WECOM_APP_TOKEN,
Settings().WECOM_APP_ENCODING_AES_KEY,
Settings().WECOM_CORPID
]
if not all(required_configs):
raise ValueError("企业微信配置不完整")
return WXBizMsgCrypt(
setting.env.WECOM_APP_TOKEN, # 设置的Token
setting.env.WECOM_APP_ENCODING_AES_KEY, # 设置密钥
setting.env.WECOM_CORPID # 企业ID
Settings().WECOM_APP_TOKEN, # 设置的Token
Settings().WECOM_APP_ENCODING_AES_KEY, # 设置密钥
Settings().WECOM_CORPID # 企业ID
)
except Exception as e:
logger.error(f"初始化WXBizMsgCrypt失败: {str(e)}")
raise
def get_wecom_service():
"""
初始化并返回 Wecom 服务实例
:param setting_env: 配置环境对象,包含企业微信相关配置
:return: Wecom 服务实例
"""
try:
# 验证企业微信配置是否完整
required_configs = [
setting.env.WECOM_CORPID,
setting.env.WECOM_CORPSECRET
]
if not all(required_configs):
raise ValueError("企业微信配置不完整")
return WecomPro(
corpid=setting.env.WECOM_CORPID,
corpsecret=setting.env.WECOM_CORPSECRET
)
except Exception as e:
logger.error(f"初始化Wecom服务失败: {str(e)}")
raise
wecom_service = get_wecom_service()
wxcpt = get_wxcpt()