package com.yc.ship.module.trade.service.contract.bo;


import com.yc.ship.module.trade.api.contract.dto.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * @author qsl
 * @description todo
 * @date 2025/3/20 16:49
 */
@Data
@Schema(description = "合同平台申请合同签约社信息")
public class ContractApplyReqBO {
    @Schema(description = "旅行社自定义合同编号")
    private String ERPContractId;

    @Schema(description = "签署人认证方式 默认为1" +
            "1：系统对游客签约主体进行人脸识别，以完成实名认证" +
            "0：旅行社自行核对游客签约主体的实名身份信息" +
            "（未提供承诺函及相关资料的只能用方式1进行认证）")
    private String authType ;

    @Schema(description = "合同模板id, 每份合同必须有," +
            "唱游提供（A00001 – 境内游，C00001 – 出境游，D00001 – 一日游，F00001 – 赴台游，E00001 – 代订代办）", example = "true")
    private String templateId;

    @Schema(description = "全国统一合同编号,如果已经获取请填写，否则请留空")
    private String contractNumber;

    @Schema(description = "接收回调链接")
    private String callbackURL;

    @Schema(description = "签约社信息", example = "true")
    private TravelAgency travelAgency;

    @Schema(description = "行程模式 （0 标准，1 简易）")
    private Integer inputType;

    @Schema(description = "行程信息", example = "true")
    private Itinerary itinerary;

    @Schema(description = "游客信息", example = "true")
    private TouristsInfo touristsInfo;

    @Schema(description = "签署人信息，如果签署人不是游客之一或签署人是企业，以下信息必填，多人签署必填", example = "true")
    private Signatory signatory;

    @Schema(description = "导游列表")
    private List<TourGuides> tourGuides;

    @Schema(description = "费用信息", example = "true")
    private Cost cost;

    @Schema(description = "保险信息（国内游必填）", example = "true")
    private Insurance insurance;

    @Schema(description = "争议解决信息", example = "true")
    private Dispute dispute;

    @Schema(description = "是否含购", example = "true")
    private Boolean hasShopping;

    @Schema(description = "含购物点名称", example = "true")
    private String shoppingViewSpot;

    @Schema(description = "是否多人签署")
    private Boolean isMultiSignatory;

    @Schema(description = "其他约定内容")
    private String supplementaryClause;

    @Schema(description = "自费项目信息 （如果合同中有此项目，则必须填写。如果合同中无此项目，则填写空数组。）")
    private List<Activity> activities;

    @Schema(description = "购物信息（国内游必填）", example = "true")
    private List<Shopping> shoppings;

    @Schema(description = "成团约定信息", example = "true")
    private GroupAgreement groupAgreement;
}
