56 lines
2.8 KiB
C#
56 lines
2.8 KiB
C#
using System.Text.Json;
|
|
using Yh.Platform.Abstractions;
|
|
|
|
namespace Yh.Platform.OpenApi;
|
|
|
|
/// <summary><see cref="IOpenApiGroupClient"/> 的 HTTP 实现(镜像 Java <c>DefaultOpenApiGroupClient</c>)。</summary>
|
|
public class OpenApiGroupClient : OpenApiClientBase, IOpenApiGroupClient
|
|
{
|
|
public OpenApiGroupClient(HttpClient httpClient, OpenApiOptions options)
|
|
: base(httpClient, options)
|
|
{
|
|
}
|
|
|
|
public Task<BoaGroup?> GetGroupTreeAsync(CancellationToken ct = default)
|
|
=> ResolveAsync<BoaGroup>(HttpMethod.Get, Prefix + "/group/tree", ct: ct);
|
|
|
|
public Task<BoaGroup?> GetGroupByIdAsync(int? groupId, bool? withSub = null, CancellationToken ct = default)
|
|
=> ResolveAsync<BoaGroup>(HttpMethod.Get, Prefix + "/group/byId",
|
|
Params(("groupId", groupId), ("withSub", withSub)), ct: ct);
|
|
|
|
public Task<List<BoaGroup>> GetGroupListAsync(string ids, bool? withSub = null, CancellationToken ct = default)
|
|
=> ResolveListAsync<BoaGroup>(HttpMethod.Get, Prefix + "/group/list",
|
|
Params(("ids", ids), ("withSub", withSub)), ct: ct);
|
|
|
|
public Task<BoaGroup?> AddGroupAsync(SysGroupRequest request, CancellationToken ct = default)
|
|
=> ResolveAsync<BoaGroup>(HttpMethod.Post, Prefix + "/group/add", body: request, ct: ct);
|
|
|
|
public Task<BoaGroup?> EditGroupAsync(int id, SysGroupRequest request, CancellationToken ct = default)
|
|
=> ResolveAsync<BoaGroup>(HttpMethod.Post, Prefix + "/group/edit/" + id, body: request, ct: ct);
|
|
|
|
public Task DeleteGroupAsync(int id, int schoolId, CancellationToken ct = default)
|
|
=> ResolveVoidAsync(HttpMethod.Post, Prefix + "/group/delete/" + id + "/" + schoolId, ct: ct);
|
|
|
|
public Task<List<BoaGroup>> BatchAddGroupsAsync(SysGroupBatchRequest request, CancellationToken ct = default)
|
|
=> ResolveListAsync<BoaGroup>(HttpMethod.Post, Prefix + "/group/batchAdd", body: request, ct: ct);
|
|
|
|
public Task MoveGroupAsync(int schoolId, SysGroupMoveRequest request, CancellationToken ct = default)
|
|
=> ResolveVoidAsync(HttpMethod.Post, Prefix + "/group/move/" + schoolId, body: request, ct: ct);
|
|
}
|
|
|
|
/// <summary><see cref="IOpenApiAppClient"/> 的 HTTP 实现(镜像 Java <c>DefaultOpenApiAppClient</c>)。</summary>
|
|
public class OpenApiAppClient : OpenApiClientBase, IOpenApiAppClient
|
|
{
|
|
public OpenApiAppClient(HttpClient httpClient, OpenApiOptions options)
|
|
: base(httpClient, options)
|
|
{
|
|
}
|
|
|
|
public Task<JsonElement?> GetAppByIdAsync(string appId, CancellationToken ct = default)
|
|
=> SendAsync(HttpMethod.Get, Prefix + "/app/" + Uri.EscapeDataString(appId), ct: ct);
|
|
|
|
public Task<List<BoaAppType>> GetUserAppAsync(int userId, ClientEnum clientType, CancellationToken ct = default)
|
|
=> ResolveListAsync<BoaAppType>(HttpMethod.Get, Prefix + "/app/list",
|
|
Params(("userId", userId), ("clientType", (int)clientType)), ct: ct);
|
|
}
|