calendar.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. Date: &params.BeginDate,
  41. DateTime: &params.BeginTime,
  42. TimeZone: &params.TimeZone,
  43. }
  44. end := &EventEnd{
  45. Date: &params.EndDate,
  46. DateTime: &params.EndTime,
  47. TimeZone: &params.TimeZone,
  48. }
  49. req := &EventRequest{
  50. Summary: &params.Summary,
  51. Description: &params.Description,
  52. Start: start,
  53. End: end,
  54. Attendees: attendees,
  55. }
  56. if params.SchType == "20" {
  57. req.IsAllDay = utils.Bool(true)
  58. } else {
  59. req.IsAllDay = utils.Bool(false)
  60. }
  61. resp, _ := c.HTTPPostJSONWithAccessToken(initCreateEventUrl(params.UserId), req)
  62. var data CreateEventResponse
  63. err = utils.Bytes2object(resp, &data)
  64. return &data, err
  65. }
  66. //GetScheduleByEventId 根据日程Id获取日程数据
  67. func (c *Calendar) GetScheduleByEventId(params *DingGetScheduleParams) (returnData *GetEventResponse, err error) {
  68. resp, _ := c.HTTPGetWithAccessToken(initGetEventByIdUrl(params.UserId, params.EventId), nil)
  69. var data GetEventResponse
  70. err = utils.Bytes2object(resp, &data)
  71. return &data, err
  72. }
  73. //GetUserBusyStatus 获取用户闲忙信息
  74. func (c *Calendar) GetUserBusyStatus(params *DingIsUserBusyParams) (returnData *GetScheduleResponse, err error) {
  75. var userIds []*string
  76. for index := range params.UserIds {
  77. userIds = append(userIds, &params.UserIds[index])
  78. }
  79. req := &GetScheduleRequest{
  80. UserIds: userIds,
  81. StartTime: &params.BeginTime,
  82. EndTime: &params.EndTime,
  83. }
  84. resp, _ := c.HTTPPostJSONWithAccessToken(initUserBusyStatusUrl(params.UserId), req)
  85. var data GetScheduleResponse
  86. err = utils.Bytes2object(resp, &data)
  87. return &data, err
  88. }