/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.guosen.bussinessInfo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.springblade.core.mp.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotNull;

/**
 * 实体类
 *
 * @author BladeX
 * @since 2021-09-22
 */
@Data
@TableName("cyzh_bussiness_info")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "BussinessInfo对象", description = "BussinessInfo对象")
public class BussinessInfo extends BaseEntity {

	private static final long serialVersionUID = 1L;

	/**
	* 本平台商户ID
	*/
		@ApiModelProperty(value = "本平台商户ID")
		private Long bussinessId;

	@ApiModelProperty(value = "第三方商户号")
	private String merchantNo;

	@ApiModelProperty(value = "上级商户号")
	private String parentMerchantNo;

	/**
	 * ORDINARY_MERCHANT:标准商户
	 * PLATFORM_MERCHANT:平台商
	 * SETTLED_MERCHANT:入驻商户
	 * SHARE_MERCHANT:分账接收方（仅允许开通结算产品，到银行账户）
	 */
	@ApiModelProperty(value = "进件商户业务角色")
		private String businessRole;
	/**
	* 商户签约类型,INDIVIDUAL(个体工商户)：一般为个体户、个体工商户、个体经营。ENTERPRISE(企业)：一般为有限公司、有限责任公司。INSTITUTION(事业单位)：包括国内各级、各类政府机构、事业单位等（如：公安、党 团、司法、交通、旅游、工商税务、市政、医疗、教育、学校等机构）。COMMUNITY(社会团体)
	*/
		@NotNull
		@ApiModelProperty(value = "商户签约类型,INDIVIDUAL(个体工商户)：一般为个体户、个体工商户、个体经营。ENTERPRISE(企业)：一般为有限公司、有限责任公司。INSTITUTION(事业单位)：包括国内各级、各类政府机构、事业单位等（如：公安、党 团、司法、交通、旅游、工商税务、市政、医疗、教育、学校等机构）。COMMUNITY(社会团体)")
		private String signType;
	/**
	* 商户证件编号,统一社会信用代码证编号、事业单位法人证书编号、社会团体证书编号等，与商户签约类型匹配。
	*/
		@NotNull
		@ApiModelProperty(value = "商户证件编号,统一社会信用代码证编号、事业单位法人证书编号、社会团体证书编号等，与商户签约类型匹配。")
		private String licenceNo;
	/**
	* 商户证件照片,上传图片前需调用文件上传接口将文件上传至易宝服务器。（请提供证件副本）
	*/
		@ApiModelProperty(value = "商户证件照片,上传图片前需调用文件上传接口将文件上传至易宝服务器。（请提供证件副本）")
		private String licenceUrl;
	/**
	 * 商户证件照片,上传图片前需调用文件上传接口将文件上传至易宝服务器。（请提供证件副本）
	 */
	@ApiModelProperty(value = "手持营业执照在经营场所的照片")
	private String handLicenceUrl;
	/**
	* 商户签约名称,与商户证件主体名称一致。
	*/
		@ApiModelProperty(value = "商户签约名称,与商户证件主体名称一致。")
		private String signName;
	/**
	* 商户简称，将在收银台页面或者支付完成页向买家展示。
	*/
		@NotNull
		@ApiModelProperty(value = "商户简称，将在收银台页面或者支付完成页向买家展示。")
		private String shortName;
	/**
	* 商户实际经营地所在省,要求按照商户实际经营地址选择对应的省编号
	*/
		@NotNull
		@ApiModelProperty(value = "商户实际经营地所在省,要求按照商户实际经营地址选择对应的省编号")
		private String province;
	/**
	* 商户实际经营地所在市,要求按照商户实际经营地址选择对应的市编号
	*/
		@NotNull
		@ApiModelProperty(value = "商户实际经营地所在市,要求按照商户实际经营地址选择对应的市编号")
		private String city;
	/**
	* 商户实际经营地所在区,要求按照商户实际经营地址选择对应的市编号
	*/
		@NotNull
		@ApiModelProperty(value = "商户实际经营地所在区,要求按照商户实际经营地址选择对应的市编号")
		private String district;
	/**
	* 不需要再次上送省市区。
	*/
		@NotNull
		@ApiModelProperty(value = "不需要再次上送省市区。")
		private String address;
	/**
	* 开户许可证编号,开户许可证编号和开户许可证照片需要同时上传，如无开户许可证编号，可传基本存款账户编号。
	*/
		@NotNull
		@ApiModelProperty(value = "开户许可证编号,开户许可证编号和开户许可证照片需要同时上传，如无开户许可证编号，可传基本存款账户编号。")
	private String openAccountLicenceNo;
	/**
	* 开户许可证照片,为增加商户入网审核通过率，请上传开户许可证；如无开户许可证，请上传基本存款账户信息表照片。上传图片前需调用文件上传接口将文件上传至易宝服务器。
	*/
		@ApiModelProperty(value = "开户许可证照片,为增加商户入网审核通过率，请上传开户许可证；如无开户许可证，请上传基本存款账户信息表照片。上传图片前需调用文件上传接口将文件上传至易宝服务器。")
		private String openAccountLicenceUrl;

	/**
	 * 100 入网资料完善中
	 * 101 入网审核中
	 * 200 入网成功
	 * 400 入网失败
	 */
	@ApiModelProperty(value = "入网状态")
	private Integer registerStatus;

	/**
	 * 协议签署地址
	 */
	@ApiModelProperty(value = "协议签署地址")
	private String agreementSignUrl;

	/**
	 * 进件审核意见
	 */
	@ApiModelProperty(value = "进件审核意见")
	private String auditOpinion;

	/**
	 * 付款业务协议图片/附件
	 */
	@ApiModelProperty(value = "付款业务协议图片/附件")
	private String agreementPhotoUrl;

	/**
	 * 付款业务系统截图/附件
	 */
	@ApiModelProperty(value = "付款业务系统截图/附件")
	private String systemScreenshotUrl;

	/**
	 * 特批开通流程/截图
	 */
	@ApiModelProperty(value = "特批开通流程/截图")
	private String specialPermitProcessUrl;

	/**
	 * 第三方商户证件URL
	 */
	@TableField(exist = false)
	private String thirdLicenceUrl;

	/**
	 * 第三方商户手持照片URL
	 */
	@TableField(exist = false)
	private String thirdHandLicenceUrl;

	/**
	 * 第三方商户开户照片URL
	 */
	@TableField(exist = false)
	private String thirdOpenAccountLicenceUrl;

	public String toBusinessInfoString(){
		return "{" +
				"\"signType\":" + "\"" + signType + '\"' +
				", \"licenceNo\":" + "\""+ licenceNo + '\"' +
				", \"licenceUrl\":" + "\"" +thirdLicenceUrl + '\"' +
				", \"handLicenceUrl\":" + "\"" +thirdHandLicenceUrl + '\"' +
				", \"signName\":" + "\"" +signName + '\"' +
				", \"shortName\":" + "\"" +shortName + '\"' +
				", \"openAccountLicenceNo\":" + "\"" +openAccountLicenceNo + '\"' +
				", \"openAccountLicenceUrl\":" + "\"" +thirdOpenAccountLicenceUrl + '\"' +
				'}';
	}

	public String toBusinessAddressInfo(){
		return "{" +
				"\"province\":" + "\""+ province + '\"' +
				", \"city\":" + "\""+ city + '\"' +
				", \"district\":" + "\""+ district + '\"' +
				", \"address\":" + "\""+ address + '\"' +
				'}';
	}

}
