package calendar import ( "dashoo.cn/opms_libary/plugin/dingtalk/base" "dashoo.cn/opms_libary/plugin/dingtalk/context" "dashoo.cn/opms_libary/utils" "fmt" ) // 初始化创建日程的接口 func initCreateEventUrl(userId string) string { return fmt.Sprintf("/v1.0/calendar/users/%v/calendars/primary/events", userId) } // 初始化查询单个日程接口 func initGetEventByIdUrl(userId, calendarId string) string { return fmt.Sprintf("/v1.0/calendar/users/%v/calendars/primary/events/%v?maxAttendees=100", userId, calendarId) } // 初始化查询用户忙闲的接口 func initUserBusyStatusUrl(userId string) string { return fmt.Sprintf("/v1.0/calendar/users/%v/querySchedule", userId) } //Calendar 日程 type Calendar struct { base.Base } //NewCalendar init func NewCalendar(context *context.Context) *Calendar { c := new(Calendar) c.Context = context return c } //CreateSchedule 创建日程 func (c *Calendar) CreateSchedule(params *DingAddScheduleParams) (returnData *CreateEventResponse, err error) { var attendees []*EventAttendees for index := range params.UserIds { att := EventAttendees{ Id: ¶ms.UserIds[index], } attendees = append(attendees, &att) } start := &EventStart{ DateTime: ¶ms.BeginTime, TimeZone: ¶ms.TimeZone, } end := &EventEnd{ DateTime: ¶ms.EndTime, TimeZone: ¶ms.TimeZone, } req := &EventRequest{ Summary: ¶ms.Summary, Description: ¶ms.Description, Start: start, End: end, Attendees: attendees, } resp, _ := c.HTTPPostJSONWithAccessToken(initCreateEventUrl(params.UserId), req) var data CreateEventResponse err = utils.Bytes2object(resp, &data) return &data, err } //GetScheduleByEventId 根据日程Id获取日程数据 func (c *Calendar) GetScheduleByEventId(params *DingGetScheduleParams) (returnData *GetEventResponse, err error) { resp, _ := c.HTTPGetWithAccessToken(initGetEventByIdUrl(params.UserId, params.EventId), nil) var data GetEventResponse err = utils.Bytes2object(resp, &data) return &data, err } //GetUserBusyStatus 获取用户闲忙信息 func (c *Calendar) GetUserBusyStatus(params *DingIsUserBusyParams) (returnData *GetScheduleResponse, err error) { var userIds []*string for index := range params.UserIds { userIds = append(userIds, ¶ms.UserIds[index]) } req := &GetScheduleRequest{ UserIds: userIds, StartTime: ¶ms.BeginTime, EndTime: ¶ms.EndTime, } resp, _ := c.HTTPPostJSONWithAccessToken(initUserBusyStatusUrl(params.UserId), req) var data GetScheduleResponse err = utils.Bytes2object(resp, &data) return &data, err }