package com.jeesharp.business.modules.finance.merchantsettlement.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 登记商户结算打款请求 DTO。
 *
 * @author jeesharp
 * @since 2026-06-29
 */
@Data
@Schema(description = "登记结算打款请求")
public class MerchantSettlementPayoutCreateDTO {

    @NotBlank(message = "结算单ID不能为空")
    @Schema(description = "结算单ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private String settlementBillId;

    @NotNull(message = "打款金额不能为空")
    @DecimalMin(value = "0.01", message = "打款金额必须大于0")
    @Schema(description = "打款金额（元）", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal payoutAmount;

    @NotBlank(message = "打款方式不能为空")
    @Schema(description = "打款方式：BANK_TRANSFER / WECHAT_OFFLINE / OTHER", requiredMode = Schema.RequiredMode.REQUIRED)
    private String payoutMethod;

    @Schema(description = "打款时间，默认当前时间")
    private LocalDateTime payoutTime;

    @Schema(description = "打款凭证URL")
    private String voucherUrl;

    @Schema(description = "备注")
    private String remarks;
}
