diff --git a/service/callback/base.py b/service/callback/base.py new file mode 100644 index 0000000..e69de29 diff --git a/service/wecom/modules/card.py b/service/wecom/modules/card.py new file mode 100644 index 0000000..c8f6837 --- /dev/null +++ b/service/wecom/modules/card.py @@ -0,0 +1,28 @@ +from service.wecom.exceptions.general import SDKException +from service.wecom.modules.base import WecomBaseClient +from service.wecom.schemas.card import ( + GetCardRecord, + GetCardRecordsRequest, + GetCardRecordsResponse, +) +from service.wecom.utils.requests import HttpxRequest + + +class WecomCardClient(WecomBaseClient): + async def get_card_records( + self, data: GetCardRecordsRequest + ) -> list[GetCardRecord]: + """ + 获取打卡记录数据 + @param data: 获取打卡记录数据的参数 + """ + url = self.BASE_URL + "/checkin/getcheckindata" + params = {"access_token": await self.access_token} + resp = GetCardRecordsResponse( + **await HttpxRequest.post(url=url, params=params, json=data.model_dump()) + ) + + if resp.errcode == 0: + return resp.checkindata + else: + raise SDKException(resp.errcode, resp.errmsg) diff --git a/service/wecom/modules/mixin.py b/service/wecom/modules/mixin.py index 8679b33..52edb2b 100644 --- a/service/wecom/modules/mixin.py +++ b/service/wecom/modules/mixin.py @@ -1,10 +1,15 @@ from service.wecom.modules.base import WecomBaseClient +from service.wecom.modules.card import WecomCardClient from service.wecom.modules.department import WecomDepartmentClient from service.wecom.modules.message import WecomMessageClient from service.wecom.modules.users import WecomUsersClient class Wecom( - WecomDepartmentClient, WecomUsersClient, WecomMessageClient, WecomBaseClient + WecomDepartmentClient, + WecomUsersClient, + WecomMessageClient, + WecomCardClient, + WecomBaseClient, ): pass diff --git a/service/wecom/schemas/card.py b/service/wecom/schemas/card.py new file mode 100644 index 0000000..aaae3f4 --- /dev/null +++ b/service/wecom/schemas/card.py @@ -0,0 +1,44 @@ +import datetime + +from service.wecom.schemas.base import BaseSchema + + +class CheckinType: + """打卡类型""" + + ON_OFF_DUTY = 1 # 上下班打卡 + OUTING = 2 # 外出打卡 + ALL = 3 # 全部打卡 + + +class GetCardRecordsRequest(BaseSchema): + """获取打卡记录请求""" + + opencheckindatatype: CheckinType + starttime: datetime.datetime + endtime: datetime.datetime + useridlist: list[str] + + +class GetCardRecord(BaseSchema): + userid: str + groupname: str + checkin_type: str + exception_type: str + checkin_time: datetime.datetime + location_title: str + location_detail: str + wifiname: str + notes: str + wifimac: str + mediaids: list[str] + sch_checkin_time: datetime.datetime + groupid: int + schedule_id: int + timeline_id: int + + +class GetCardRecordsResponse(BaseSchema): + errcode: int + errmsg: str + checkindata: list[GetCardRecord]