package cn.hanghui.outapi.platform.tenant.entity.dto.ampe;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

@Data
public class HhFaceDeviceDto {

    //公共参数
    private Long id;
    @ApiModelProperty(value = "商户id tenantId")
    private Long tenantId;
    @ApiModelProperty(value = "用户库id")
    private Long userLibId;
    @ApiModelProperty(value = "采集页倒计时时间 5s-100s 默认值30s")
    @Min(value = 5, message = "请输入5-100的数字")
    @Max(value = 100, message = "请输入5-100的数字")
    private Integer collectCountdownTime = 30;
    @ApiModelProperty(value = "识别超时时间 3s-15s 默认值5s")
    @Min(value = 3, message = "请输入3-15的数字")
    @Max(value = 15, message = "请输入3-15的数字")
    private Integer identifyTimeout = 5;
    @ApiModelProperty(value = "是否语音播报 默认值true")
    private Boolean voicePlaySwitch = Boolean.TRUE;
    @ApiModelProperty(value = "是否显示人脸跟随框 默认值true")
    private Boolean faceFollowBoxSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "进场检测最大距离 500mm-1200mm 默认750")
    @Min(value = 500, message = "请输入500-1200的数字")
    @Max(value = 1200, message = "请输入500-1200的数字")
    private Integer entryDetectionMaxDistance = 750;
    @ApiModelProperty(value = "识别态最大检测距离 500mm-1200mm 默认750")
    @Min(value = 500, message = "请输入500-1200的数字")
    @Max(value = 1200, message = "请输入500-1200的数字")
    private Integer identifyDetectionMaxDistance = 750;
    @ApiModelProperty(value = "识别态最大识别距离 500mm-1200mm 默认750")
    @Min(value = 500, message = "请输入500-1200的数字")
    @Max(value = 1200, message = "请输入500-1200的数字")
    private Integer identifyMaxDistance = 750;
    @ApiModelProperty(value = "是否开启墨镜识别的文案提示 默认值false")
    private Boolean sunglassesIdentifyTipsSwitch = Boolean.FALSE;
    @ApiModelProperty(value = "是否开启帽子识别的文案提示 默认值false")
    private Boolean hatIdentifyTipsSwitch = Boolean.FALSE;
    @ApiModelProperty(value = "是否开启刘海识别的文案提示 默认值false")
    private Boolean bangsIdentifyTipsSwitch = Boolean.FALSE;
    @ApiModelProperty(value = "是否开启口罩识别的文案提示 默认值false")
    private Boolean maskIdentifyTipsSwitch = Boolean.FALSE;
    @ApiModelProperty(value = "刷证/码延时(毫秒)： x/ms")
    private Integer openDelayTime;
    @ApiModelProperty(value = "是否启用核验接口 默认：false")
    private Boolean useLinkage = Boolean.FALSE;
    @ApiModelProperty(value = "联动平台地址")
    private String linkageAds;
    @ApiModelProperty(value = "核验接口数据是否加解密 默认true")
    private Boolean checkVerifyEncryptSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "核验接口数据是否加解密appKey")
    private String checkVerifyEncryptAppKey;
    @ApiModelProperty(value = "核验接口数据是否加解密appSecrete")
    private String checkVerifyEncryptAppSecret;
    @ApiModelProperty(value = "核验接口数据是否加解密PrivateKey")
    private String checkVerifyEncryptPrivateKey;
    @ApiModelProperty(value = "核验接口失败重试次数 默认-1")
    private Integer checkVerifyRetryTimes = 1;
    @ApiModelProperty(value = "核验接口超时提示语 默认-核验接口超时")
    private String checkVerifyTimeoutTips = "核验接口超时";
    @ApiModelProperty(value = "核验接口失败提示语 默认-核验接口失败")
    private String checkVerifyFailedTips = "核验接口失败";
    @ApiModelProperty(value = "核验接口超时时间：4s")
    private Integer linkTimeout = 4;
    @ApiModelProperty(value = "verify核验接口失败重试次数 默认2")
    private Integer verifyRetryTimes;
    @ApiModelProperty(value = "verify核验接口超时时间：15s")
    private Integer verifyLinkTimeout;
    @ApiModelProperty(value = "启用匿名入库接口 默认false")
    private Boolean authVerifiedFacein = Boolean.FALSE;
    @ApiModelProperty(value = "匿名入库地址")
    private String anonymousInterfaceUrl;
    @ApiModelProperty(value = "匿名入库数据是否加解密 默认true")
    private Boolean anonymousEncryptSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "匿名入库数据是否加解密appKey")
    private String anonymousEncryptAppKey;
    @ApiModelProperty(value = "匿名入库数据是否加解密appSecrete")
    private String anonymousEncryptAppSecret;
    @ApiModelProperty(value = "匿名入库数据是否加解密PrivateKey")
    private String anonymousEncryptPrivateKey;
    @ApiModelProperty(value = "匿名入库接口失败重试次数 默认-2")
    private Integer anonymousRetryTimes = 2;
    @ApiModelProperty(value = "匿名入库接口超时时间：10s")
    private Integer anonymousTimeout = 10;
    @ApiModelProperty(value = "启用商户平台接口 false-关闭 true-开启 默认true")
    private Boolean tenantSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "商户平台数据是否加解密 默认true")
    private Boolean tenantEncryptSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "商户平台数据是否加解密appKey")
    private String tenantEncryptAppKey;
    @ApiModelProperty(value = "商户平台数据是否加解密appSecrete")
    private String tenantEncryptAppSecret;
    @ApiModelProperty(value = "商户平台数据是否加解密PrivateKey")
    private String tenantEncryptPrivateKey;
    @ApiModelProperty(value = "商户平台接口失败重试次数 默认-1")
    private Integer tenantRetryTimes = 1;
    @ApiModelProperty(value = "商户平台接口超时提示语 默认-商户平台请求超时")
    private String tenantTimeoutTips = "商户平台请求超时";
    @ApiModelProperty(value = "商户平台接口失败提示语 默认-商户平台请求失败")
    private String tenantFailedTips = "商户平台请求失败";
    @ApiModelProperty(value = "商户平台接口超时时间：5s")
    private Integer tenantTimeout = 5;
    @ApiModelProperty(value = "启用三要素获取特殊码接口 默认：false-否")
    private Boolean specialCodeSwitch;
    @ApiModelProperty(value = "三要素获取特殊码接口地址")
    private String specialCodeUrl;
    @ApiModelProperty(value = "三要素获取特殊码接口超时时间：5s")
    private Integer specialCodeTimeout;
    @ApiModelProperty(value = "三要素获取特殊码接口超时提示语 默认-三要素获取特殊码接口请求超时")
    private String specialCodeTimeoutTips;
    @ApiModelProperty(value = "三要素获取特殊码接口失败提示语 默认-三要素获取特殊码接口请求失败")
    private String specialCodeFailedTips;
    @ApiModelProperty(value = "特殊码标识（首位/前缀）")
    private String specialCodePrefix;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.ResultPageTemplateEnum
     */
    @ApiModelProperty(value = "结果页模版 1-通用版 2-悬浮版")
    private Integer resultPageTemplate;
    @ApiModelProperty(value = "刷脸失败是否静默显示 false-关闭 true-开启 默认false")
    private Boolean compareSilentDisplay = Boolean.FALSE;
    @ApiModelProperty(value = "刷脸失败静默时长 默认2s")
    private Integer compareSilentDisplayTime = 2;
    @ApiModelProperty(value = "刷脸失败顶部文字 默认：未查询到人脸信息")
    private String compareTopTitle = "未查询到人脸信息";
    @ApiModelProperty(value = "刷脸成功结果页时长 1-10 默认值2")
    @Min(value = 1, message = "请输入1-10的数字")
    @Max(value = 10, message = "请输入1-10的数字")
    private Integer successPageTime = 2;
    @ApiModelProperty(value = "成功语音 默认: 请通行")
    private String sucVoice = "请通行";
    @ApiModelProperty(value = "成功文字 默认: 请通行")
    private String sucText = "请通行";
    @ApiModelProperty(value = "是否根据开门次数决定显示时长 false-关闭 true-开启 默认false")
    private Boolean showDisplayTimeByOpenTimesSwitch = Boolean.FALSE;
    @ApiModelProperty(value = "单次开门时长 默认2")
    private Integer onceOpenDoorTime = 2;
    @ApiModelProperty(value = "刷脸失败结果页时长 1-10 默认值5")
    @Min(value = 1, message = "请输入1-10的数字")
    @Max(value = 10, message = "请输入1-10的数字")
    private Integer failPageTime = 5;
    @ApiModelProperty(value = "刷脸失败文字 默认: 请刷证或刷码")
    private String failText;
    @ApiModelProperty(value = "刷脸失败语音 默认: 请刷证或刷码")
    private String failVoice;
    @ApiModelProperty(value = "默认单选页时长 默认120")
    private Integer singlePageTime = 120;
    @ApiModelProperty(value = "默认多选页时长 默认120")
    private Integer multiPageTime = 120;
    @ApiModelProperty(value = "默认等待页时长 默认120")
    private Integer waitPageTime = 120;
    @ApiModelProperty(value = "1:1比对是否显示提醒页面 默认：true")
    private Boolean oneToOneTipsSwitch = Boolean.TRUE;
    @ApiModelProperty(value = "1:1比对提醒文字 默认：请面向屏幕刷脸")
    private String oneToOneTips = "请面向屏幕刷脸";
    @ApiModelProperty(value = "1:1比对提醒语音")
    private String oneToOneVoice;
    @ApiModelProperty(value = "1:1比对超时时间 默认：15s")
    private Integer oneToOneTimeout = 15;
    @ApiModelProperty(value = "是否显示通行统计 默认false")
    private Boolean showTopBar = Boolean.FALSE;
    @ApiModelProperty(value = "顶部栏左边显示内容")
    private String leftTopBarText;
    @ApiModelProperty(value = "顶部栏右边显示内容")
    private String rightTopBarText;
    @ApiModelProperty(value = "开门信号: 继电器/RS232 default/RS232 默认：default")
    private String useSerialPort;
    @ApiModelProperty(value = "RS232开门信号串口地址")
    private String doorSerialPort;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.RelayOpenModelEnum
     */
    @ApiModelProperty(value = "继电器开门模式 1-开-闭信号 2-开-门磁-闭信息")
    private Integer relayOpenModel;
    @ApiModelProperty(value = "开闭时间间隔（s）")
    private Integer openCloseInterval;
    @ApiModelProperty(value = "信号间间隔（s）")
    private Integer signalInterval;
    @ApiModelProperty(value = "门磁串口地址")
    private String doorSerialPortAddress;
    @ApiModelProperty(value = "门磁超时时间（s）")
    private Integer gateTimeOut;
    @ApiModelProperty(value = "补光灯: 自动 auto 默认:auto")
    private String lightMode;
    @ApiModelProperty(value = "补光灯亮度 0-200")
    private Integer ledBrightness;
    @ApiModelProperty(value = "应用状态推送地址")
    private String heartTrackingUrl;
    @ApiModelProperty(value = "在线日志推送地址")
    private String logPushUrl;
    @ApiModelProperty(value = "进出记录推送地址")
    private String transitPushUrl;
    @ApiModelProperty(value = "是否开启年龄限制")
    private Boolean isOpenAgeLimit;
    @ApiModelProperty(value = "限制区间-开始年龄")
    private Integer limitSectionStart;
    @ApiModelProperty(value = "限制区间-结束年龄")
    private Integer limitSectionEnd;
    @ApiModelProperty(value = "禁止进入文本 默认：未满18岁禁止进入")
    private String ageForbidText;
    @ApiModelProperty(value = "门磁信号推送地址")
    @JsonProperty("GMAddress")
    private String GMAddress;
    @ApiModelProperty(value = "是否推送门磁信号")
    private Boolean isPushGM;
    @ApiModelProperty(value = "门磁信号推送频率")
    @JsonProperty("GMFrequency")
    private Integer GMFrequency;
    @ApiModelProperty(value = "是否推送失败记录")
    private Boolean pushFailedRecordSwitch;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.PushFailedRecordTypeEnum
     */
    @ApiModelProperty(value = "（new）推送失败记录类型 1-年龄不符 2-黑名单 [1,2]")
    private List<Integer> pushFailedRecordType;
    @ApiModelProperty(value = "设备管理员密码")
    private String mpassword;
    @ApiModelProperty(value = "语音音量 0-100 默认值80")
    @Min(value = 0, message = "请输入0-100的数字")
    @Max(value = 100, message = "请输入0-100的数字")
    private Integer volume;
    @ApiModelProperty(value = "隐藏底部导航栏 默认: false")
    private Boolean hideNavigationBar;
    @ApiModelProperty(value = "禁止下拉通知栏 默认: false")
    private Boolean forbidPullDown;
    @ApiModelProperty(value = "首页图片")
    private String homePageUrl;
    @ApiModelProperty(value = "过渡图片")
    private String transitionPageUrl;
    @ApiModelProperty(value = "应用是否自启动")
    private Boolean autoLaunch;
    @ApiModelProperty(value = "是否开启定时重启 true-是 false-否 默认-false")
    private Boolean scheduledRestart;
    @ApiModelProperty(value = "定时重启时间HH:mm:ss")
    private LocalTime scheduledRestartTime;
    @ApiModelProperty(value = "TODO到期日期")
    private LocalDate expirationDate;
    @ApiModelProperty(value = "（new）进出记录滤重时间 默认0 0-120s")
    private Integer inOutFilterRepeatTime;

    @ApiModelProperty(value = "刷脸失败结果页图片配置")
    private String scanFaceFailedPageUrl;

    @ApiModelProperty(value = "启用进出记录推送 默认: true")
    private Boolean transitPushSwitch;
    @ApiModelProperty(value = "进出记录推送数据是否加解密 默认true")
    private Boolean transitPushEncryptSwitch;
    @ApiModelProperty(value = "进出记录推送数据是否加解密appKey")
    private String transitPushEncryptAppKey;
    @ApiModelProperty(value = "进出记录推送数据是否加解密appSecrete")
    private String transitPushEncryptAppSecret;
    @ApiModelProperty(value = "进出记录推送数据是否加解密PrivateKey")
    private String transitPushEncryptPrivateKey;

}
