package com.czg.third.wechat.dto.req.entry.business;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 登记证书
 * @author yjjie
 * @date 2025/12/26 15:07
 */
@Data
@Accessors(chain = true)
public class WechatEntryCertificateReqDto {

    /**
     * 【必填】
     * 登记证书照片
     * 1、照片应正面拍摄、清晰、四角完整、无反光或遮挡；不得翻拍、截图、镜像、PS；
     * 2、上传彩色照片、彩色扫描件，复印件需加盖公章鲜章；
     * 3、水印仅限于微信支付业务相关；
     * 4、指引与示例可参考【指引文档】；
     * 5、请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "cert_copy")
    private String certCopy;

    /**
     * 【必填】
     * 登记证书类型
     * 1、主体为“政府机关/事业单位/社会组织”时，请上传登记证书类型；
     * 2、主体为“个体工商户/企业”时，不填；
     * 当主体为事业单位时，选择此枚举值：
     * CERTIFICATE_TYPE_2388：事业单位法人证书
     * 当主体为政府机关，选择此枚举值：
     * CERTIFICATE_TYPE_2389：统一社会信用代码证书
     * 当主体为社会组织，选择以下枚举值之一：
     * CERTIFICATE_TYPE_2389：统一社会信用代码证书
     * CERTIFICATE_TYPE_2394：社会团体法人登记证书
     * CERTIFICATE_TYPE_2395：民办非企业单位登记证书
     * CERTIFICATE_TYPE_2396：基金会法人登记证书
     * CERTIFICATE_TYPE_2520：执业许可证/执业证
     * CERTIFICATE_TYPE_2521：基层群众性自治组织特别法人统一社会信用代码证
     * CERTIFICATE_TYPE_2522：农村集体经济组织登记证
     * CERTIFICATE_TYPE_2399：宗教活动场所登记证
     * CERTIFICATE_TYPE_2400：政府部门下发的其他有效证明文件
     */
    @JSONField(name = "cert_type")
    private String certType;

    /**
     * 【必填】
     * 证书号  请输入与所选证书类型相匹配且符合国家标准规范的证书号，其中除政府证明文件外，需满足18位阿拉伯数字或大写英文字母（不得包含英文字母I/O/Z/S/V）
     */
    @JSONField(name = "cert_number")
    private String certNumber;

    /**
     * 【必填】
     * 商户名称   请填写登记证书上的商户名称
     * 1、长度为2-128个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含数字、特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符；
     * 5、仅支持utf-8格式。
     */
    @JSONField(name = "merchant_name")
    private String merchantName;

    /**
     * 【必填】
     * 注册地址  请填写登记证书的注册地址
     * 1、长度为4-128个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含数字、特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符；
     * 5、仅支持utf-8格式。
     */
    @JSONField(name = "company_address")
    private String companyAddress;

    /**
     * 【必填】
     * 法定代表人 请填写登记证书上的法定代表人姓名
     * 1、长度为2-100个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符。
     */
    @JSONField(name = "legal_person")
    private String legalPerson;

    /**
     * 【选填】
     * 有效期限开始日期  建议填写营业执照的有效期限开始时间，若该字段未填写，系统将会查询国家工商信息填入。需注意若工商信息查询不到，则会被审核驳回。
     * 1、日期格式应满足合法的YYYY-MM-DD格式；
     * 2、开始时间不能小于1900-01-01；
     * 3、开始时间不能大于等于当前日期。
     */
    @JSONField(name = "period_begin")
    private String periodBegin;

    /**
     * 【选填】
     * 营业期限结束日期  建议填写营业执照的有效期限结束时间，若该字段未填写，系统将会查询国家工商信息填入。需注意若工商信息查询不到，则会被审核驳回。
     * 1、日期格式应满足合法的YYYY-MM-DD格式或长期；
     * 2、结束时间需大于开始时间。
     */
    @JSONField(name = "period_end")
    private String periodEnd;
}
