diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipCloseEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipCloseEvent.cs new file mode 100644 index 00000000..174dc05d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipCloseEvent.cs @@ -0,0 +1,31 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_close 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_join_vip.html + /// + public class ChannelsECVipCloseEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class User + { + /// + /// 获取或设置注销时间戳。 + /// + [Newtonsoft.Json.JsonProperty("close_time")] + [System.Text.Json.Serialization.JsonPropertyName("close_time")] + [System.Xml.Serialization.XmlElement("close_time")] + public long CloseTimestamp { get; set; } + } + } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + [System.Xml.Serialization.XmlElement("user_info")] + public Types.User User { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.cs new file mode 100644 index 00000000..e1d03981 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.cs @@ -0,0 +1,40 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_grade_info_update 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/usergrade_update.html + /// + public class ChannelsECVipGradeInfoUpgradeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class User + { + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + [System.Xml.Serialization.XmlElement("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置经验值。 + /// + [Newtonsoft.Json.JsonProperty("experience_value")] + [System.Text.Json.Serialization.JsonPropertyName("experience_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("experience_value")] + public int ExperienceValue { get; set; } + } + } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + [System.Xml.Serialization.XmlElement("user_info")] + public Types.User User { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipJoinEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipJoinEvent.cs new file mode 100644 index 00000000..2fe0d326 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipJoinEvent.cs @@ -0,0 +1,39 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_join 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_join_vip.html + /// + public class ChannelsECVipJoinEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class User + { + /// + /// 获取或设置手机号码。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [System.Xml.Serialization.XmlElement("phone_number")] + public string PhoneNumber { get; set; } = default!; + + /// + /// 获取或设置加入时间戳。 + /// + [Newtonsoft.Json.JsonProperty("join_time")] + [System.Text.Json.Serialization.JsonPropertyName("join_time")] + [System.Xml.Serialization.XmlElement("join_time")] + public long JoinTimestamp { get; set; } + } + } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + [System.Xml.Serialization.XmlElement("user_info")] + public Types.User User { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreExchangeEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreExchangeEvent.cs new file mode 100644 index 00000000..67391cf4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreExchangeEvent.cs @@ -0,0 +1,83 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_score_exchange 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/score/user_score_exchange.html + /// + public class ChannelsECVipScoreExchangeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class Exchange + { + public static class Types + { + public class Coupon + { + /// + /// 获取或设置优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("related_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("related_coupon_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("related_coupon_id")] + public long CouponId { get; set; } + } + + public class Product + { + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("related_product_id")] + [System.Text.Json.Serialization.JsonPropertyName("related_product_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("related_product_id")] + public long CouponId { get; set; } + } + } + + /// + /// 获取或设置兑换类型。 + /// + [Newtonsoft.Json.JsonProperty("score_item_type")] + [System.Text.Json.Serialization.JsonPropertyName("score_item_type")] + [System.Xml.Serialization.XmlElement("score_item_type")] + public int ScoreItemType { get; set; } + + /// + /// 获取或设置兑换积分。 + /// + [Newtonsoft.Json.JsonProperty("pay_score")] + [System.Text.Json.Serialization.JsonPropertyName("pay_score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("pay_score")] + public int PayScore { get; set; } + + /// + /// 获取或设置兑换的优惠券信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_info")] + [System.Xml.Serialization.XmlElement("coupon_info", IsNullable = true)] + public Types.Coupon? Coupon { get; set; } + + /// + /// 获取或设置兑换的商品信息。 + /// + [Newtonsoft.Json.JsonProperty("product_info")] + [System.Text.Json.Serialization.JsonPropertyName("product_info")] + [System.Xml.Serialization.XmlElement("product_info", IsNullable = true)] + public Types.Product? Product { get; set; } + } + } + + /// + /// 获取或设置兑换信息。 + /// + [Newtonsoft.Json.JsonProperty("exchange_info")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_info")] + [System.Xml.Serialization.XmlElement("exchange_info")] + public Types.Exchange Exchange { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreUpdateEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreUpdateEvent.cs new file mode 100644 index 00000000..650448b1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipScoreUpdateEvent.cs @@ -0,0 +1,57 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_score_update 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/score/user_score_update.html + /// + public class ChannelsECVipScoreUpdateEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class User + { + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + [System.Xml.Serialization.XmlElement("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置当前积分。 + /// + [Newtonsoft.Json.JsonProperty("score")] + [System.Text.Json.Serialization.JsonPropertyName("score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("score")] + public int Score { get; set; } + + /// + /// 获取或设置本次改动积分。 + /// + [Newtonsoft.Json.JsonProperty("delta_score")] + [System.Text.Json.Serialization.JsonPropertyName("delta_score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("delta_score")] + public int DeltaScore { get; set; } + + /// + /// 获取或设置流水类型。 + /// + [Newtonsoft.Json.JsonProperty("flow_type")] + [System.Text.Json.Serialization.JsonPropertyName("flow_type")] + [System.Xml.Serialization.XmlElement("flow_type")] + public int FlowType { get; set; } + } + } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + [System.Xml.Serialization.XmlElement("user_info")] + public Types.User User { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipTaskAwardEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipTaskAwardEvent.cs new file mode 100644 index 00000000..2d95e34f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/ChannelsEC/ChannelsECVipTaskAwardEvent.cs @@ -0,0 +1,79 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.channels_ec_vip_task_award 事件的数据。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_finish_task.html + /// + public class ChannelsECVipTaskAwardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable + { + public static class Types + { + public class Task + { + public static class Types + { + public class AwardInfo + { + /// + /// 获取或设置奖励类型。 + /// + [Newtonsoft.Json.JsonProperty("award_type")] + [System.Text.Json.Serialization.JsonPropertyName("award_type")] + [System.Xml.Serialization.XmlElement("award_type")] + public int AwardType { get; set; } + + /// + /// 获取或设置奖励的优惠券 ID。 + /// + [Newtonsoft.Json.JsonProperty("coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("coupon_id", IsNullable = true)] + public long? CouponId { get; set; } + + /// + /// 获取或设置奖励的积分。 + /// + [Newtonsoft.Json.JsonProperty("gain_score")] + [System.Text.Json.Serialization.JsonPropertyName("gain_score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("gain_score", IsNullable = true)] + public int? GainScore { get; set; } + } + } + + /// + /// 获取或设置任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + [System.Xml.Serialization.XmlElement("task_id")] + public long TaskId { get; set; } + + /// + /// 获取或设置任务名称。 + /// + [Newtonsoft.Json.JsonProperty("task_name")] + [System.Text.Json.Serialization.JsonPropertyName("task_name")] + [System.Xml.Serialization.XmlElement("task_name")] + public string TaskName { get; set; } = default!; + + /// + /// 获取或设置奖励信息。 + /// + [Newtonsoft.Json.JsonProperty("award_info")] + [System.Text.Json.Serialization.JsonPropertyName("award_info")] + [System.Xml.Serialization.XmlElement("award_info")] + public Types.AwardInfo AwardInfo { get; set; } = default!; + } + } + + /// + /// 获取或设置任务信息。 + /// + [Newtonsoft.Json.JsonProperty("task_info")] + [System.Text.Json.Serialization.JsonPropertyName("task_info")] + [System.Xml.Serialization.XmlElement("task_info")] + public Types.Task Task { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs index 6f7367cc..7e846470 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs @@ -1811,6 +1811,296 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion + #region ECVip + #region ECVip/ExperienceValue + /// + /// 异步调用 [POST] /channels/ec/vip/experiencevalue/set 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/experiencevalue/set.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipExperienceValueSetAsync(this WechatApiClient client, Models.ChannelsECVipExperienceValueSetRequest 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, "channels", "ec", "vip", "experiencevalue", "set") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region ECVip/Grade + /// + /// 异步调用 [POST] /channels/ec/vip/grade/card/add 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/grade/add.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipGradeCardAddAsync(this WechatApiClient client, Models.ChannelsECVipGradeCardAddRequest 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, "channels", "ec", "vip", "grade", "card", "add") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /channels/ec/vip/grade/card/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/grade/get.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipGradeCardGetAsync(this WechatApiClient client, Models.ChannelsECVipGradeCardGetRequest 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.Get, "channels", "ec", "vip", "grade", "card", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/grade/card/update 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/grade/add.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipGradeCardUpdateAsync(this WechatApiClient client, Models.ChannelsECVipGradeCardUpdateRequest 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, "channels", "ec", "vip", "grade", "card", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region ECVip/Score + /// + /// 异步调用 [POST] /channels/ec/vip/score/set 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/set_conf.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipScoreSetAsync(this WechatApiClient client, Models.ChannelsECVipScoreSetRequest 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, "channels", "ec", "vip", "score", "set") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /channels/ec/vip/score/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/get_conf.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipScoreGetAsync(this WechatApiClient client, Models.ChannelsECVipScoreGetRequest 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.Get, "channels", "ec", "vip", "score", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region ECVip/User + /// + /// 异步调用 [POST] /channels/ec/vip/user/info/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/member/get.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserInfoGetAsync(this WechatApiClient client, Models.ChannelsECVipUserInfoGetRequest 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, "channels", "ec", "vip", "user", "info", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/list/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/member/get_list.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserListGetAsync(this WechatApiClient client, Models.ChannelsECVipUserListGetRequest 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, "channels", "ec", "vip", "user", "list", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/experiencevalue/update 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/experiencevalue/update_user.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserExperienceValueUpdateAsync(this WechatApiClient client, Models.ChannelsECVipUserExperienceValueUpdateRequest 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, "channels", "ec", "vip", "user", "experiencevalue", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/grade/update 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/grade/update_user.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserGradeUpdateAsync(this WechatApiClient client, Models.ChannelsECVipUserGradeUpdateRequest 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, "channels", "ec", "vip", "user", "grade", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/score/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/get_user_score.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserScoreGetAsync(this WechatApiClient client, Models.ChannelsECVipUserScoreGetRequest 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, "channels", "ec", "vip", "user", "score", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/score/flowrecord/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/get_user_flow_record.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserScoreFlowRecordGetAsync(this WechatApiClient client, Models.ChannelsECVipUserScoreFlowRecordGetRequest 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, "channels", "ec", "vip", "user", "score", "flowrecord", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/score/increase 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/incr_user_score.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserScoreIncreaseAsync(this WechatApiClient client, Models.ChannelsECVipUserScoreIncreaseRequest 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, "channels", "ec", "vip", "user", "score", "increase") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/vip/user/score/decrease 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/vip/score/incr_user_score.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECVipUserScoreDecreaseAsync(this WechatApiClient client, Models.ChannelsECVipUserScoreDecreaseRequest 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, "channels", "ec", "vip", "user", "score", "decrease") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + #endregion + #region ECFunds /// /// 异步调用 [POST] /channels/ec/funds/getbalance 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.cs new file mode 100644 index 00000000..6e725277 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.cs @@ -0,0 +1,80 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/experiencevalue/set 接口的请求。 + /// + public class ChannelsECVipExperienceValueSetRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class Config + { + public static class Types + { + public class PayAmountRule + { + /// + /// 获取或设置消费金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("pay_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pay_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? PayAmount { get; set; } + + /// + /// 获取或设置消费门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_floor")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_floor")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? PayAmountFloor { get; set; } + + /// + /// 获取或设置获得的经验值。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? GainExperienceValue { get; set; } + } + + public class PayTimesRule + { + /// + /// 获取或设置获得的经验值。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? GainExperienceValue { get; set; } + } + } + + /// + /// 获取或设置消费金额规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_rule")] + public Types.PayAmountRule? PayAmountRule { get; set; } + + /// + /// 获取或设置消费次数规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_time_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_time_rule")] + public Types.PayTimesRule? PayTimesRule { get; set; } + } + } + + /// + /// 获取或设置配置信息。 + /// + [Newtonsoft.Json.JsonProperty("conf")] + [System.Text.Json.Serialization.JsonPropertyName("conf")] + public Types.Config Config { get; set; } = new Types.Config(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetResponse.cs new file mode 100644 index 00000000..2d3a5198 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/experiencevalue/set 接口的响应。 + /// + public class ChannelsECVipExperienceValueSetResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.cs new file mode 100644 index 00000000..dca5eb71 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.cs @@ -0,0 +1,40 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/grade/card/add 接口的请求。 + /// + public class ChannelsECVipGradeCardAddRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置会员等级名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置经验值门槛。 + /// + [Newtonsoft.Json.JsonProperty("experience_value_threshold")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("experience_value_threshold")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int ExperienceValueThreshold { get; set; } + + /// + /// 获取或设置经验值倍数(×10)。 + /// + [Newtonsoft.Json.JsonProperty("experience_value_multiple")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("experience_value_multiple")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int ExperienceValueMultiple { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddResponse.cs new file mode 100644 index 00000000..fdf6799a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardAddResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/grade/card/add 接口的响应。 + /// + public class ChannelsECVipGradeCardAddResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetRequest.cs new file mode 100644 index 00000000..020f9a09 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /channels/ec/vip/grade/card/get 接口的请求。 + /// + public class ChannelsECVipGradeCardGetRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.cs new file mode 100644 index 00000000..9d471686 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.cs @@ -0,0 +1,169 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /channels/ec/vip/grade/card/get 接口的响应。 + /// + public class ChannelsECVipGradeCardGetResponse : WechatApiResponse + { + public static class Types + { + public class Data + { + public static class Types + { + public class ExperienceValueConfig + { + public static class Types + { + public class PayAmountRule + { + /// + /// 获取或设置消费金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("pay_value")] + [System.Text.Json.Serialization.JsonPropertyName("pay_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? PayAmount { get; set; } + + /// + /// 获取或设置消费门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_floor")] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_floor")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? PayAmountFloor { get; set; } + + /// + /// 获取或设置获得的经验值。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? GainExperienceValue { get; set; } + } + + public class PayTimesRule + { + /// + /// 获取或设置获得的经验值。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? GainExperienceValue { get; set; } + } + } + + /// + /// 获取或设置消费金额规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_rule")] + public Types.PayAmountRule? PayAmountRule { get; set; } + + /// + /// 获取或设置消费次数规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_time_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_time_rule")] + public Types.PayTimesRule? PayTimesRule { get; set; } + } + + public class GradeCardConfig + { + public static class Types + { + public class GradeCard + { + public static class Types + { + public class AuditInfo + { + /// + /// 获取或设置审核状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置最新会员等级名称。 + /// + [Newtonsoft.Json.JsonProperty("latest_name")] + [System.Text.Json.Serialization.JsonPropertyName("latest_name")] + public string? LatestName { get; set; } + } + } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置会员等级名称。 + /// + [Newtonsoft.Json.JsonProperty("valid_name")] + [System.Text.Json.Serialization.JsonPropertyName("valid_name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置经验值门槛。 + /// + [Newtonsoft.Json.JsonProperty("experience_value_threshold")] + [System.Text.Json.Serialization.JsonPropertyName("experience_value_threshold")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int ExperienceValueThreshold { get; set; } + + /// + /// 获取或设置经验值倍数(×10)。 + /// + [Newtonsoft.Json.JsonProperty("experience_value_multiple")] + [System.Text.Json.Serialization.JsonPropertyName("experience_value_multiple")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int ExperienceValueMultiple { get; set; } + + /// + /// 获取或设置审核信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_info")] + [System.Text.Json.Serialization.JsonPropertyName("audit_info")] + public Types.AuditInfo? AuditInfo { get; set; } + } + } + + /// + /// 获取或设置会员等级列表。 + /// + [Newtonsoft.Json.JsonProperty("grade_card_list")] + [System.Text.Json.Serialization.JsonPropertyName("grade_card_list")] + public Types.GradeCard[] GradeCardList { get; set; } = default!; + } + } + + /// + /// 获取或设置经验值配置信息。 + /// + [Newtonsoft.Json.JsonProperty("experience_value_conf")] + [System.Text.Json.Serialization.JsonPropertyName("experience_value_conf")] + public Types.ExperienceValueConfig? ExperienceValueConfig { get; set; } + + /// + /// 获取或设置会员等级配置信息。 + /// + [Newtonsoft.Json.JsonProperty("card_conf")] + [System.Text.Json.Serialization.JsonPropertyName("card_conf")] + public Types.GradeCardConfig? GradeCardConfig { get; set; } + } + } + + /// + /// 获取或设置返回数据。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public Types.Data Data { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.cs new file mode 100644 index 00000000..b09e5354 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/grade/card/update 接口的请求。 + /// + public class ChannelsECVipGradeCardUpdateRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置会员等级名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateResponse.cs new file mode 100644 index 00000000..e0e1a3b7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/grade/card/update 接口的响应。 + /// + public class ChannelsECVipGradeCardUpdateResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetRequest.cs new file mode 100644 index 00000000..ab17e196 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /channels/ec/vip/score/get 接口的请求。 + /// + public class ChannelsECVipScoreGetRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.cs new file mode 100644 index 00000000..acb61dc3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.cs @@ -0,0 +1,108 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /channels/ec/vip/score/get 接口的响应。 + /// + public class ChannelsECVipScoreGetResponse : WechatApiResponse + { + public static class Types + { + public class Config + { + public static class Types + { + public class GainRule + { + public static class Types + { + public class PayAmountRule + { + /// + /// 获取或设置消费积分。 + /// + [Newtonsoft.Json.JsonProperty("pay_value")] + [System.Text.Json.Serialization.JsonPropertyName("pay_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? PayValue { get; set; } + } + + public class PayTimesRule + { + /// + /// 获取或设置获得积分。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? GainValue { get; set; } + } + } + + /// + /// 获取或设置消费金额规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_rule")] + public Types.PayAmountRule? PayAmountRule { get; set; } + + /// + /// 获取或设置消费次数规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_time_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_time_rule")] + public Types.PayTimesRule? PayTimesRule { get; set; } + } + + public class DeductRule + { + /// + /// 获取或设置是否开启。 + /// + [Newtonsoft.Json.JsonProperty("open_mgr")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("open_mgr")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))] + public bool IsOpen { get; set; } + + /// + /// 获取或设置抵扣比例(单位:百分数)。 + /// + [Newtonsoft.Json.JsonProperty("ratio")] + [System.Text.Json.Serialization.JsonPropertyName("ratio")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? Ratio { get; set; } + + /// + /// 获取或设置抵扣上限。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int? Limit { get; set; } + } + } + + /// + /// 获取或设置获取规则信息。 + /// + [Newtonsoft.Json.JsonProperty("gain_rule")] + [System.Text.Json.Serialization.JsonPropertyName("gain_rule")] + public Types.GainRule? GainRule { get; set; } + + /// + /// 获取或设置抵扣规则信息。 + /// + [Newtonsoft.Json.JsonProperty("deduct_rule")] + [System.Text.Json.Serialization.JsonPropertyName("deduct_rule")] + public Types.DeductRule? DeductRule { get; set; } + } + } + + /// + /// 获取或设置配置信息。 + /// + [Newtonsoft.Json.JsonProperty("conf")] + [System.Text.Json.Serialization.JsonPropertyName("conf")] + public Types.Config Config { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.cs new file mode 100644 index 00000000..477e6eab --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.cs @@ -0,0 +1,112 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/score/set 接口的请求。 + /// + public class ChannelsECVipScoreSetRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class Config + { + public static class Types + { + public class GainRule + { + public static class Types + { + public class PayAmountRule + { + /// + /// 获取或设置消费积分。 + /// + [Newtonsoft.Json.JsonProperty("pay_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pay_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? PayValue { get; set; } + } + + public class PayTimesRule + { + /// + /// 获取或设置获得积分。 + /// + [Newtonsoft.Json.JsonProperty("gain_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("gain_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? GainValue { get; set; } + } + } + + /// + /// 获取或设置消费金额规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_amount_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_amount_rule")] + public Types.PayAmountRule? PayAmountRule { get; set; } + + /// + /// 获取或设置消费次数规则信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_time_rule")] + [System.Text.Json.Serialization.JsonPropertyName("pay_time_rule")] + public Types.PayTimesRule? PayTimesRule { get; set; } + } + + public class DeductRule + { + /// + /// 获取或设置是否开启。 + /// + [Newtonsoft.Json.JsonProperty("open_mgr")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("open_mgr")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))] + public bool IsOpen { get; set; } + + /// + /// 获取或设置抵扣比例(单位:百分数)。 + /// + [Newtonsoft.Json.JsonProperty("ratio")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("ratio")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? Ratio { get; set; } + + /// + /// 获取或设置抵扣上限。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualNullableIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int? Limit { get; set; } + } + } + + /// + /// 获取或设置获取规则信息。 + /// + [Newtonsoft.Json.JsonProperty("gain_rule")] + [System.Text.Json.Serialization.JsonPropertyName("gain_rule")] + public Types.GainRule? GainRule { get; set; } + + /// + /// 获取或设置抵扣规则信息。 + /// + [Newtonsoft.Json.JsonProperty("deduct_rule")] + [System.Text.Json.Serialization.JsonPropertyName("deduct_rule")] + public Types.DeductRule? DeductRule { get; set; } + } + } + + /// + /// 获取或设置配置信息。 + /// + [Newtonsoft.Json.JsonProperty("conf")] + [System.Text.Json.Serialization.JsonPropertyName("conf")] + public Types.Config Config { get; set; } = new Types.Config(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetResponse.cs new file mode 100644 index 00000000..8fa8de73 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/Score/ChannelsECVipScoreSetResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/score/set 接口的响应。 + /// + public class ChannelsECVipScoreSetResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.cs new file mode 100644 index 00000000..d93fefcb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.cs @@ -0,0 +1,24 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/experiencevalue/update 接口的请求。 + /// + public class ChannelsECVipUserExperienceValueUpdateRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置经验值。 + /// + [Newtonsoft.Json.JsonProperty("experience_value")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualIntegerConverter))] + [System.Text.Json.Serialization.JsonPropertyName("experience_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int ExperienceValue { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateResponse.cs new file mode 100644 index 00000000..e74ed270 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/experiencevalue/update 接口的响应。 + /// + public class ChannelsECVipUserExperienceValueUpdateResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.cs new file mode 100644 index 00000000..5fbba94b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/grade/update 接口的请求。 + /// + public class ChannelsECVipUserGradeUpdateRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + public int Grade { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateResponse.cs new file mode 100644 index 00000000..464fb382 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserGradeUpdateResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/grade/update 接口的响应。 + /// + public class ChannelsECVipUserGradeUpdateResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.cs new file mode 100644 index 00000000..75db0cb1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/info/get 接口的请求。 + /// + public class ChannelsECVipUserInfoGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置是否需要获取手机号码。 + /// + [Newtonsoft.Json.JsonProperty("need_phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("need_phone_number")] + public bool? RequirePhoneNumber { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.cs new file mode 100644 index 00000000..5d2fe700 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/info/get 接口的响应。 + /// + public class ChannelsECVipUserInfoGetResponse : WechatApiResponse + { + public static class Types + { + public class VipInfo : ChannelsECVipUserListGetResponse.Types.VipInfo + { + } + } + + /// + /// 获取或设置会员信息。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public Types.VipInfo VipInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetRequest.cs new file mode 100644 index 00000000..ec9c8095 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetRequest.cs @@ -0,0 +1,31 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/list/get 接口的请求。 + /// + public class ChannelsECVipUserListGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置是否需要获取手机号码。 + /// + [Newtonsoft.Json.JsonProperty("need_phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("need_phone_number")] + public bool? RequirePhoneNumber { get; set; } + + /// + /// 获取或设置分页页数。 + /// 默认值:1 + /// + [Newtonsoft.Json.JsonProperty("page_num")] + [System.Text.Json.Serialization.JsonPropertyName("page_num")] + public int Page { get; set; } = 1; + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetResponse.cs new file mode 100644 index 00000000..2ed66042 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserListGetResponse.cs @@ -0,0 +1,87 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/list/get 接口的响应。 + /// + public class ChannelsECVipUserListGetResponse : WechatApiResponse + { + public static class Types + { + public class VipInfo + { + public static class Types + { + public class UserInfo + { + /// + /// 获取或设置手机号码。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + public string PhoneNumber { get; set; } = default!; + } + + public class UserGradeInfo + { + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("grade")] + [System.Text.Json.Serialization.JsonPropertyName("grade")] + public int Grade { get; set; } + + /// + /// 获取或设置经验值。 + /// + [Newtonsoft.Json.JsonProperty("experience_value")] + [System.Text.Json.Serialization.JsonPropertyName("experience_value")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int ExperienceValue { get; set; } + } + } + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置用户的 UnionId。 + /// + [Newtonsoft.Json.JsonProperty("unionid")] + [System.Text.Json.Serialization.JsonPropertyName("unionid")] + public string? UnionId { get; set; } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("user_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_info")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置用户等级信息。 + /// + [Newtonsoft.Json.JsonProperty("user_grade_info")] + [System.Text.Json.Serialization.JsonPropertyName("user_grade_info")] + public Types.UserGradeInfo? UserGradeInfo { get; set; } + } + } + + /// + /// 获取或设置会员列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.VipInfo[] VipList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.cs new file mode 100644 index 00000000..8a67386a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/decrease 接口的请求。 + /// + public class ChannelsECVipUserScoreDecreaseRequest : ChannelsECVipUserScoreIncreaseRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseResponse.cs new file mode 100644 index 00000000..25d22cc4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/decrease 接口的响应。 + /// + public class ChannelsECVipUserScoreDecreaseResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.cs new file mode 100644 index 00000000..4e7c8a0f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.cs @@ -0,0 +1,31 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/flowrecord/get 接口的请求。 + /// + public class ChannelsECVipUserScoreFlowRecordGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置分页页数。 + /// 默认值:1 + /// + [Newtonsoft.Json.JsonProperty("page_num")] + [System.Text.Json.Serialization.JsonPropertyName("page_num")] + public int Page { get; set; } = 1; + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.cs new file mode 100644 index 00000000..d5ce9cc0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/flowrecord/get 接口的响应。 + /// + public class ChannelsECVipUserScoreFlowRecordGetResponse : WechatApiResponse + { + public static class Types + { + public class FlowRecord + { + /// + /// 获取或设置用户积分。 + /// + [Newtonsoft.Json.JsonProperty("score")] + [System.Text.Json.Serialization.JsonPropertyName("score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int Score { get; set; } + + /// + /// 获取或设置来源。 + /// + [Newtonsoft.Json.JsonProperty("source")] + [System.Text.Json.Serialization.JsonPropertyName("source")] + public int Source { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + } + } + + /// + /// 获取或设置积分流水列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.FlowRecord[] FlowRecordList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.cs new file mode 100644 index 00000000..67f0464a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/get 接口的请求。 + /// + public class ChannelsECVipUserScoreGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.cs new file mode 100644 index 00000000..2590368d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/get 接口的响应。 + /// + public class ChannelsECVipUserScoreGetResponse : WechatApiResponse + { + public static class Types + { + public class UserInfo + { + /// + /// 获取或设置用户积分。 + /// + [Newtonsoft.Json.JsonProperty("score")] + [System.Text.Json.Serialization.JsonPropertyName("score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int Score { get; set; } + } + } + + /// + /// 获取或设置用户信息。 + /// + [Newtonsoft.Json.JsonProperty("info")] + [System.Text.Json.Serialization.JsonPropertyName("info")] + public Types.UserInfo UserInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.cs new file mode 100644 index 00000000..fb47d8b9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.cs @@ -0,0 +1,37 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/increase 接口的请求。 + /// + public class ChannelsECVipUserScoreIncreaseRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置用户积分。 + /// + [Newtonsoft.Json.JsonProperty("score")] + [System.Text.Json.Serialization.JsonPropertyName("score")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] + public int Score { get; set; } + + /// + /// 获取或设置请求唯一 ID。 + /// + [Newtonsoft.Json.JsonProperty("request_id")] + [System.Text.Json.Serialization.JsonPropertyName("request_id")] + public string RequestId { get; set; } = string.Empty; + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseResponse.cs new file mode 100644 index 00000000..0dfc26f1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/vip/user/score/increase 接口的响应。 + /// + public class ChannelsECVipUserScoreIncreaseResponse : WechatApiResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipCloseEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipCloseEvent.json new file mode 100644 index 00000000..d161311f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipCloseEvent.json @@ -0,0 +1,10 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_close", + "user_info": { + "close_time": 1662480000 + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.json new file mode 100644 index 00000000..dae84a7b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipGradeInfoUpgradeEvent.json @@ -0,0 +1,11 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_grade_info_update", + "user_info": { + "grade": 2, + "experience_value": 100 + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipJoinEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipJoinEvent.json new file mode 100644 index 00000000..c6f6dfc2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipJoinEvent.json @@ -0,0 +1,11 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_join", + "user_info": { + "join_time": 1662480000, + "phone_number": "123456789" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreExchangeEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreExchangeEvent.json new file mode 100644 index 00000000..b8da8c1d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreExchangeEvent.json @@ -0,0 +1,17 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_score_exchange", + "exchange_info": { + "pay_score": 100, + "score_item_type": 1, + "coupon_info": { + "related_coupon_id": 1234 + }, + "product_info": { + "related_product_id": 1234 + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreUpdateEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreUpdateEvent.json new file mode 100644 index 00000000..62948a8b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipScoreUpdateEvent.json @@ -0,0 +1,12 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_score_update", + "user_info": { + "score": 100, + "delta_score": -10, + "flow_type": 3 + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipTaskAwardEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipTaskAwardEvent.json new file mode 100644 index 00000000..3d58716c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/ChannelsEC/ChannelsECVipTaskAwardEvent.json @@ -0,0 +1,16 @@ +{ + "ToUserName": "gh_*", + "FromUserName": "OPENID", + "CreateTime": 1662480000, + "MsgType": "event", + "Event": "channels_ec_vip_task_award", + "task_info": { + "task_id": 123, + "task_name": "任务名称", + "award_info": { + "award_type": 1, + "coupon_id": 1234, + "gain_score": 100 + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.json new file mode 100644 index 00000000..2be5deb6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/ExperienceValue/ChannelsECVipExperienceValueSetRequest.json @@ -0,0 +1,12 @@ +{ + "conf": { + "pay_amount_rule": { + "pay_value": "100", + "gain_value": "1", + "pay_amount_floor": "100" + }, + "pay_time_rule": { + "gain_value": "1" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.json new file mode 100644 index 00000000..a1dd575f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardAddRequest.json @@ -0,0 +1,6 @@ +{ + "grade": 1, + "name": "VIP1", + "experience_value_threshold": "100", + "experience_value_multiple": 10 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.json new file mode 100644 index 00000000..ff8814d7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardGetResponse.json @@ -0,0 +1,40 @@ +{ + "errcode": 0, + "errmsg": "ok", + "info": { + "experience_value_conf": { + "pay_amount_rule": { + "pay_value": "100", + "gain_value": "1", + "pay_amount_floor": "100" + }, + "pay_time_rule": { + "gain_value": "1" + } + }, + "card_conf": { + "grade_card_list": [ + { + "grade": 1, + "valid_name": "VIP1", + "experience_value_threshold": "100", + "experience_value_multiple": 10, + "audit_info": { + "latest_name": "VIP1", + "status": 1 + } + }, + { + "grade": 2, + "valid_name": "VIP2", + "experience_value_threshold": "200", + "experience_value_multiple": 12, + "audit_info": { + "latest_name": "高级会员", + "status": 0 + } + } + ] + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.json new file mode 100644 index 00000000..16c6ea54 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Grade/ChannelsECVipGradeCardUpdateRequest.json @@ -0,0 +1,4 @@ +{ + "grade": 1, + "name": "VIP1" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.json new file mode 100644 index 00000000..489eb76d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreGetResponse.json @@ -0,0 +1,19 @@ +{ + "errcode": 0, + "errmsg": "ok", + "conf": { + "gain_rule": { + "pay_amount_rule": { + "pay_value": "100" + }, + "pay_time_rule": { + "gain_value": "1" + } + }, + "deduct_rule": { + "open_mgr": 1, + "ratio": "100", + "limit": "100" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.json new file mode 100644 index 00000000..2b1eaec5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/Score/ChannelsECVipScoreSetRequest.json @@ -0,0 +1,17 @@ +{ + "conf": { + "gain_rule": { + "pay_amount_rule": { + "pay_value": "100" + }, + "pay_time_rule": { + "gain_value": "1" + } + }, + "deduct_rule": { + "open_mgr": 1, + "ratio": "100", + "limit": "100" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.json new file mode 100644 index 00000000..9ea24733 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserExperienceValueUpdateRequest.json @@ -0,0 +1,4 @@ +{ + "openid": "OPENID", + "experience_value": "100" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.json new file mode 100644 index 00000000..456af3b3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserGradeUpdateRequest.json @@ -0,0 +1,4 @@ +{ + "openid": "OPENID", + "grade": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.json new file mode 100644 index 00000000..12d92daa --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetRequest.json @@ -0,0 +1,4 @@ +{ + "openid": "OPENID", + "need_phone_number": true +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.json new file mode 100644 index 00000000..002daf53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserInfoGetResponse.json @@ -0,0 +1,15 @@ +{ + "errcode": 0, + "errmsg": "ok", + "info": { + "openid": "OPENID", + "unionid": "UNIONID", + "user_info": { + "phone_number": "123456789" + }, + "user_grade_info": { + "grade": 1, + "experience_value": "100" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetRequest.json new file mode 100644 index 00000000..6dfd9877 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetRequest.json @@ -0,0 +1,5 @@ +{ + "need_phone_number": true, + "page_num": 1, + "page_size": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetResponse.json new file mode 100644 index 00000000..6d527371 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserListGetResponse.json @@ -0,0 +1,18 @@ +{ + "errcode": 0, + "errmsg": "ok", + "list": [ + { + "openid": "OPENID", + "unionid": "UNIONID", + "user_info": { + "phone_number": "123456789" + }, + "user_grade_info": { + "grade": 1, + "experience_value": "100" + } + } + ], + "total_num": 100 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.json new file mode 100644 index 00000000..b7ac93af --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreDecreaseRequest.json @@ -0,0 +1,6 @@ +{ + "openid": "OPENID", + "score": "100", + "remark": "备注", + "request_id": "REQUEST_ID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.json new file mode 100644 index 00000000..1835dc3a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetRequest.json @@ -0,0 +1,5 @@ +{ + "openid": "OPENID", + "page_num": 1, + "page_size": 200 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.json new file mode 100644 index 00000000..06553262 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreFlowRecordGetResponse.json @@ -0,0 +1,12 @@ +{ + "errcode": 0, + "errmsg": "ok", + "list": [ + { + "score": "100", + "source": 1, + "remark": "备注" + } + ], + "total_num": 100 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.json new file mode 100644 index 00000000..af7ee63b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetRequest.json @@ -0,0 +1,3 @@ +{ + "openid": "OPENID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.json new file mode 100644 index 00000000..94bffe6c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreGetResponse.json @@ -0,0 +1,7 @@ +{ + "errcode": 0, + "errmsg": "ok", + "info": { + "score": "100" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.json new file mode 100644 index 00000000..b7ac93af --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECVip/User/ChannelsECVipUserScoreIncreaseRequest.json @@ -0,0 +1,6 @@ +{ + "openid": "OPENID", + "score": "100", + "remark": "备注", + "request_id": "REQUEST_ID" +}