package org.springblade.modules.app.common.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.wn.common.datamodel.BaseDTO;
import com.wn.common.datamodel.Long2StringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author fuxinsheng
 * @since 2021-11-05
 */
@Data
@ApiModel(value = "UserDTO", description = "用户信息表")
public class UserDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    /**
     * 手机号
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "id", value = "用户id")
    private Long id;
    /**
     * 手机号
     */
    @ApiModelProperty(name = "phone", value = "手机号")
    private String phone;

    /**
     * 用户密码
     */
    @ApiModelProperty(name = "password", value = "用户密码")
    private String password;

    /**
     * 重复密码
     */
    @ApiModelProperty(name = "confirmPassword", value = "重复密码")
    private String confirmPassword;

    /**
     * 类型 1-屠宰场 2-养殖户 3-司机 4-经纪人 5-代宰户
     */
    @ApiModelProperty(name = "type", value = "类型 1-屠宰场 2-养殖户 3-司机 4-经纪人 5-代宰户")
    private Integer type;

    /**
     * 状态 0-初始 1-启用 -1-禁用
     */
    @ApiModelProperty(name = "state", value = "状态 0-初始 1-启用 -1-禁用")
    private Integer state;

    /**
     * 状态 0-待审批 1-已通过 2-已驳回
     */
    @ApiModelProperty(name = "checkState", value = "状态 0-待审批 1-已通过 2-已驳回")
    private Integer checkState;

    /**
     * 联系人名称
     */
    @ApiModelProperty(name = "businessLinkMan", value = "联系人名称")
    private String businessLinkMan;

    /**
     * 用户名称(姓名/企业名称)
     */
    @ApiModelProperty(name = "userName", value = "用户名称(姓名/企业名称)")
    private String userName;

    /**
     * 省
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "provId", value = "省id")
    private Long provId;

    /**
     * 省名称
     */
    @ApiModelProperty(name = "provName", value = "省名称")
    private String provName;

    /**
     * 市
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "cityId", value = "市id")
    private Long cityId;

    /**
     * 市名称
     */
    @ApiModelProperty(name = "cityName", value = "市名称")
    private String cityName;

    /**
     * 区
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "areaId", value = "区id")
    private Long areaId;

    /**
     * 区名称
     */
    @ApiModelProperty(name = "areaName", value = "区名称")
    private String areaName;

    /**
     * 用户地址
     */
    @ApiModelProperty(name = "address", value = "用户地址")
    private String address;

    /**
     * 行业类型
     */
    @ApiModelProperty(name = "businessIndustryCategrory", value = "行业类型")
    private String businessIndustryCategrory;

    /**
     * 法定代表人
     */
    @ApiModelProperty(name = "businessLegalPerson", value = "法定代表人")
    private String businessLegalPerson;

    /**
     * 注册资金
     */
    @ApiModelProperty(name = "businessRegisterMoney", value = "注册资金")
    private String businessRegisterMoney;

    /**
     * 注册时间
     */
    @ApiModelProperty(name = "businessRegisterDate", value = "注册时间")
    private Date businessRegisterDate;

    /**
     * 营业期限
     */
