package com.crm.rely.backend.core.dto.ucard;

import com.crm.rely.backend.core.dto.base.BaseInfoDto;
import com.crm.rely.backend.core.dto.wasabi.WasabiFieldDto;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class GlobalOrderDto extends BaseInfoDto {

    private Long cId;

    private Long customId;

    /**
     * 手机国际区号。例：+86
     */
    private String areaCode;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 姓(只能是英文，单词之间支持一个英文空格, 长度不能超过64)
     */
    private String lastName;

    /**
     * 名(只能是英文，单词之间支持一个英文空格, 长度不能超过64)
     */
    private String firstName;

    /**
     * 国家
     */
    private String country;

    /**
     * 扣款账号类型 1:卡 2:钱包
     */
    private String deductionAccountType;

    /**
     * 卡号或钱包ID
     */
    private String cardNumber;

    /**
     * 扣款退款状态 1:扣款处理中 2：扣款成功 3: 扣款失败 4:退款处理中 5:退款成功 6:退款失败
     */
    private String deductionAccountStatus;

    /**
     * 扣款订单号
     */
    private String deductionMerchantOrderNo;

    /**
     * 唯一标识
     */
    private String uniqueId;

    /**
     * 商户订单号
     */
    private String merchantOrderNo;

    /**
     * 平台订单号
     */
    private String orderNo;

    /**
     * 扣款金额
     */
    private BigDecimal deductionAmount;

    /**
     * 扣款手续费
     */
    private BigDecimal deductionFee;

    /**
     * 付款币种。只有USD
     */
    private String sendCurrency;

    /**
     * 付款金额。扣用户的账户资金
     */
    private BigDecimal sendAmount;

    /**
     * 平台手续费金额。币种单位sendCurrency
     */
    private BigDecimal fee;

    /**
     * 汇率
     */
    private String exchangeRate;

    /**
     * 交易状态。wait_process=待处理,success=成功,fail=失败,processing=处理中,partner_processing=合作伙伴处理中
     */
    private String status;

    /**
     * 交易状态描述
     */
    private String statusStr;

    /**
     * 合规性检查状态。
     * no_process: 无需合规性检查，
     * pending_check: 待提交合规性检查资料，
     * pending: 合规性检查中，
     * approved: 合规性检查通过，
     * rejected: 合规性检查拒绝
     */
    private String complianceStatus;

    /**
     * 交易失败原因
     */
    private String error;

    /**
     * 转账币种
     */
    private String payoutCurrency;

    /**
     * 转账类型
     */
    private String transferType;

    /**
     * 支付方式
     */
    private String payoutMethod;

    /**
     * 收款金额。收款人收到的金额
     */
    private BigDecimal transferAmount;

    /**
     * 汇款目的
     */
    private String purposeOfRemittance;

    /**
     * 付款人的资金来源
     */
    private String senderSourceOfFund;

    /**
     * 付款人和收款人之间的关系
     */
    private String senderBeneficiaryRelationship;

    /**
     * 交易备注
     */
    private String senderRemark;

    /**
     * 付款人的名字
     */
    private String senderFirstName;

    /**
     * 付款人的姓氏
     */
    private String senderLastName;

    /**
     * 付款人的性别
     */
    private String senderGender;

    /**
     * 付款人的身份证件类型
     */
    private String senderIdType;

    /**
     * 付款人的身份号码
     */
    private String senderIdNumber;

    /**
     * 付款人的国籍
     */
    private String senderNationality;

    /**
     * 付款人的身份证明文件的签发国家/地区
     */
    private String senderIdIssueCountry;

    /**
     * 付款人的出生日期。yyyy-MM-dd
     */
    private String senderDateOfBirth;

    /**
     * 付款人居住国家
     */
    private String senderCountry;

    /**
     * 付款人居住省份/州
     */
    private String senderState;

    /**
     * 付款人的地址区域。付款人的州/省可用于填写此字段
     */
    private String senderRegion;

    /**
     * 付款人居住城市
     */
    private String senderCity;

    /**
     * 付款人居住详细地址
     */
    private String senderAddress;

    /**
     * 付款人邮编
     */
    private String senderZipCode;

    /**
     * 付款人的手机区号
     */
    private String senderMobileAreaCode;

    /**
     * 付款人的手机号
     */
    private String senderMobileNumber;

    /**
     * 付款人的邮箱
     */
    private String senderEmail;

    /**
     * 付款人的职业
     */
    private String senderOccupation;

    /**
     * 收款人的银行ID
     */
    private String receiverBankId;

    /**
     * 收款人的银行账号
     */
    private String receiverBankAccountNumber;

    /**
     * 收款人持有的银行账户类型
     */
    private String receiverBankAccountType;

    /**
     * 美国银行由 9 位 ABA 号码（也称为“路由号码”）标识。 ABA 应适用于 FedACH 付款。
     */
    private String receiverBankCode;

    /**
     * 收款人的银行分行代码
     */
    private String receiverBankBranchCode;

    /**
     * 收款银行帐户所在的区域
     */
    private String receiverBankState;

    /**
     * 收款银行所在城市
     */
    private String receiverBankCity;

    /**
     * 收款人的账户持有人姓名
     */
    private String receiverAccountHolderName;

    /**
     * 收款人的名字
     */
    private String receiverFirstName;

    /**
     * 收款人的姓氏
     */
    private String receiverLastName;

    /**
     * 收款人的性别
     */
    private String receiverGender;

    /**
     * 收款人的身份号码
     */
    private String receiverIdNumber;

    /**
     * 收款人的身份号码类型
     */
    private String receiverIdType;

    /**
     * 收款人的出生日期。yyyy-MM-dd
     */
    private String receiverDateOfBirth;

    /**
     * 收款人的手机号码区号
     */
    private String receiverMobileAreaCode;

    /**
     * 收款人的手机号码
     */
    private String receiverMobileNumber;

    /**
     * 收款人的国籍
     */
    private String receiverNationality;

    /**
     * 收款人的地址。请以收款人的母语提供地址
     */
    private String receiverNativeAddress;

    /**
     * 收款人的母语名字
     */
    private String receiverNativeFirstName;

    /**
     * 收款人的母语姓氏
     */
    private String receiverNativeLastName;

    /**
     * 收款人的职业
     */
    private String receiverOccupation;

    /**
     * 收款人所在地区
     */
    private String receiverRegion;

    /**
     * 收款人所在省份/州
     */
    private String receiverState;

    /**
     * 收款人所在城市
     */
    private String receiverCity;

    /**
     * 收款人的地址
     */
    private String receiverAddress;

    /**
     * 收款人所在地区邮编
     */
    private String receiverZipCode;

    /**
     * 订单创建时间。毫秒时间戳
     */
    private Long createTime;

    /**
     * 订单更新时间。毫秒时间戳
     */
    private Long updateTime;

    private Date approveTime;

    private Long approveUser;

    private String approveDesc;

    /**
     * '审核状态 1:待审核 2审核通过 3:审核失败'
     */
    private Integer approveStatus;

    /**
     * 审核描述中文
     */
    private String approveDescCn;

    /**
     * 汇款目的
     */
    private String purposeOfRemittanceValue;

    /**
     * 付款人的资金来源
     */
    private String senderSourceOfFundValue;

    /**
     * 付款人和收款人之间的关系
     */
    private String senderBeneficiaryRelationshipValue;

    /**
     * 付款人的性别
     */
    private String senderGenderValue;

    /**
     * 付款人的身份证件类型
     */
    private String senderIdTypeValue;

    /**
     * 付款人的国籍
     */
    private String senderNationalityValue;

    /**
     * 付款人的身份证明文件的签发国家/地区
     */
    private String senderIdIssueCountryValue;

    /**
     * 付款人居住国家
     */
    private String senderCountryValue;

    /**
     * 付款人居住省份/州
     */
    private String senderStateValue;

    /**
     * 付款人的地址区域。
     */
    private String senderRegionValue;

    /**
     * 付款人的职业
     */
    private String senderOccupationValue;

    /**
     * 收款人的银行ID
     */
    private String receiverBankIdValue;

    /**
     * 收款人持有的银行账户类型
     */
    private String receiverBankAccountTypeValue;

    /**
     * 收款银行帐户所在的区域
     */
    private String receiverBankStateValue;

    /**
     * 收款银行所在城市
     */
    private String receiverBankCityValue;

    /**
     * 收款人的性别
     */
    private String receiverGenderValue;

    /**
     * 收款人的身份号码类型
     */
    private String receiverIdTypeValue;

    /**
     * 收款人的国籍
     */
    private String receiverNationalityValue;

    /**
     * 收款人的职业
     */
    private String receiverOccupationValue;

    /**
     * 收款人所在地区
     */
    private String receiverRegionValue;

    /**
     * 收款人所在省份/州
     */
    private String receiverStateValue;

    private List<GlobalOrderDataDto> dataDtos;

    private List<WasabiFieldDto> fieldDtos;

} 