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

import cn.hanghui.outapi.platform.common.entity.po.Base;
import cn.hanghui.outapi.platform.tenant.entity.dto.ManualInIdCardAuthDto;
import cn.hanghui.outapi.platform.tenant.typehandle.ManualInIdCardAuthHandler;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;

import java.time.LocalDate;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;

/**
 * <p>
 * iot设备配置
 * </p>
 *
 * @author wxg
 * @since 2023-12-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "iot_device_config",autoResultMap = true)
@ApiModel(value="IotDeviceConfig对象", description="iot设备配置")
public class IotDeviceConfig extends Base {

    @ApiModelProperty(value = "设备编号")
    @TableField("sn")
    private String sn;

    @ApiModelProperty(value = "购买方公司id")
    @TableField("purchaser_id")
    private Long purchaserId;

    @ApiModelProperty(value = "应用类型id")
    @TableField("application_type_id")
    private Long applicationTypeId;

    @ApiModelProperty(value = "设备型号(硬件)id")
    @TableField("device_model_hardware_id")
    private Long deviceModelHardwareId;

    @ApiModelProperty(value = "设备型号(环境)id")
    @TableField("device_model_environment_id")
    private Long deviceModelEnvironmentId;

    @ApiModelProperty(value = "系统类型 1-蚂蚁OS 2-非蚂蚁OS")
    @TableField("system_type_code")
    private Integer systemTypeCode;

    @ApiModelProperty(value = "ampe平台名id")
    @TableField("ampe_id")
    private Long ampeId;

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

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

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

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

    @ApiModelProperty(value = "启用支付宝刷脸功能 false-不启用 true-启用(默认)")
    @TableField("use_alipay_face")
    private Boolean useAlipayFace;

    @ApiModelProperty(value = "启用身份证功能 false-不启用 true-启用(默认)")
    @TableField("use_idcard")
    private Boolean useIdcard;

    @ApiModelProperty(value = "身份证阅读器模式 1-在线身份证(默认) 2-离线身份证")
    @TableField("id_number_reader_type")
    private Integer idNumberReaderType;

    @ApiModelProperty(value = "启用二维码功能 false-不启用 true-启用(默认)")
    @TableField("use_qrcode")
    private Boolean useQrcode;

    @ApiModelProperty(value = "设备状态推送地址")
    @TableField("heart_tracking_url")
    private String heartTrackingUrl;

    @ApiModelProperty(value = "设备管理员密码")
    @TableField("mpassword")
    private String mpassword;

    @ApiModelProperty(value = "隐藏底部导航栏 false-不启用(默认) true-启用")
    @TableField("hide_navigation_bar")
    private Boolean hideNavigationBar;

    @ApiModelProperty(value = "禁止下拉通知栏 false-不启用(默认) true-启用")
    @TableField("forbid_pull_down")
    private Boolean forbidPullDown;

    @ApiModelProperty(value = "应用是否自启动 false-不启用(默认) true-启用")
    @TableField("auto_launch")
    private Boolean autoLaunch;

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

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

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

    @ApiModelProperty(value = "预览角度")
    @TableField("display_angle")
    private Integer displayAngle;

    @ApiModelProperty(value = "送算法的图像角度")
    @TableField("algorithm_angle")
    private Integer algorithmAngle;

    @ApiModelProperty(value = "用于ir摄像头算法角度")
    @TableField("sup_algorithm_angle")
    private Integer supAlgorithmAngle;

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

    @ApiModelProperty(value = "送算法图像是否镜像 false-不启用(默认) true-启用")
    @TableField("is_mirror")
    private Boolean isMirror;

    @ApiModelProperty(value = "iot平台的产品productId")
    @TableField("product_id")
    private String productId;

    @ApiModelProperty(value = "iot平台关联设备的设备编号")
    @TableField("device_id")
    private String deviceId;

    @ApiModelProperty(value = "启动的小程序AppId, 需要在iot平台，在移动应用管理中绑定该小程序AppId")
    @TableField("app_id")
    private String appId;

    @ApiModelProperty(value = "开放平台的移动应用AppId")
    @TableField("host_app_id")
    private String hostAppId;

    @ApiModelProperty(value = "应用名称")
    @TableField("app_name")
    private String appName;

    @ApiModelProperty(value = "设备是否授权 false-未授权(默认) true-已授权")
    @TableField("status")
    private Boolean status;



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

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

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

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

    @ApiModelProperty(value = "开启手动输入证件号的密钥信息")
    @TableField(value = "manual_in_id_card_auth",typeHandler = ManualInIdCardAuthHandler.class)
    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")
    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;

}
