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

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;

/**
 * @author shisl
 * @package cn.hanghui.outapi.platform.tenant.entity.dto
 * @class IotDeviceConfigPageDto
 * @date 2023/12/5 下午1:36
 * @description
 */
@Data
public class IotDeviceConfigDto {

    @ApiModelProperty(value = "容器配置id")
    private Long iotDeviceConfigId;

    @ApiModelProperty(value = "设备编号")
    @NotBlank(message = "请输入设备编号")
    private String sn;

    @ApiModelProperty(value = "购买方公司id")
    @NotNull(message = "请选择购买方公司")
    private Long purchaserId;

    @ApiModelProperty(value = "应用类型id")
    @NotNull(message = "请选择应用类型")
    private Long applicationTypeId;

    @ApiModelProperty(value = "设备型号(硬件)id")
    @NotNull(message = "请选择设备型号(硬件)")
    private Long deviceModelHardwareId;

    @ApiModelProperty(value = "设备型号(环境)id")
    @NotNull(message = "请选择设备型号(环境)")
    private Long deviceModelEnvironmentId;

    @ApiModelProperty(value = "系统类型 1-蚂蚁OS 2-非蚂蚁OS")
    @NotNull(message = "请选择系统类型")
    @Min(value = 1,message = "请选择系统类型")
    @Max(value = 2,message = "请选择系统类型")
    private Integer systemTypeCode;

    @ApiModelProperty(value = "ampe平台名id")
    @NotNull(message = "请选择ampe平台名")
    private Long ampeId;

    @ApiModelProperty(value = "服务商平台id")
    private Long tenantId;

    @ApiModelProperty(value = "用户库id")
    private Long userLibId;

    @ApiModelProperty(value = "场景id")
    private Long sceneId;

    @ApiModelProperty(value = "模式public close elasticity 三个参数分别代表 开放 封闭 弹性")
    private String mode;

    @ApiModelProperty(value = "启用支付宝刷脸功能 false-不启用 true-启用(默认)")
    @NotNull(message = "请选择是否启用支付宝刷脸功能")
    private Boolean useAlipayFace;

    @ApiModelProperty(value = "启用身份证功能 false-不启用 true-启用(默认)")
    @NotNull(message = "请选择是否启用身份证功能")
    private Boolean useIdcard;
    @Deprecated
    @ApiModelProperty(value = "身份证阅读器模式 1-在线身份证(默认) 2-离线身份证")
    private Integer idNumberReaderType;

    @ApiModelProperty(value = "启用二维码功能 false-不启用 true-启用(默认)")
    @NotNull(message = "请选择是否启用二维码功能")
    private Boolean useQrcode;

    @ApiModelProperty(value = "设备状态推送地址")
    @NotBlank(message = "请输入设备状态推送地址")
    private String heartTrackingUrl;

    @ApiModelProperty(value = "设备管理员密码")
    @NotBlank(message = "请输入设备管理员密码")
    private String mpassword;

    @ApiModelProperty(value = "隐藏底部导航栏 false-不启用(默认) true-启用")
    @NotNull(message = "请选择是否隐藏底部导航栏")
    private Boolean hideNavigationBar;

    @ApiModelProperty(value = "禁止下拉通知栏 false-不启用(默认) true-启用")
    @NotNull(message = "请选择是否禁止下拉通知栏")
    private Boolean forbidPullDown;

    @ApiModelProperty(value = "应用是否自启动 false-不启用(默认) true-启用")
    @NotNull(message = "请选择应用是否自启动")
    private Boolean autoLaunch;

    @ApiModelProperty(value = "是否自动进入小程序 false-不启用(默认) true-启用")
    @NotNull(message = "请选择是否自动进入小程序")
    private Boolean automaticEnterApplet;

    @ApiModelProperty(value = "启动页地址")
    private String startPageUrl;

    @ApiModelProperty(value = "首页图片地址")
    private String homePageUrl;

    @ApiModelProperty(value = "预览角度")
    @NotNull(message = "请输入预览角度")
    @Min(value = 0,message = "预览角度最小为0")
    @Max(value = 270,message = "预览角度最大为270")
    private Integer displayAngle;

    @ApiModelProperty(value = "送算法的图像角度")
    @NotNull(message = "请输入送算法的图像角度")
    @Min(value = 0,message = "送算法的图像角度最小为0")
    @Max(value = 270,message = "送算法的图像角度最大为270")
    private Integer algorithmAngle;

    @ApiModelProperty(value = "用于ir摄像头算法角度")
    @NotNull(message = "请输入用于ir摄像头算法角度")
    @Min(value = 0,message = "用于ir摄像头算法角度最小为0")
    @Max(value = 270,message = "用于ir摄像头算法角度最大为270")
    private Integer supAlgorithmAngle;

    @ApiModelProperty(value = "预览图像是否需要镜像 false-不启用(默认) true-启用")
    @NotNull(message = "请选择预览图像是否需要镜像")
    private Boolean isDisplayMirror;

    @ApiModelProperty(value = "送算法图像是否镜像 false-不启用(默认) true-启用")
    @NotNull(message = "请选择送算法图像是否镜像")
    private Boolean isMirror;

    @ApiModelProperty(value = "在线日志推送地址")
    private String logPushUrl;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.CameraTypeEnum
     */
    @ApiModelProperty(value = "摄像头类型 IR-双目  3D-3D结构光 ")
    @NotBlank(message = "请选择摄像头类型")
    private String cameraType;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.CameraBrandEnum
     */
    @ApiModelProperty(value = "品牌 Normal-通用   Mario-马里奥")
    @NotBlank(message = "请选择摄像头品牌")
    private String cameraBrand;

    @ApiModelProperty(value = "是否应用侧获取三要素 false-否 true-是")
    @NotNull(message = "请选择是否应用侧获取三要素")
    private Boolean isAppGetUserInfo;

    @ApiModelProperty(value = "身份证阅读器品牌 IdCardReaderBrandEnum")
    @NotNull(message = "请选择身份证阅读器品牌")
    private Integer idCardReaderBrand;

    @ApiModelProperty(value = "是否开启手动输入证件号 默认false")
    private Boolean manualInIdCard;

    @ApiModelProperty(value = "开启手动输入证件号的密钥信息")
    private ManualInIdCardAuthDto manualInIdCardAuth;

    @ApiModelProperty(value = "是否开启打印机 默认false")
    private Boolean isOpenPrinter;
    /**
     * @see cn.hanghui.outapi.platform.tenant.entity.enums.PrinterConfigEnum
     */
    @ApiModelProperty(value = "HHArome打印机接口配置")
    private Integer printerConfig;

    @ApiModelProperty(value = "到期日期")
    private LocalDate expirationDate;

    @ApiModelProperty(value = "语音音量 0-100 默认值80")
    @Min(value = 0, message = "请输入0-100的数字")
    @Max(value = 100, message = "请输入0-100的数字")
    private Integer volume;

    @ApiModelProperty(value = "小程序入口页面地址")
    private String appletEnterPageUrl;

    @ApiModelProperty(value = "是否开启麦克风 默认false")
    private Boolean isOpenMicrophone;
    /** @see cn.hanghui.outapi.platform.tenant.entity.enums.MicrophoneTypeEnum*/
    @ApiModelProperty(value = "麦克风类型")
    private Integer microphoneType;

}
