package com.linkwechat.wecom.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.linkwechat.common.annotation.Excel;
import com.linkwechat.common.core.domain.BaseEntity;
import com.linkwechat.wecom.domain.vo.customer.WeFlowerCustomerRelVo;
import com.linkwechat.wecom.domain.vo.tag.WeTagVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

/**
 * 企业微信客户对象 we_customer
 *
 * @author ruoyi
 * @date 2020-09-13
 */
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@TableName("we_customer")
public class WeCustomer extends BaseEntity {
    private static final long serialVersionUID = 1L;


    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    @TableField("id")
    private Long id;

    @ApiModelProperty(value = "企业id")
    @TableField("corp_id")
    private String corpId;

    /**
     * 外部联系人的userid
     */
    @NotBlank(message = "外部联系人的id不可为空")
    @ApiModelProperty("外部联系人的userid")
    @TableField("external_userid")
    private String externalUserid;

    /**
     * 外部联系人名称
     */
    @Excel(name = "客户")
    @ApiModelProperty("外部联系人名称")
    @TableField("name")
    private String name;

    /**
     * 外部联系人头像
     */
    @ApiModelProperty("外部联系人头像")
    @TableField("avatar")
    private String avatar;

    /**
     * 外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户
     */
    @ApiModelProperty("外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户")
    @Excel(name = "客户类型", readConverterExp = "1=微信,2=企业微信")
    @TableField("type")
    private Integer type;

    /**
     * 外部联系人性别 0-未知 1-男性 2-女性
     */
    @ApiModelProperty("外部联系人性别 0-未知 1-男性 2-女性")
    @Excel(name = "性别", readConverterExp = "0=未知,1=男性,2=女性")
    @TableField("gender")
    private Integer gender;

    /**
     * 外部联系人在微信开放平台的唯一身份标识,通过此字段企业可将外部联系人与公众号/小程序用户关联起来。
     */
    @ApiModelProperty("外部联系人在微信开放平台的唯一身份标识,通过此字段企业可将外部联系人与公众号/小程序用户关联起来")
    @TableField("unionid")
    private String unionid;

    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @ApiModelProperty("生日")
    @TableField("birthday")
    private Date birthday;


    /**
     * 客户企业简称
     */
    @ApiModelProperty("客户企业简称")
    @Excel(name = "公司名称")
    @TableField("corp_name")
    private String corpName;

    /**
     * 客户企业全称
     */
    @ApiModelProperty("客户企业全称")
    @TableField("corp_full_name")
    private String corpFullName;

    /**
     * 职位
     */
    @ApiModelProperty("职位")
    @TableField("position")
    private String position;

    /**
     * 是否开启会话存档 0：关闭 1：开启
     */
    @ApiModelProperty("是否开启会话存档 0：关闭 1：开启")
    @TableField("is_open_chat")
    private Integer isOpenChat;

    @ApiModelProperty("状态（0正常 1删除）")
    @TableField(value = "status")
    private Integer status;

    /**
     * 添加人员
     */
    @ApiModelProperty("客户成员关联关系")
    @TableField(exist = false)
    private List<WeFlowerCustomerRelVo> weFlowerCustomerRels;

    /**
     * 客户标签
     */
    /** 微信用户添加的标签 */
    @ApiModelProperty("客户标签")
    @TableField(exist = false)
    private List<WeTagVo>  weTags;

    /**
     * 添加人id
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "客户标签",hidden = true)
    private String userIds;

    /**
     * 标签
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "客户标签",hidden = true)
    private String tagIds;


    /**
     * 部门
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "客户标签",hidden = true)
    private String departmentIds;

    /**
     * 添加人名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "添加人名称")
    private String userName;

    /**
     * 员工id
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "客户标签",hidden = true)
    private String userId;

}
