|
@@ -0,0 +1,69 @@
|
|
|
|
|
+package checkin
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/silenceper/wechat/v2/util"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+const (
|
|
|
|
|
+ // getCheckinDataURL 获取打卡记录数据
|
|
|
|
|
+ getCheckinDataURL = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token=%s"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type (
|
|
|
|
|
+ // GetCheckinDataRequest 获取打卡记录数据请求
|
|
|
|
|
+ GetCheckinDataRequest struct {
|
|
|
|
|
+ OpenCheckinDataType int64 `json:"opencheckindatatype"`
|
|
|
|
|
+ StartTime int64 `json:"starttime"`
|
|
|
|
|
+ EndTime int64 `json:"endtime"`
|
|
|
|
|
+ UserIDList []string `json:"useridlist"`
|
|
|
|
|
+ }
|
|
|
|
|
+ // GetCheckinDataResponse 获取打卡记录数据响应
|
|
|
|
|
+ GetCheckinDataResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ CheckinData []*GetCheckinDataItem `json:"checkindata"`
|
|
|
|
|
+ }
|
|
|
|
|
+ // GetCheckinDataItem 打卡记录数据
|
|
|
|
|
+ GetCheckinDataItem struct {
|
|
|
|
|
+ UserID string `json:"userid"`
|
|
|
|
|
+ GroupName string `json:"groupname"`
|
|
|
|
|
+ CheckinType string `json:"checkin_type"`
|
|
|
|
|
+ ExceptionType string `json:"exception_type"`
|
|
|
|
|
+ CheckinTime int64 `json:"checkin_time"`
|
|
|
|
|
+ LocationTitle string `json:"location_title"`
|
|
|
|
|
+ LocationDetail string `json:"location_detail"`
|
|
|
|
|
+ WifiName string `json:"wifiname"`
|
|
|
|
|
+ Notes string `json:"notes"`
|
|
|
|
|
+ WifiMac string `json:"wifimac"`
|
|
|
|
|
+ MediaIDs []string `json:"mediaids"`
|
|
|
|
|
+ SchCheckinTime int64 `json:"sch_checkin_time"`
|
|
|
|
|
+ GroupID int64 `json:"groupid"`
|
|
|
|
|
+ ScheduleID int64 `json:"schedule_id"`
|
|
|
|
|
+ TimelineID int64 `json:"timeline_id"`
|
|
|
|
|
+ Lat int64 `json:"lat,omitempty"`
|
|
|
|
|
+ Lng int64 `json:"lng,omitempty"`
|
|
|
|
|
+ DeviceID string `json:"deviceid,omitempty"`
|
|
|
|
|
+ }
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+// GetCheckinData 获取打卡记录数据
|
|
|
|
|
+// @see https://developer.work.weixin.qq.com/document/path/90262
|
|
|
|
|
+func (r *Client) GetCheckinData(req *GetCheckinDataRequest) (*GetCheckinDataResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.PostJSON(fmt.Sprintf(getCheckinDataURL, accessToken), req); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &GetCheckinDataResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "GetCheckinData"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|