package org.springblade.yeePay.entity.saas.account;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springblade.yeePay.common.YeepayApiConstant;

import javax.validation.constraints.NotBlank;

@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@ApiModel("付款到供应商--下单入参")
public class SupplierPayOrderDto {

	@NotBlank
	@ApiModelProperty(value = "发起方商户编号；（标准商户收付款方案中此参数与商编一致，平台商户收付款方案中此参数为平台商商户编号）", required = true)
	private String parentMerchantNo;

	@NotBlank
	@ApiModelProperty(value = "商户编号", required = true)
	private String merchantNo;

	@NotBlank
	@ApiModelProperty(value = "商户请求号", required = true)
	private String requestNo;

	@NotBlank
	@ApiModelProperty(value = "付款金额；单位：元（RMB）", required = true)
	private String orderAmount;

	@NotBlank
	@ApiModelProperty(value = "收款方银行账号", required = true)
	private String receiverAccountNo;

	@NotBlank
	@ApiModelProperty(value = "供应商id", required = true)
	private String supplierId;

	@NotBlank
	@ApiModelProperty(value = "收款方开户行;银行卡所在开户行编号", required = true)
	private String receiverBankCode;

	/**
	 * YeepayApiConstant---bankAccountType
	 * 可选项如下:
	 * DEBIT_CARD:借记卡
	 * CREDIT_CARD:贷记卡
	 * QUASI_CREDIT_CARD:准贷卡
	 * PASSBOOK:存折
	 * UNIT_SETTLE_CARD:单位结算卡
	 * PUBLIC_CARD:对公卡
	 */
	@NotBlank
	@ApiModelProperty(value = "银行账户类型", required = true)
	private YeepayApiConstant.bankAccountType bankAccountType;

	@ApiModelProperty(value = "银行附言;展示在收款银行系统中的附言，由数字、字母、汉字组成（能否成功展示依赖银行系统支持）")
	private String comments;

	/**
	 * YeepayApiConstant---feeSide
	 * 可选项如下:
	 * PAYER:付款方
	 * PAYEE:收款方
	 */
	@ApiModelProperty(value = "手续费承担方")
	private YeepayApiConstant.feeSide feeChargeSide;

	/**
	 * YeepayApiConstant---terminalType
	 * 可选项如下:
	 * PC:电脑
	 * PHONE:手机
	 * PAD:平板
	 * NFC:可穿戴设备
	 * DTV:数字电视
	 * MPOS:条码支付受理终端
	 * OTHER:其他
	 */
	@ApiModelProperty(value = "终端类型")
	private YeepayApiConstant.terminalType terminalType;

	/**
	 * YeepayApiConstant---receiveType
	 * 可选项如下:
	 * REAL_TIME:实时
	 * TWO_HOUR:两小时
	 * NEXT_DAY:隔日
	 */
	@NotBlank
	@ApiModelProperty(value = "到账类型", required = true)
	private YeepayApiConstant.receiveType receiveType;

	@ApiModelProperty(value = "商户通知地址，不传则不通知")
	private String notifyUrl;
}
