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 14:59
 */
@Data
@Accessors(chain = true)
public class WechatEntryLicenseReqDto {

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

    /**
     * 【必填】
     * 注册号/统一社会信用代码
     */
    @JSONField(name = "license_number")
    private String licenseNumber;

    /**
     * 【必填】
     * 商户名称
     * 1、长度为2-128个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含数字、特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符；
     * 5、仅支持utf-8格式；
     * 6、个体户证件为以下情况时，按照个体户XXX命名（XXX是营业执照经营人姓名）：营业执照登记名称为空、仅含数字、仅含特殊字符、“无”、“无字号”；
     * 7、个体户不能使用“企业”“公司”或“农民专业合作社”结尾。
     */
    @JSONField(name = "merchant_name")
    private String merchantName;

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

    /**
     * 【选填】
     * 注册地址   建议填写营业执照的注册地址，若该字段未填写，系统将会查询国家工商信息填入。需注意若工商信息查询不到，则会被审核驳回。
     * 1、长度为4-128个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含数字、特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符；
     * 5、仅支持utf-8格式。
     */
    @JSONField(name = "license_address")
    private String licenseAddress;

    /**
     * 【选填】
     * 有效期限开始日期  建议填写营业执照的有效期限开始时间，若该字段未填写，系统将会查询国家工商信息填入。需注意若工商信息查询不到，则会被审核驳回。
     * 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;
}
