feat(work): 新增通过日程或会议预定会议室接口

This commit is contained in:
Fu Diwei 2023-03-22 22:08:24 +08:00
parent b9d4339a48
commit 2de062c0ea
12 changed files with 174 additions and 9 deletions

View File

@ -403,7 +403,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region MeetingRoomBook
#region MeetingRoom/Book
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/get_booking_info 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/93620 </para>
@ -464,6 +464,46 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomBookResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/book_by_schedule 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/93620 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomBookByScheduleResponse> ExecuteCgibinOAMeetingRoomBookByScheduleAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomBookByScheduleRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "cgi-bin", "oa", "meetingroom", "book_by_schedule")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomBookByScheduleResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/book_by_meeting 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/93620 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomBookByMeetingResponse> ExecuteCgibinOAMeetingRoomBookByMeetingAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomBookByMeetingRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "cgi-bin", "oa", "meetingroom", "book_by_meeting")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomBookByMeetingResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/cancel_book 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/93620 </para>

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/oa/meetingroom/book_by_meeting 接口的请求。</para>
/// </summary>
public class CgibinOAMeetingRoomBookByMeetingRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议室 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingroom_id")]
[System.Text.Json.Serialization.JsonPropertyName("meetingroom_id")]
public int MeetingRoomId { get; set; }
/// <summary>
/// 获取或设置会议 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingid")]
[System.Text.Json.Serialization.JsonPropertyName("meetingid")]
public string Meeting { get; set; } = string.Empty;
/// <summary>
/// 获取或设置预定者的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("booker")]
[System.Text.Json.Serialization.JsonPropertyName("booker")]
public string BookerUserId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/oa/meetingroom/book_by_meeting 接口的响应。</para>
/// </summary>
public class CgibinOAMeetingRoomBookByMeetingResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置预定 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("booking_id")]
[System.Text.Json.Serialization.JsonPropertyName("booking_id")]
public string BookingId { get; set; } = default!;
/// <summary>
/// 获取或设置冲突日期的时间戳列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("conflict_date")]
[System.Text.Json.Serialization.JsonPropertyName("conflict_date")]
public string[]? ConflictDateTimestampList { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/oa/meetingroom/book_by_schedule 接口的请求。</para>
/// </summary>
public class CgibinOAMeetingRoomBookByScheduleRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置会议室 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meetingroom_id")]
[System.Text.Json.Serialization.JsonPropertyName("meetingroom_id")]
public int MeetingRoomId { get; set; }
/// <summary>
/// 获取或设置日程 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("schedule_id")]
[System.Text.Json.Serialization.JsonPropertyName("schedule_id")]
public string ScheduleId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置预定者的成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("booker")]
[System.Text.Json.Serialization.JsonPropertyName("booker")]
public string BookerUserId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/oa/meetingroom/book_by_schedule 接口的响应。</para>
/// </summary>
public class CgibinOAMeetingRoomBookByScheduleResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置预定 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("booking_id")]
[System.Text.Json.Serialization.JsonPropertyName("booking_id")]
public string BookingId { get; set; } = default!;
/// <summary>
/// 获取或设置冲突日期的时间戳列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("conflict_date")]
[System.Text.Json.Serialization.JsonPropertyName("conflict_date")]
public string[]? ConflictDateTimestampList { get; set; }
}
}

View File

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{

View File

@ -1,4 +1,4 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/oa/meetingroom/book 接口的响应。</para>
@ -6,11 +6,11 @@
public class CgibinOAMeetingRoomBookResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置会议 ID。
/// 获取或设置预定 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("meeting_id")]
[System.Text.Json.Serialization.JsonPropertyName("meeting_id")]
public string MeetingId { get; set; } = default!;
[Newtonsoft.Json.JsonProperty("booking_id")]
[System.Text.Json.Serialization.JsonPropertyName("booking_id")]
public string BookingId { get; set; } = default!;
/// <summary>
/// 获取或设置关联日程 ID。

View File

@ -0,0 +1,5 @@
{
"meetingroom_id": 1,
"meetingid": "hy7e7226edae66468bc48e9859812402",
"booker": "rocky"
}

View File

@ -0,0 +1,7 @@
{
"errcode": 0,
"errmsg": "ok",
"booking_id": "bkgsaseb6e027c123cbafAAA",
"conflict_date": [ 1672502400, 1675180800, 1677600000 ]
}

View File

@ -0,0 +1,5 @@
{
"meetingroom_id": 1,
"schedule_id": "1c7e7226edae66468bc48e9859812402",
"booker": "rocky"
}

View File

@ -0,0 +1,6 @@
{
"errcode": 0,
"errmsg": "ok",
"booking_id": "bkgsaseb6e027c123cbafAAA",
"conflict_date": [ 1672502400, 1675180800, 1677600000 ]
}

View File

@ -1,6 +1,6 @@
{
{
"errcode": 0,
"errmsg": "ok",
"meeting_id": "mtgsaseb6e027c123cbafAAA",
"booking_id": "bkgsaseb6e027c123cbafAAA",
"schedule_id": "17c7d2bd9f20d652840f72f59e796AAA"
}