97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
from service.wecom.exceptions.general import SDKException
|
||
from service.wecom.modules.base import WecomBaseClient
|
||
from service.wecom.schemas.departments import DepartmentInfo
|
||
from service.wecom.schemas.users import (
|
||
DepartmentUserDetailInfo,
|
||
DepartmentUserInfo,
|
||
UserInfo,
|
||
UserSimpleInfo,
|
||
)
|
||
from service.wecom.utils.requests import HttpxRequest
|
||
|
||
|
||
class WecomUsersClient(WecomBaseClient):
|
||
async def get_user(self, userid: str) -> dict:
|
||
"""
|
||
读取成员
|
||
@param userid: 成员UserID。对应管理端的账号,企业内必须唯一。不区分大小写,长度为1~64个字节
|
||
|
||
|
||
@return: 成员信息
|
||
"""
|
||
url = self.BASE_URL + "/user/get"
|
||
params = {"access_token": await self.access_token, "userid": userid}
|
||
resp = UserInfo(**await HttpxRequest.get(url=url, params=params))
|
||
|
||
if resp.errcode == 0:
|
||
return resp.model_dump(exclude={"errcode", "errmsg"})
|
||
else:
|
||
raise SDKException(resp.errcode, resp.errmsg)
|
||
|
||
async def get_user_in_department_detail(self, department_id: str) -> dict:
|
||
"""
|
||
读取部门成员完整信息
|
||
@param department_id: 获取的部门id
|
||
|
||
|
||
@return: 部门成员信息
|
||
"""
|
||
url = self.BASE_URL + "/user/list"
|
||
params = {
|
||
"access_token": await self.access_token,
|
||
"department_id": department_id,
|
||
}
|
||
resp = DepartmentUserDetailInfo(
|
||
**await HttpxRequest.get(url=url, params=params)
|
||
)
|
||
|
||
if resp.errcode == 0:
|
||
return resp.model_dump(exclude={"errcode", "errmsg"})
|
||
else:
|
||
raise SDKException(resp.errcode, resp.errmsg)
|
||
|
||
async def get_user_in_department(self, department_id: int) -> list[UserSimpleInfo]:
|
||
"""
|
||
读取部门成员简要信息
|
||
@param department_id: 获取的部门id
|
||
|
||
|
||
@return: 部门成员信息
|
||
"""
|
||
url = self.BASE_URL + "/user/simplelist"
|
||
params = {
|
||
"access_token": await self.access_token,
|
||
"department_id": department_id,
|
||
}
|
||
resp = DepartmentUserInfo(**await HttpxRequest.get(url=url, params=params))
|
||
|
||
if resp.errcode == 0:
|
||
return resp.userlist
|
||
else:
|
||
raise SDKException(resp.errcode, resp.errmsg)
|
||
|
||
@staticmethod
|
||
def convert_userid(userid: str, decrypt: bool = False):
|
||
"""
|
||
学工号/企业微信ID转换方法
|
||
|
||
@param userid: 学工号/企业微信ID
|
||
@param decrypt: 是否解密
|
||
|
||
@return: 转换后的学工号/企业微信ID
|
||
"""
|
||
if decrypt:
|
||
year = str(int(userid[10:12]) + 1945)
|
||
no = str(int(userid[2:9]) - 115342)
|
||
no = no[1:7]
|
||
userid = year + no
|
||
else:
|
||
userid = (
|
||
"8"
|
||
+ userid[2:3]
|
||
+ str(int(userid[-6:]) + 1115342)
|
||
+ userid[8:9]
|
||
+ str(int(userid[0:4]) - 1945)
|
||
)
|
||
return userid
|