using FluentValidation; using TakeoutSaaS.Application.App.Billings.Commands; namespace TakeoutSaaS.Application.App.Billings.Validators; /// /// 一键确认收款命令验证器。 /// public sealed class ConfirmPaymentCommandValidator : AbstractValidator { public ConfirmPaymentCommandValidator() { // 1. 账单 ID 必填 RuleFor(x => x.BillingId) .GreaterThan(0) .WithMessage("账单 ID 必须大于 0"); // 2. 支付金额必须大于 0 RuleFor(x => x.Amount) .GreaterThan(0) .WithMessage("支付金额必须大于 0") .LessThanOrEqualTo(1_000_000_000) .WithMessage("支付金额不能超过 10 亿"); // 3. 支付方式必填 RuleFor(x => x.Method) .IsInEnum() .WithMessage("支付方式无效"); // 4. 交易号必填 RuleFor(x => x.TransactionNo) .NotEmpty() .WithMessage("交易号不能为空") .MaximumLength(64) .WithMessage("交易号不能超过 64 个字符"); // 5. 支付凭证 URL(可选) RuleFor(x => x.ProofUrl) .MaximumLength(500) .WithMessage("支付凭证 URL 不能超过 500 个字符") .When(x => !string.IsNullOrWhiteSpace(x.ProofUrl)); // 6. 备注(可选) RuleFor(x => x.Notes) .MaximumLength(500) .WithMessage("备注不能超过 500 个字符") .When(x => !string.IsNullOrWhiteSpace(x.Notes)); } }