checkin.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package checkin
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. // getCheckinDataURL 获取打卡记录数据
  8. getCheckinDataURL = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token=%s"
  9. )
  10. type (
  11. // GetCheckinDataRequest 获取打卡记录数据请求
  12. GetCheckinDataRequest struct {
  13. OpenCheckinDataType int64 `json:"opencheckindatatype"`
  14. StartTime int64 `json:"starttime"`
  15. EndTime int64 `json:"endtime"`
  16. UserIDList []string `json:"useridlist"`
  17. }
  18. // GetCheckinDataResponse 获取打卡记录数据响应
  19. GetCheckinDataResponse struct {
  20. util.CommonError
  21. CheckinData []*GetCheckinDataItem `json:"checkindata"`
  22. }
  23. // GetCheckinDataItem 打卡记录数据
  24. GetCheckinDataItem struct {
  25. UserID string `json:"userid"`
  26. GroupName string `json:"groupname"`
  27. CheckinType string `json:"checkin_type"`
  28. ExceptionType string `json:"exception_type"`
  29. CheckinTime int64 `json:"checkin_time"`
  30. LocationTitle string `json:"location_title"`
  31. LocationDetail string `json:"location_detail"`
  32. WifiName string `json:"wifiname"`
  33. Notes string `json:"notes"`
  34. WifiMac string `json:"wifimac"`
  35. MediaIDs []string `json:"mediaids"`
  36. SchCheckinTime int64 `json:"sch_checkin_time"`
  37. GroupID int64 `json:"groupid"`
  38. ScheduleID int64 `json:"schedule_id"`
  39. TimelineID int64 `json:"timeline_id"`
  40. Lat int64 `json:"lat,omitempty"`
  41. Lng int64 `json:"lng,omitempty"`
  42. DeviceID string `json:"deviceid,omitempty"`
  43. }
  44. )
  45. // GetCheckinData 获取打卡记录数据
  46. // @see https://developer.work.weixin.qq.com/document/path/90262
  47. func (r *Client) GetCheckinData(req *GetCheckinDataRequest) (*GetCheckinDataResponse, error) {
  48. var (
  49. accessToken string
  50. err error
  51. )
  52. if accessToken, err = r.GetAccessToken(); err != nil {
  53. return nil, err
  54. }
  55. var response []byte
  56. if response, err = util.PostJSON(fmt.Sprintf(getCheckinDataURL, accessToken), req); err != nil {
  57. return nil, err
  58. }
  59. result := &GetCheckinDataResponse{}
  60. if err = util.DecodeWithError(response, result, "GetCheckinData"); err != nil {
  61. return nil, err
  62. }
  63. return result, nil
  64. }