package org.springblade.yeePay.entity.saas;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;

/**
 * @author: lianghanqiang
 * @description: 微信实名认证申请单申请
 * @since: 9/16/21 -- 12:14 PM
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("微信实名认证申请单申请")
public class WechatApplyDto {

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

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

	@NotBlank
	@ApiModelProperty(value = "请填写申请人姓名，2~30个中文字符、英文字符、符号。",required = true)
	String applicantName;

	/**
	 *	请填写申请人手机号，
	 * 1、用于接收微信支付的重要管理信息及日常操作验证码。
	 * 2、填写11位数字的手机号码。
	 * */
	@NotBlank
	@ApiModelProperty(value = "申请人手机号",required = true)
	String applicantPhone;

	@NotBlank
	@ApiModelProperty(value = "申请人身份证号码",required = true)
	String applicantIdCard;

	/**
	 *	证书照片，
	 * 主体类型为企业或个体：上传统一信用代码证照片；
	 * 主体类型为事业单位或其他组织：上传登记证书照片；
	 * 小微商户无需填写
	 * */
	@ApiModelProperty(value = "证书照片",required = false)
	String certCopy;

	/**
	 * 注册地址，
	 * 主体类型为企业或个体：请填写营业执照的注册地址；
	 * 主体类型为事业单位或其他组织：请填写登记证书的注册地址。
	 * 小微商户：填门店地址。
	 * */
	@NotBlank
	@ApiModelProperty(value = "请求注册地址",required = true)
	String companyAddress;

	/**
	 * 证书有效期，
	 * 1、非小微商户必填，注意参照示例中的格式，长期用"forever"表示。
	 * 2、结束时间需大于开始时间。
	 * 3、有效期必须大于60天，即结束时间距当前时间需超过60天。
	 * 4、主体类型为企业或个体，证书为营业执照；主体类型为事业单位或其他组织，证书为登记证书。
	 * 示例值：[\"1970-01-01\",\"forever\"]
	 * */
	@ApiModelProperty(value = "证书有效期",required = false)
	String licenceValidDate;

	/**
	 * 单位证明函照片，
	 * 主体类型为事业单位时必填
	 * */
	@ApiModelProperty(value = "单位证明函照片",required = false)
	String companyProveCopy;

	/**
	 * 证书有效期，
	 * 1、非小微商户必填，注意参照示例中的格式，长期用"forever"表示。
	 * 2、结束时间需大于开始时间。
	 * 3、有效期必须大于60天，即结束时间距当前时间需超过60天。
	 * 示例值：[\"1970-01-01\",\"forever\"]
	 * */
	@NotBlank
	@ApiModelProperty(value = "证书有效期",required = true)
	String identificationValidDate;

	@NotBlank
	@ApiModelProperty(value = "法人证件正面照片",required = true)
	String identificationFrontCopy;

	@ApiModelProperty(value = "法人证件反面照片",required = false)
	String identificationBackCopy;

	/**
	 *GONGYI:微信公益
	 * GONGJIAO:微信公缴
	 * XIANXIA:微信线下
	 * BAOXIAN: 微信保险
	 * XIANSHANG:微信线上
	 * OLDLVZHOU:微信老绿洲
	 * LVZHOU:微信绿洲
	 * XIAOYUAN:微信校园
	 * reportFee与channelId二选一必填
	 * */
	@ApiModelProperty(value = "",required = false)
	String reportFee;

	@ApiModelProperty(value = "渠道编号",required = false)
	String channelId;

	/**
	 * IDENTIFICATION_TYPE_IDCARD:身份证（限中国大陆居民)
	 * IDENTIFICATION_TYPE_OVERSEA_PASSPORT:护照（限境外人士)
	 * IDENTIFICATION_TYPE_HONGKONG_PASSPORT :中国香港居民-来往内地通行证
	 * IDENTIFICATION_TYPE_MACAO_PASSPORT:中国澳门居民-来往内地通行证
	 * IDENTIFICATION_TYPE_TAIWAN_PASSPORT:中国台湾居民-来往大陆通行证
	 * */
	@ApiModelProperty(value = "证件类型",required = false)
	String identificationType;

	/**
	 *	小微经营类型，
	 * 小微商户必填
	 * 枚举值：
	 * MICRO_TYPE_STORE：门店场所
	 * MICRO_TYPE_MOBILE：流动经营/便民服务
	 * MICRO_TYPE_ONLINE：线上商品/服务交易
	 **/
	@ApiModelProperty(value = "小微经营类型",required = false)
	String microBizType;

	@NotBlank
	@ApiModelProperty(value = "门店名称，小微商户必填",required = false)
	String storeName;


	@ApiModelProperty(value = "门店省市编码，小微商户必填",required = false)
	String storeAddressCode;

	@NotBlank
	@ApiModelProperty(value = "门店门头照片，小微商户必填",required = false)
	String storeHeaderCopy;

	@NotBlank
	@ApiModelProperty(value = "店内环境照片，小微商户必填",required = false)
	String storeIndoorCopy;
}
