calendar.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package calendar
  2. import (
  3. "dashoo.cn/opms_libary/plugin/dingtalk/base"
  4. "dashoo.cn/opms_libary/plugin/dingtalk/context"
  5. "dashoo.cn/opms_libary/utils"
  6. "fmt"
  7. )
  8. // 初始化创建日程的接口
  9. func initCreateEventUrl(userId string) string {
  10. return fmt.Sprintf("/v1.0/calendar/users/%v/calendars/primary/events", userId)
  11. }
  12. // 初始化查询单个日程接口
  13. func initGetEventByIdUrl(userId, calendarId string) string {
  14. return fmt.Sprintf("/v1.0/calendar/users/%v/calendars/primary/events/%v?maxAttendees=100", userId, calendarId)
  15. }
  16. // 初始化查询用户忙闲的接口
  17. func initUserBusyStatusUrl(userId string) string {
  18. return fmt.Sprintf("/v1.0/calendar/users/%v/querySchedule", userId)
  19. }
  20. //Calendar 日程
  21. type Calendar struct {
  22. base.Base
  23. }
  24. //NewCalendar init
  25. func NewCalendar(context *context.Context) *Calendar {
  26. c := new(Calendar)
  27. c.Context = context
  28. return c
  29. }
  30. //CreateSchedule 创建日程
  31. func (c *Calendar) CreateSchedule(params *DingAddScheduleParams) (returnData *CreateEventResponse, err error) {
  32. var attendees []*EventAttendees
  33. for index := range params.UserIds {
  34. att := EventAttendees{
  35. Id: &params.UserIds[index],
  36. }
  37. attendees = append(attendees, &att)
  38. }
  39. start := &EventStart{
  40. DateTime: &params.BeginTime,
  41. TimeZone: &params.TimeZone,
  42. }
  43. end := &EventEnd{
  44. DateTime: &params.EndTime,
  45. TimeZone: &params.TimeZone,
  46. }
  47. req := &EventRequest{
  48. Summary: &params.Summary,
  49. Description: &params.Description,
  50. Start: start,
  51. End: end,
  52. Attendees: attendees,
  53. }
  54. resp, _ := c.HTTPPostJSONWithAccessToken(initCreateEventUrl(params.UserId), req)
  55. var data CreateEventResponse
  56. err = utils.Bytes2object(resp, &data)
  57. return &data, err
  58. }
  59. //GetScheduleByEventId 根据日程Id获取日程数据
  60. func (c *Calendar) GetScheduleByEventId(params *DingGetScheduleParams) (returnData *GetEventResponse, err error) {
  61. resp, _ := c.HTTPGetWithAccessToken(initGetEventByIdUrl(params.UserId, params.EventId), nil)
  62. var data GetEventResponse
  63. err = utils.Bytes2object(resp, &data)
  64. return &data, err
  65. }
  66. //GetUserBusyStatus 获取用户闲忙信息
  67. func (c *Calendar) GetUserBusyStatus(params *DingIsUserBusyParams) (returnData *GetScheduleResponse, err error) {
  68. var userIds []*string
  69. for index := range params.UserIds {
  70. userIds = append(userIds, &params.UserIds[index])
  71. }
  72. req := &GetScheduleRequest{
  73. UserIds: userIds,
  74. StartTime: &params.BeginTime,
  75. EndTime: &params.EndTime,
  76. }
  77. resp, _ := c.HTTPPostJSONWithAccessToken(initUserBusyStatusUrl(params.UserId), req)
  78. var data GetScheduleResponse
  79. err = utils.Bytes2object(resp, &data)
  80. return &data, err
  81. }