diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWeDataExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWeDataExtensions.cs new file mode 100644 index 00000000..a675db35 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWeDataExtensions.cs @@ -0,0 +1,152 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Api +{ + public static class WechatApiClientExecuteWeDataExtensions + { + /// + /// 异步调用 [POST] /wedata/wedata_get_login_config 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataGetLoginConfig.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataGetLoginConfigAsync(this WechatApiClient client, Models.WeDataGetLoginConfigRequest 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, "wedata", "wedata_get_login_config") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_set_login_config 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataSetLoginConfig.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataSetLoginConfigAsync(this WechatApiClient client, Models.WeDataSetLoginConfigRequest 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, "wedata", "wedata_set_login_config") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_get_perm_list 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataGetPermList.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataGetPermissionListAsync(this WechatApiClient client, Models.WeDataGetPermissionListRequest 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, "wedata", "wedata_get_perm_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_set_user_perm 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataSetUserPerm.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataSetUserPermissionAsync(this WechatApiClient client, Models.WeDataSetUserPermissionRequest 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, "wedata", "wedata_set_user_perm") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_query_bind_list 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataQueryBindList.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataQueryBindListAsync(this WechatApiClient client, Models.WeDataQueryBindListRequest 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, "wedata", "wedata_query_bind_list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_unbind_user 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/weDataUnbindUser.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataUnbindUserAsync(this WechatApiClient client, Models.WeDataUnbindUserRequest 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, "wedata", "wedata_unbind_user") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wedata/wedata_login 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/we-analysis/wedata_login.html + /// + /// + /// + /// + /// + public static async Task ExecuteWeDataLoginAsync(this WechatApiClient client, Models.WeDataLoginRequest 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, "wedata", "wedata_login") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigRequest.cs new file mode 100644 index 00000000..e4046800 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_get_login_config 接口的请求。 + /// + public class WeDataGetLoginConfigRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigResponse.cs new file mode 100644 index 00000000..a7c99678 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetLoginConfigResponse.cs @@ -0,0 +1,56 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_get_login_config 接口的响应。 + /// + public class WeDataGetLoginConfigResponse : WechatApiResponse + { + public static class Types + { + public class AppInfo + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置小程序昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + } + } + + /// + /// 获取或设置服务商 AppId。 + /// + [Newtonsoft.Json.JsonProperty("component_appid")] + [System.Text.Json.Serialization.JsonPropertyName("component_appid")] + public string ComponentAppId { get; set; } = default!; + + /// + /// 获取或设置服务商昵称。 + /// + [Newtonsoft.Json.JsonProperty("component_nickname")] + [System.Text.Json.Serialization.JsonPropertyName("component_nickname")] + public string ComponentNickname { get; set; } = default!; + + /// + /// 获取或设置反查地址。 + /// + [Newtonsoft.Json.JsonProperty("recheck_url")] + [System.Text.Json.Serialization.JsonPropertyName("recheck_url")] + public string RecheckUrl { get; set; } = default!; + + /// + /// 获取或设置关联小程序列表。 + /// + [Newtonsoft.Json.JsonProperty("appinfo")] + [System.Text.Json.Serialization.JsonPropertyName("appinfo")] + public Types.AppInfo[] AssociatedAppList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListRequest.cs new file mode 100644 index 00000000..2f2fb097 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_get_perm_list 接口的请求。 + /// + public class WeDataGetPermissionListRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListResponse.cs new file mode 100644 index 00000000..5ab69e5a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataGetPermissionListResponse.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_get_perm_list 接口的响应。 + /// + public class WeDataGetPermissionListResponse : WechatApiResponse + { + public static class Types + { + public class Permission + { + /// + /// 获取或设置权限集 ID。 + /// + [Newtonsoft.Json.JsonProperty("perm_id")] + [System.Text.Json.Serialization.JsonPropertyName("perm_id")] + public string PermissionId { get; set; } = default!; + + /// + /// 获取或设置权限集名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置权限集描述。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string Description { get; set; } = default!; + } + } + + /// + /// 获取或设置权限集列表。 + /// + [Newtonsoft.Json.JsonProperty("perm")] + [System.Text.Json.Serialization.JsonPropertyName("perm")] + public Types.Permission[] PermissionList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginRequest.cs new file mode 100644 index 00000000..f8c8ce4a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_login 接口的请求。 + /// + public class WeDataLoginRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户在服务商系统的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("uid")] + [System.Text.Json.Serialization.JsonPropertyName("uid")] + public string UserId { get; set; } = string.Empty; + + /// + /// 获取或设置用户在服务商系统的会话标识。 + /// + [Newtonsoft.Json.JsonProperty("user_session")] + [System.Text.Json.Serialization.JsonPropertyName("user_session")] + public string UserSession { get; set; } = string.Empty; + + /// + /// 获取或设置用户 IP。 + /// + [Newtonsoft.Json.JsonProperty("client_ip")] + [System.Text.Json.Serialization.JsonPropertyName("client_ip")] + public string? ClientIp { get; set; } + + /// + /// 获取或设置用户 UserAgent。 + /// + [Newtonsoft.Json.JsonProperty("user_agent")] + [System.Text.Json.Serialization.JsonPropertyName("user_agent")] + public string? UserAgent { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginResponse.cs new file mode 100644 index 00000000..c362a007 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataLoginResponse.cs @@ -0,0 +1,54 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_login 接口的响应。 + /// + public class WeDataLoginResponse : WechatApiResponse + { + public static class Types + { + public class BaseResponse + { + /// + /// 获取或设置错误码。 + /// + [Newtonsoft.Json.JsonProperty("ret")] + [System.Text.Json.Serialization.JsonPropertyName("ret")] + public int ErrorCode { get; set; } + + /// + /// 获取或设置错误信息。 + /// + [Newtonsoft.Json.JsonProperty("err_msg")] + [System.Text.Json.Serialization.JsonPropertyName("err_msg")] + public string ErrorMessage { get; set; } = default!; + } + } + + /// + /// 获取或设置基本响应信息。 + /// + [Newtonsoft.Json.JsonProperty("base_resp")] + [System.Text.Json.Serialization.JsonPropertyName("base_resp")] + public Types.BaseResponse BaseResponse { get; set; } = default!; + + /// + /// 获取或设置 We 分析登录链接。 + /// + [Newtonsoft.Json.JsonProperty("redirect_url")] + [System.Text.Json.Serialization.JsonPropertyName("redirect_url")] + public string? RedirectUrl { get; set; } + + /// + /// 获取或设置过期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("expire_at")] + [System.Text.Json.Serialization.JsonPropertyName("expire_at")] + public long? ExpireTimestamp { get; set; } + + public override bool IsSuccessful() + { + return base.IsSuccessful() && BaseResponse != null && BaseResponse.ErrorCode == 0; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListRequest.cs new file mode 100644 index 00000000..0310d6cd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_query_bind_list 接口的请求。 + /// + public class WeDataQueryBindListRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListResponse.cs new file mode 100644 index 00000000..0e249630 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataQueryBindListResponse.cs @@ -0,0 +1,79 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_query_bind_list 接口的响应。 + /// + public class WeDataQueryBindListResponse : WechatApiResponse + { + public static class Types + { + public class UserInfo + { + public static class Types + { + public class Permission : WeDataGetPermissionListResponse.Types.Permission + { + } + } + + /// + /// 获取或设置用户在服务商系统的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("uid")] + [System.Text.Json.Serialization.JsonPropertyName("uid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置是否绑定了微信号。 + /// + [Newtonsoft.Json.JsonProperty("is_bind")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("is_bind")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))] + public bool IsBind { get; set; } + + /// + /// 获取或设置用户微信昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string? Nickname { get; set; } + + /// + /// 获取或设置用户微信头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("head_url")] + [System.Text.Json.Serialization.JsonPropertyName("head_url")] + public string? HeadImageUrl { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置更新建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + public long UpdateTimestamp { get; set; } + + /// + /// 获取或设置用户权限集列表。 + /// + [Newtonsoft.Json.JsonProperty("perm")] + [System.Text.Json.Serialization.JsonPropertyName("perm")] + public Types.Permission[]? PermissionList { get; set; } + } + } + + /// + /// 获取或设置用户绑定信息列表。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public Types.UserInfo[] UserList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigRequest.cs new file mode 100644 index 00000000..13426285 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigRequest.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_set_login_config 接口的请求。 + /// + public class WeDataSetLoginConfigRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置设置类型。 + /// + [Newtonsoft.Json.JsonProperty("set_type")] + [System.Text.Json.Serialization.JsonPropertyName("set_type")] + public int SetType { get; set; } + + /// + /// 获取或设置反查地址。 + /// + [Newtonsoft.Json.JsonProperty("recheck_url")] + [System.Text.Json.Serialization.JsonPropertyName("recheck_url")] + public string? RecheckUrl { get; set; } + + /// + /// 获取或设置关联小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("associate_appid")] + [System.Text.Json.Serialization.JsonPropertyName("associate_appid")] + public IList? AssociatedAppIdList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigResponse.cs new file mode 100644 index 00000000..4f76a71f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetLoginConfigResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_set_login_config 接口的响应。 + /// + public class WeDataSetLoginConfigResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionRequest.cs new file mode 100644 index 00000000..75bacd99 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionRequest.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_set_user_perm 接口的请求。 + /// + public class WeDataSetUserPermissionRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class Permission + { + /// + /// 获取或设置权限集 ID。 + /// + [Newtonsoft.Json.JsonProperty("perm_id")] + [System.Text.Json.Serialization.JsonPropertyName("perm_id")] + public string PermissionId { get; set; } = string.Empty; + + /// + /// 获取或设置权限集名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置权限集描述。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string? Description { get; set; } + } + } + + /// + /// 获取或设置用户在服务商系统的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("uid")] + [System.Text.Json.Serialization.JsonPropertyName("uid")] + public string UserId { get; set; } = string.Empty; + + /// + /// 获取或设置权限集列表。 + /// + [Newtonsoft.Json.JsonProperty("perm")] + [System.Text.Json.Serialization.JsonPropertyName("perm")] + public IList PermissionList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionResponse.cs new file mode 100644 index 00000000..53b00714 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataSetUserPermissionResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_set_user_perm 接口的响应。 + /// + public class WeDataSetUserPermissionResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserRequest.cs new file mode 100644 index 00000000..806c0817 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_unbind_user 接口的请求。 + /// + public class WeDataUnbindUserRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户在服务商系统的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("uid")] + [System.Text.Json.Serialization.JsonPropertyName("uid")] + public string UserId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserResponse.cs new file mode 100644 index 00000000..14d9bfcd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WeData/WeDataUnbindUserResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wedata/wedata_unbind_user 接口的响应。 + /// + public class WeDataUnbindUserResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaComponent/Code/WxaUploadMediaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaComponent/Code/WxaUploadMediaResponse.cs index e8a5f84b..73e759fa 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaComponent/Code/WxaUploadMediaResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaComponent/Code/WxaUploadMediaResponse.cs @@ -15,8 +15,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 获取或设置媒体文件标识。 /// - [Newtonsoft.Json.JsonProperty("media_id")] - [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [Newtonsoft.Json.JsonProperty("mediaid")] + [System.Text.Json.Serialization.JsonPropertyName("mediaid")] public string MediaId { get; set; } = default!; } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetLoginConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetLoginConfigResponse.json new file mode 100644 index 00000000..d56b29e9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetLoginConfigResponse.json @@ -0,0 +1,13 @@ +{ + "errcode": 0, + "errmsg": "OK", + "component_appid": "wxxxxxxxxxxxx", + "component_nickname": "example", + "recheck_url": "url address", + "appinfo": [ + { + "appid": "yyyyyyyyyyyyy", + "nickname": "associate_app" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetPermissionListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetPermissionListResponse.json new file mode 100644 index 00000000..772a0f01 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataGetPermissionListResponse.json @@ -0,0 +1,36 @@ +{ + "errcode": 0, + "errmsg": "OK", + "perm": [ + { + "perm_id": "10000", + "name": "全站全量权限", + "desc": "具备所有模块的所有权限" + }, + { + "perm_id": "10001", + "name": "全站只读权限", + "desc": "具备所有模块的“查看”权限。但没有“创建”、“编辑”、“下载”、“删除”的权限" + }, + { + "perm_id": "10002", + "name": "访问分析权限", + "desc": "除“核心数据(交易)”、“交易分析”、“经营分析”的相关权限" + }, + { + "perm_id": "10003", + "name": "交易分析权限", + "desc": "仅有“核心数据(交易)”、“交易分析”、“经营分析”的相关权限" + }, + { + "perm_id": "10004", + "name": "数据开发权限", + "desc": "仅有“性能质量”、“数据管理”的相关权限" + }, + { + "perm_id": "500000702", + "name": "测试一个新的权限", + "desc": "描述描述描述测试一个新的权限" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginRequest.json new file mode 100644 index 00000000..2a825e41 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginRequest.json @@ -0,0 +1,6 @@ +{ + "user_session": "session_key", + "uid": "test", + "client_ip": "127.0.0.1", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginResponse.json new file mode 100644 index 00000000..715b9940 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataLoginResponse.json @@ -0,0 +1,8 @@ +{ + "base_resp": { + "ret": 0, + "err_msg": "OK" + }, + "redirect_url": "https://wedata.weixin.qq.com/mp2/supplier/login?open_login=1&open_sid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "expire_at": 1663818592 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataQueryBindListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataQueryBindListResponse.json new file mode 100644 index 00000000..ae77bd24 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataQueryBindListResponse.json @@ -0,0 +1,27 @@ +{ + "errcode": 0, + "errmsg": "OK", + "info": [ + { + "uid": "test", + "create_time": 1663728070, + "update_time": 1663728119, + "nickname": "xxx", + "head_url": "http://wx.qlogo.cn/mmhead/xxxxxxxxxxxxxxxxxxxxxxx", + "is_bind": 1, + "perm": [ + { + "perm_id": "10001", + "name": "全站只读权限", + "desc": "具备所有模块的“查看”权限。但没有“创建”、“编辑”、“下载”、“删除”的权限" + } + ] + }, + { + "uid": "example", + "create_time": 1663664719, + "update_time": 1663664941, + "is_bind": 0 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetLoginConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetLoginConfigRequest.json new file mode 100644 index 00000000..90a2ce52 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetLoginConfigRequest.json @@ -0,0 +1,5 @@ +{ + "set_type": 1, + "recheck_url": "xxxxxxxxx", + "associate_appid": [ "xxxxxxxxx" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetUserPermissionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetUserPermissionRequest.json new file mode 100644 index 00000000..21c39fa3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataSetUserPermissionRequest.json @@ -0,0 +1,13 @@ +{ + "uid": "example", + "perm": [ + { + "perm_id": "10001", + "name": "全站只读权限" + }, + { + "perm_id": "10002", + "name": "访问分析权限" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataUnbindUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataUnbindUserRequest.json new file mode 100644 index 00000000..a82a5dd5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WeData/WeDataUnbindUserRequest.json @@ -0,0 +1,3 @@ +{ + "uid": "test" +}