package com.erp.customer.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 客户联系人实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("customer_contacts")
public class CustomerContact {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 租户ID
     */
    private Long tenantId;
    
    /**
     * 客户ID
     */
    private Long customerId;
    
    /**
     * 客户名称（冗余）
     */
    private String customerName;
    
    /**
     * 联系人姓名
     */
    private String contactName;
    
    /**
     * 性别：MALE/FEMALE/UNKNOWN
     */
    private String gender;
    
    /**
     * 部门
     */
    private String department;
    
    /**
     * 职位
     */
    private String position;
    
    /**
     * 手机号码
     */
    private String mobile;
    
    /**
     * 办公电话
     */
    private String officePhone;
    
    /**
     * 私人电话
     */
    private String privatePhone;
    
    /**
     * 电子邮箱
     */
    private String email;
    
    /**
     * 备用邮箱
     */
    private String backupEmail;
    
    /**
     * 微信
     */
    private String wechat;
    
    /**
     * QQ
     */
    private String qq;
    
    /**
     * 其他社交账号
     */
    private String otherSocial;
    
    /**
     * 生日
     */
    private String birthday;
    
    /**
     * 结婚纪念日
     */
    private String anniversary;
    
    /**
     * 兴趣爱好
     */
    private String hobbies;
    
    /**
     * 联系人类型：PRIMARY/SECONDARY/BUSINESS/TECHNICAL/FINANCIAL
     * PRIMARY - 主要联系人
     * SECONDARY - 次要联系人
     * BUSINESS - 业务联系人
     * TECHNICAL - 技术联系人
     * FINANCIAL - 财务联系人
     */
    private String contactType;
    
    /**
     * 是否默认联系人
     */
    private Boolean isPrimary;
    
    /**
     * 决策影响力：HIGH/MEDIUM/LOW
     */
    private String influenceLevel;
    
    /**
     * 客户评价
     */
    private String customerFeedback;
    
    /**
     * 备注
     */
    private String remark;
    
    // ==================== 时间戳字段 ====================
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
    
    /**
     * 删除时间
     */
    @TableLogic
    private LocalDateTime deletedAt;
    
    /**
     * 创建人ID
     */
    private Long creatorId;
    
    // ==================== 辅助方法 ====================
    
    /**
     * 判断是否为主要联系人
     */
    public boolean isPrimary() {
        return Boolean.TRUE.equals(isPrimary);
    }
    
    /**
     * 判断是否有决策影响力
     */
    public boolean hasHighInfluence() {
        return "HIGH".equalsIgnoreCase(influenceLevel);
    }
}
