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

import com.alibaba.fastjson2.annotation.JSONField;
import com.czg.third.wechat.dto.req.entry.business.*;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 进件 主体资料
 * @author yjjie
 * @date 2025/12/26 13:40
 */
@Data
@Accessors(chain = true)
public class WechatEntrySubjectReqDto {

    /**
     * 【必填】
     * 主体类型  主体类型需与营业执照/登记证书上一致，可参考选择主体指引。<a href="https://kf.qq.com/faq/180910IBZVnQ180910naQ77b.html">...</a>
     * 可选取值
     * SUBJECT_TYPE_INDIVIDUAL: （个体户）营业执照上的主体类型一般为个体户、个体工商户、个体经营
     * SUBJECT_TYPE_ENTERPRISE: （企业）营业执照上的主体类型一般为有限公司、有限责任公司
     * SUBJECT_TYPE_GOVERNMENT:  （政府机关）包括各级、各类政府机关，如机关党委、税务、民政、人社、工商、商务、市监等
     * SUBJECT_TYPE_INSTITUTIONS: （事业单位）包括国内各类事业单位，如：医疗、教育、学校等单位
     * SUBJECT_TYPE_OTHERS:（社会组织） 包括社会团体、民办非企业、基金会、基层群众性自治组织、农村集体经济组织等组织
     */
    @JSONField(name = "subject_type")
    private String subjectType;

    /**
     * 【选填】
     * 是否是金融机构
     * 【是否是金融机构】 【选填】，请根据申请主体的实际情况填写，可参考选择金融机构指引：
     * 1、若商户主体是金融机构，则填写：true；
     * 2、若商户主体不是金融机构，则填写：false。
     * 若未传入将默认填写：false。
     */
    @JSONField(name = "finance_institution")
    private Boolean financeInstitution;

    /**
     * 【必填】
     * 营业执照  当前不允许小微注册，所以【必填】
     * 1、主体为个体户/企业，【必填】；
     * 2、请上传“营业执照”，需年检章齐全，当年注册除外；
     */
    @JSONField(name = "business_license_info")
    private WechatEntryLicenseReqDto businessLicenseInfo;

    /**
     * 【选填】
     * 登记证书   主体为政府机关/事业单位/其他组织时，【必填】。
     */
    @JSONField(name = "certificate_info")
    private WechatEntryCertificateReqDto certificateInfo;

    /**
     * 【选填】
     * 单位证明函照片
     * 1、主体类型为政府机关、事业单位选传：
     *   （1）若上传，则审核通过后即可签约，无需汇款验证；
     *   （2）若未上传，则审核通过后，需汇款验证。
     * 2、主体为个体户、企业、其他组织等，不需要上传本字段；
     * 3、请参照示例图打印单位证明函，全部信息需打印，不支持手写商户信息，并加盖公章； <a href="https://kf.qq.com/faq/200114u2y2yQ200114uEz26z.html">...</a>
     * 4、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "certificate_letter_copy")
    private String certificateLetterCopy;

    /**
     * 【选填】
     * 金融机构许可证信息 当主体是金融机构时，【必填】。
     */
    @JSONField(name = "finance_institution_info")
    private WechatEntryFinanceInstitutionReqDto financeInstitutionInfo;

    /**
     * 【必填】
     * 经营者/法定代表人身份证件
     * 1、个体户：请上传经营者的身份证件；
     * 2、企业/社会组织：请上传法定代表人的身份证件；
     * 3、政府机关/事业单位：请上传法定代表人/经办人的身份证件。
     */
    @JSONField(name = "identity_info")
    private WechatEntryIdentityReqDto identityInfo;

    /**
     * 【选填】
     * 最终受益人信息列表(UBO)
     * 1、主体类型个体户/社会组织/政府机关/事业单位时，无需填写
     * 2、主体类型为企业时，按照下述要求填写
     * 1）若经营者/法定代表人不是最终受益所有人，则需提填写受益所有人信息，最多上传4个。
     * 2）若经营者/法定代表人是最终受益所有人之一，可在此填写其他受益所有人信息，最多上传3个。
     * 根据国家相关法律法规，需要提供公司受益所有人信息，受益所有人需符合至少以下条件之一：
     * ▪️直接或者间接拥有超过25%公司股权或者表决权的自然人。
     * ▪️通过人事、财务等其他方式对公司进行控制的自然人。
     * ▪️公司的高级管理人员，包括公司的经理、副经理、财务负责人、上市公司董事会秘书和公司章程规定的其他人员。
     */
    @JSONField(name = "ubo_info_list")
    private List<WechatEntryUboInfoReqDto> uboInfoList;
}
