# SaveCaseDTO.java

    package cloud.wconnect.finance.pojo.dto.chargeback;

    import cloud.wconnect.commonlib.annotation.validator.DigitsCustom;
    import lombok.Data;
    import org.hibernate.validator.constraints.Length;

    import jakarta.validation.constraints.NotBlank;
    import jakarta.validation.constraints.NotNull;
    import java.math.BigDecimal;

    /**
     * DTO类：Save Case
     *
     * @author yyt
     * @date 2023/9/8
     */
    @Data
    public class SaveCaseDTO {

        /**
         * case number
         */
        @NotBlank(message = "the caseNumber cannot be blank")
        @Length(max = 30, message = "the caseNumber is limited 30 characters")
        private String caseNumber;

        /**
         * 银行平台
         */
        @NotNull(message = "the vendor cannot be null")
        private Integer vendor;

        /**
         * 信用卡类型
         */
        @NotNull(message = "the cardType cannot be null")
        @Length(max = 20, message = "the cardType is limited 20 characters")
        private String cardType;

        /**
         * 开始日期（手动新增时）
         */
        @NotNull(message = "issue date cannot be null")
        private Long issueDate;
        /**
         * 到期日期（手动新增时）
         */
        @NotNull(message = "due date cannot be null")
        private Long dueDate;

        /**
         * Chargeback Type
         */
        @Length(max = 100, message = "The chargebackType is limited 100 characters")
        private String chargebackType;

        /**
         * Card Present
         */
        @NotNull(message = "the cardPresent must not be null")
        @Length(max = 200, message = "The cardPresent is limited 200 characters")
        private String cardPresent;

        /**
         * Auth Code
         */
        @NotNull(message = "the authCode must not be null")
        @Length(max = 100, message = "The authCode is limited 100 characters")
        private String authCode;

        /**
         * 银行有无退款
         */
        @NotNull(message = "the nonChargeback cannot be null")
        private Boolean nonChargeback;

        /**
         * 客人的名
         */
        @NotBlank(message = "the guestFirstName cannot be blank")
        @Length(max = 30, message = "the guestFirstName is limited 30 characters")
        private String guestFirstName;

        /**
         * 客人的姓
         */
        @NotBlank(message = "the guestLastName cannot be blank")
        @Length(max = 30, message = "the guestLastName is limited 30 characters")
        private String guestLastName;

        /**
         * Room Number
         */
        @NotBlank(message = "the roomNumber cannot be blank")
        @Length(max = 8, message = "the roomNumber is limited 8 characters")
        private String roomNumber;

        /**
         * 入住日期
         */
        @NotNull(message = "checkInDate cannot be null")
        private Long checkInDate;

        /**
         * 离店日期
         */
        @NotNull(message = "checkOutDate cannot be null")
        private Long checkOutDate;

        /**
         * Folio/Conf./CRS Number
         */
        @NotBlank(message = "the folioNumber cannot be blank")
        @Length(max = 30, message = "the folioNumber is limited 30 characters")
        private String folioNumber;

        /**
         * 信用卡号
         */
        @NotBlank(message = "the cardNumber cannot be blank")
        @Length(max = 30, message = "the cardNumber is limited 30 characters")
        private String cardNumber;
        public String getCardNumber() {
            return this.cardNumber.trim();
        }

        /**
         * 交易日期（手动新增或编辑时）
         */
        @NotNull(message = "the trxDate cannot be null")
        private Long trxDate;

        /**
         * 交易金额
         */
        @NotNull(message = "the trxAmount cannot be null")
        @DigitsCustom(integer = 8, message = "The trxAmount is wrong format")
        private BigDecimal trxAmount;

        /**
         * 纠纷金额
         */
        @NotNull(message = "the disputeAmount cannot be null")
        @DigitsCustom(integer = 8, message = "The disputeAmount is wrong format")
        private BigDecimal disputeAmount;

        /**
         * 纠纷金额明细([{trxDesc:xxx,amount:xxx},...])
         */
        @NotBlank(message = "the disputeAmountItems cannot be blank")
        @Length(max = 2000, message = "the disputeAmountItems is limited 2000 characters")
        private String disputeAmountItems;

        /**
         * 原因
         */
        @NotNull(message = "the reason cannot be null")
        @Length(max = 500, message = "the reason is limited 500 characters")
        private String reason;

        /**
         * 真实原因
         */
        @NotNull(message = "the actualReason cannot be null")
        @Length(max = 500, message = "the actualReason is limited 500 characters")
        private String actualReason;

        /**
         * Market Segment
         */
        @NotBlank(message = "the marketSegment cannot be blank")
        @Length(max = 500, message = "the marketSegment is limited 500 characters")
        private String marketSegment;

        /**
         * 附件集合，默认【】
         */
        @NotBlank(message = "attachments cannot be blank")
        @Length(max = 1500, message = "the attachments is limited 1500 characters")
        private String attachments;

        /**
         * 备注说明
         */
        @NotNull(message = "the comment cannot be null")
        @Length(max = 2000, message = "the comment is limited 2000 characters")
        private String comment;

        /**
         * 电话
         */
        @Length(max = 100, message = "the phone is limited 100 characters")
        private String phone;

        /**
         * 地址
         */
        @Length(max = 500, message = "the address is limited 500 characters")
        private String address;

        /**
         * 会员卡号
         */
        @Length(max = 100, message = "the memberCardNum is limited 100 characters")
        private String memberCardNum;

        /**
         * 邮箱
         */
        @Length(max = 100, message = "the email is limited 100 characters")
        private String email;

    }