package com.njzscloud.supervisory.order.pojo.dto;

import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
 * 退款请求DTO
 */
@Data
public class RefundRequestDto {
    
    /**
     * 订单ID
     */
    @NotNull(message = "订单ID不能为空")
    private Long orderId;
    
    /**
     * 退款金额（公司退款时使用，微信退款时忽略）
     */
    private BigDecimal refundAmount;
    
    /**
     * 退款原因
     */
    @Size(max = 200, message = "退款原因不能超过200个字符")
    private String reason;
    
    /**
     * 微信支付退款相关参数（仅微信退款时使用）
     */
    private WechatRefundParams wechatRefundParams;
    
    @Data
    public static class WechatRefundParams {
        /**
         * 商户退款单号
         */
        @Size(max = 64, message = "商户退款单号不能超过64个字符")
        private String outRefundNo;
        
        /**
         * 退款资金来源
         */
        private String fundsAccount;
        
        /**
         * 退款结果回调地址
         */
        private String notifyUrl;
    }
}
