using System.ComponentModel.DataAnnotations; using Tiku.Application.Commerce; namespace Tiku.Api.Contracts; /// /// 创建交易订单请求 DTO。 /// public sealed class CreateCommerceOrderDto { /// /// 套餐 ID。 /// [Required] public Guid PlanId { get; set; } /// /// 数量。 /// [Range(1, 99)] public int Quantity { get; set; } = 1; /// /// 支付方式。 /// [StringLength(50)] public string? PayMethod { get; set; } /// /// 支付渠道。 /// [StringLength(50)] public string? PayProvider { get; set; } /// /// 地区 ID。 /// public Guid? RegionId { get; set; } /// /// 优惠券码。 /// [StringLength(100)] public string? CouponCode { get; set; } /// /// 优惠券领取记录 ID。 /// public Guid? CouponRedemptionId { get; set; } public CreateCommerceOrderCommand ToCommand() { return new CreateCommerceOrderCommand( PlanId, Quantity, PayMethod, PayProvider, RegionId, CouponCode, CouponRedemptionId); } } /// /// 交易订单查询参数。 /// public sealed class CommerceOrderQueryDto { /// /// 返回数量上限。 /// [Range(1, 100)] public int? Limit { get; set; } /// /// 状态。 /// [StringLength(32)] public string? Status { get; set; } } /// /// 创建交易支付请求 DTO。 /// public sealed class CreateCommercePaymentDto { /// /// 订单号。 /// [Required] [StringLength(100)] public string OrderNo { get; set; } = string.Empty; /// /// 服务提供方。 /// [Required] [StringLength(50)] public string Provider { get; set; } = string.Empty; /// /// 方式。 /// [Required] [StringLength(50)] public string Method { get; set; } = string.Empty; /// /// 微信或支付渠道 openid。 /// [StringLength(255)] public string? OpenId { get; set; } /// /// 支付完成返回地址。 /// [StringLength(2048)] public string? ReturnUrl { get; set; } /// /// 支付取消返回地址。 /// [StringLength(2048)] public string? QuitUrl { get; set; } public CreateCommercePaymentCommand ToCommand() { return new CreateCommercePaymentCommand( OrderNo, Provider, Method, OpenId, ReturnUrl, QuitUrl); } } /// /// 交易优惠券查询参数。 /// public sealed class CommerceCouponQueryDto { /// /// 返回数量上限。 /// [Range(1, 100)] public int? Limit { get; set; } /// /// 状态。 /// [StringLength(32)] public string? Status { get; set; } public CommerceCouponQuery ToQuery() { return new CommerceCouponQuery(Limit, Status); } } /// /// 领取交易优惠券请求 DTO。 /// public sealed class ClaimCommerceCouponDto { /// /// 优惠券码。 /// [Required] [StringLength(100)] public string CouponCode { get; set; } = string.Empty; public ClaimCommerceCouponCommand ToCommand() { return new ClaimCommerceCouponCommand(CouponCode); } } /// /// 校验交易优惠券请求 DTO。 /// public sealed class CheckCommerceCouponDto { /// /// 优惠券码。 /// [StringLength(100)] public string? CouponCode { get; set; } /// /// 优惠券领取记录 ID。 /// public Guid? CouponRedemptionId { get; set; } /// /// 套餐 ID。 /// [Required] public Guid PlanId { get; set; } /// /// 数量。 /// [Range(1, 99)] public int Quantity { get; set; } = 1; /// /// 地区 ID。 /// public Guid? RegionId { get; set; } public CheckCommerceCouponCommand ToCommand() { return new CheckCommerceCouponCommand(CouponCode, CouponRedemptionId, PlanId, Quantity, RegionId); } }