//    @JsonFormat(locale="zh",pattern="yyyy-MM-ddTHH:mm:ssZ",timezone="GMT+8")
    @ApiModelProperty(name = "businessTerm", value = "营业期限")
    private Date businessTerm;

    /**
     * 营业范围
     */
    @ApiModelProperty(name = "businessScope", value = "营业范围")
    private String businessScope;

    /**
     * 唯一认证编码(身份证/统一社会信用编码)
     */
    @ApiModelProperty(name = "creditCode", value = "唯一认证编码(身份证/统一社会信用编码)")
    private String creditCode;

    /**
     * 营业执照url
     */
    @ApiModelProperty(name = "businessUrl", value = "营业执照url")
    private String businessUrl;

    /**
     * 身份证正面
     */
    @ApiModelProperty(name = "idCardFrontUrl", value = "身份证正面")
    private String idCardFrontUrl;

    /**
     * 身份证背面
     */
    @ApiModelProperty(name = "idCardBehindUrl", value = "身份证背面")
    private String idCardBehindUrl;

    /**
     * 动物防疫条件合格证编码
     */
    @ApiModelProperty(name = "livestockPreventionPassCode", value = "动物防疫条件合格证编码")
    private String livestockPreventionPassCode;

    /**
     * 动物防疫条件合格证
     */
    @ApiModelProperty(name = "livestockPreventionPassUrl", value = "动物防疫条件合格证")
    private String livestockPreventionPassUrl;

    /**
     * 生猪定点屠宰许可证编码
     */
    @ApiModelProperty(name = "livestockSlaughterPermitCode", value = "生猪定点屠宰许可证编码")
    private String livestockSlaughterPermitCode;

    /**
     * 生猪定点屠宰许可证
     */
    @ApiModelProperty(name = "livestockSlaughterPermitUrl", value = "生猪定点屠宰许可证")
    private String livestockSlaughterPermitUrl;

    /**
     * 排污许可证编码
     */
    @ApiModelProperty(name = "pollutantDischargePermitCode", value = "排污许可证编码")
    private String pollutantDischargePermitCode;

    private Integer autoSubmit;

    /**
     * 排污许可证行业类别
     */
    @ApiModelProperty(name = "pollutantDischargePermitIndustry", value = "排污许可证行业类别")
    private String pollutantDischargePermitIndustry;

    /**
     * 排污许可证有效期
     */
    @ApiModelProperty(name = "pollutantDischargePermitDate", value = "排污许可证有效期")
    private Date pollutantDischargePermitDate;

    /**
     * 排污许可证
     */
    @ApiModelProperty(name = "pollutantDischargePermitLicenseUrl", value = "排污许可证")
    private String pollutantDischargePermitLicenseUrl;

    /**
     * 无疫情证明到期日期
     */
    @ApiModelProperty(name = "noEpidemicProofPassDate", value = "无疫情证明到期日期")
    private Date noEpidemicProofPassDate;

    /**
     * 三年无疫情证明
     */
    @ApiModelProperty(name = "noEpidemicProofPassUrl", value = "三年无疫情证明")
    private String noEpidemicProofPassUrl;

    /**
     * 驾驶证编码
     */
    @ApiModelProperty(name = "driverLicenceCode", value = "驾驶证编码")
    private String driverLicenceCode;

    /**
     * 驾驶证
     */
    @ApiModelProperty(name = "driverLicenceUrl", value = "驾驶证")
    private String driverLicenceUrl;

    /**
     * 准驾车型
     */
    @ApiModelProperty(name = "driverCarType", value = "准驾车型")
    private String driverCarType;

    /**
     * 驾驶证发放单位
     */
    @ApiModelProperty(name = "driverIssuing", value = "驾驶证发放单位")
    private String driverIssuing;

    /**
     * 驾驶证初次发放日期
     */
    @ApiModelProperty(name = "driverFirstIssueDate", value = "驾驶证初次发放日期")
    private Date driverFirstIssueDate;

    /**
     * 驾驶证到期日期
     */
    @ApiModelProperty(name = "driverLicenceExpiryDate", value = "驾驶证到期日期")
    private Date driverLicenceExpiryDate;

    /**
     * 行驶证编码
     */
    @ApiModelProperty(name = "vehicleLicenseCode", value = "行驶证编码")
    private String vehicleLicenseCode;

    /**
     * 行驶证
     */
    @ApiModelProperty(name = "vehicleLicenseUrl", value = "行驶证")
    private String vehicleLicenseUrl;

    /**
     * 道路运输许可证编码
     */
    @ApiModelProperty(name = "transportPermitCode", value = "道路运输许可证编码")
    private String transportPermitCode;

    /**
     * 道路运输许可证
     */
    @ApiModelProperty(name = "transportPermitUrl", value = "道路运输许可证")
    private String transportPermitUrl;

    /**
     * 挂靠的屠宰场id
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "slaughterHouseParentId", value = "挂靠的屠宰场id")
    private Long slaughterHouseParentId;

    /**
     * 挂靠的屠宰场名称
     */
    @ApiModelProperty(name = "slaughterHouseParentName", value = "挂靠的屠宰场名称")
    private String slaughterHouseParentName;

    /**
     * 代宰户类型 1-自然人 2-个体户 3-企业主
     */
    @ApiModelProperty(name = "slaughterHouseType", value = "代宰户类型 1-自然人 2-个体户 3-企业主")
    private Integer slaughterHouseType;

    /**
     * 短信验证码
     */
    @ApiModelProperty(name = "smsCode", value = "短信验证码")
    private String smsCode;

    /**
     * 是否登录成功 0-未注册 1-已注册已通过 2-已注册已驳回 3已注册未审核 4已禁用
     */
    @ApiModelProperty(name = "ifLogin", value = "是否登录成功 0-未注册 1-已注册已通过 2-已注册已驳回 3已注册未审核 4已禁用")
    private Integer ifLogin;

    /**
     * 浙牧通ID
     */
    @ApiModelProperty(name = "zmtId", value = "浙牧通ID")
    private Long zmtId;

    /**
     * 浙牧通ID
     */
    @ApiModelProperty(name = "zmtId", value = "浙牧通ID")
    private String zmtName;

    /**
     * 浙牧通ID
     */
    @ApiModelProperty(name = "zmtType", value = "浙牧通调运主体类型 0-无 1 养殖场 2 屠宰场 3 其他调运主体")
    private Integer zmtType;

    /**
     * 浙牧通用户ID
     */
    @ApiModelProperty(name = "zmtUserId", value = "浙牧通用户ID")
    private Long zmtUserId;

    /**
     * 浙牧通用户名
     */
    @ApiModelProperty(name = "zmtUserName", value = "浙牧通用户名")
    private String zmtUserName;

    /**
     * 畜禽养殖代码
     */
    @ApiModelProperty(name = "breedCode", value = "畜禽养殖代码")
    private String breedCode;

    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createdTime", value = "创建时间")
    private Date createdTime;

    /**
     * 绑定关系状态
     */
    @ApiModelProperty(name = "relationState", value = "绑定关系状态 0-待确认 1-已绑定 9-已拒绝")
    private Integer relationState;

    private String token;

    private Integer enterprise;

    private Date idCardDate;


}
